• # 从浅入深 学习 SpringCloud 微服务架构(三)注册中心 Eureka(1)


    从浅入深 学习 SpringCloud 微服务架构(三)注册中心 Eureka(1)

    段子手168

    1、微服务的注册中心

    注册中心可以说是微服务架构中的”通讯录”,它记录了服务和服务地址的映射关系。
    在分布式架构中服务会注册到这里,当服务需要调用其它服务时,就这里找到服务的地址,进行调用。

    在这里插入图片描述

    2、注册中心的主要作用

    服务注册中心(下称注册中心)是微服务架构非常重要的一个组件,在微服务架构里主要起到了协调者的一个作用。注册中心一般包含如下几个功能:

    1)服务发现:

    服务注册/反注册:保存服务提供者和服务调用者信息。
    服务订阅/取消订阅:服务调用者订阅服务提供者的信息,最好有实时推送的功能。
    服务路由(可选):具有筛选整合服务提供者的能力。

    2)服务配置:

    配置订阅:服务提供者和服务调用者订阅微服务相关的配置。
    配置下发:主动将配置推送给服务提供者和服务调用者。

    3)服务健康检测:

    检测服务提供者的健康情况。

    3、常见的注册中心:Zookeeper, Eureka, Consul, Nacos。

    1)Zookeeper

    zookeeper 它是一个分布式服务框架,是 Apache Hadoop 的一个子项目,
    它主要是用来解决分布式应用中经常遇到的一些数据管理问题,
    如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
    简单来说 zookeeper= 文件系统+监听通知机制。

    2)Eureka

    Eureka 是在java语言上,基于 Restful Api 开发的服务注册与发现组件,
    Springcloud Netflix 中的重要组件。

    3)Consul

    Consul 是由 Hashicorp 基于Go 语言开发的支持多数据中心分布式高可用的服务发布和注册服务软件,
    采用 Raft 算法保证服务的一致性,且支持健康检查。

    4)Nacos

    Nacos 是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。
    简单来说 Nacos 就是注册中心+配置中心的组合,提供简单易用的特性集,
    帮助我们解决微服务开发必会涉及到的服务注册与发现,服务配置,服务管理等问题。
    Nacos 还是 Spring Cloud Alibaba 组件之一,负责服务注册与发现。

    4、常见的注册中心:Zookeeper, Eureka, Consul, Nacos 的异同点:

    在这里插入图片描述

    5、注册中心:eureka 概述

    1)Eureka 是 Netflix 开发的服务发现框架,springcloud 将它集成在自己的子项目 spring-cloud-netflix 中,实现 springcloud 的服务发现功能。

    2)Eureka 的基本架构:

    Eureka Server:提供服务注册和发现。
    Service Consumer:服务消费方,从 Eureka 获取注册服务列表,从而能够消费服务。
    Service Provider。服务提供方,将自身服务注册到 Eureka 从而使服务消费方能够找到。

    3)Eureka 的交互流程与原理:

    在这里插入图片描述

    在这里插入图片描述

    6、搭建 EurekaServer 注册中心,使用 Eureka 的步骤:

    1)搭建 EurekaServer

    创建工程,导入依赖坐标,配置 application.yml 文件,配置启动类。
    
    • 1

    2)将服务提供者注册到 EurekaServer

    3)服务消费者通过注册中心获取服务列表,并调用。

    7、在父工程 spring_cloud_demo 下,创建子工程(子模块)

    创建 子工程(子模块)

    --> 右键 spring_cloud_demo 父工程
    --> Modules 
    --> Maven 
    --> Groupld : ( djh.it )
    	Artifactld : ( eureka_service )
    	Version : 1.0-SNAPSHOT
    --> Next 
    --> Module name: ( eureka_service )
    	Content root : ( C:\java-test\idea2019\spring_cloud_demo\eureka_service )
    	Module file location: ( C:\java-test\idea2019\spring_cloud_demo\eureka_service )
    --> Finish
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    7、在子工程 eureka_service 的 pom.xml 中导入依赖

    
    
    
        
            spring_cloud_demo
            djh.it
            1.0-SNAPSHOT
        
        4.0.0
    
        eureka_service
    
        
            
                org.springframework.cloud
                spring-cloud-starter-netflix-eureka-server
            
        
    
    
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    9、创建配置文件 application.yml

    
    ## C:\java-test\idea2019\spring_cloud_demo\eureka_service\src\main\resources\application.yml
    
    server:
      port: 9000  # 启动端口 命令行注入。
    
    eureka: # 配置 eureka_server
      instance:
        hostname: localhost
      client:
        register-with-eureka: false  # 是否将自己注册到注册中心
        fetch-registry: false  # 是否从 Eureka 中获取注册信息
        service-url: # 配置暴露给 EurekaClient 的请求地址
          defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    10、创建 启动类 EurekaServerApplication.java

    
    /**
     *   C:\java-test\idea2019\spring_cloud_demo\eureka_service\src\main\java\djh\it\eureka\EurekaServerApplication.java
     *
     *   2024-4-19  启动类 EurekaServerApplication.java
     */
    package djh.it.eureka;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.boot.autoconfigure.domain.EntityScan;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    
    @SpringBootApplication
    @EnableEurekaServer  //激活 Eureka
    public class EurekaServerApplication {
        public static void main(String[] args) {
            SpringApplication.run(EurekaServerApplication.class, args);
        }
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    11、运行启动类,进行测试

    浏览器地址栏输入:http://localhost:9000 输出界面如下:

    在这里插入图片描述

    上一节学习请点击:
    # 从浅入深 学习 SpringCloud 微服务架构(二)模拟微服务环境(2)通过 RestTemplate 调用远程服务

  • 相关阅读:
    3、Native方法区
    Class常量池与运行时常量池
    python中开发页面的两种方法:Qt Designer(PyQt图形化界面拖拽开发App界面)以及Django(开发Web应用框架)
    【前端-TypeScript】TypeScript学习思维导图-一图看完《TypeScript编程》
    redis笔记
    【LeetCode-简单题】110. 平衡二叉树
    三极管共射放大电路静态工作点怎么设计
    02、Python 字符串
    叶顺舟:手机SoC音频趋势洞察与端侧AI技术探讨 | 演讲嘉宾公布
    nginx优化和防盗链
  • 原文地址:https://blog.csdn.net/qfyh_djh/article/details/137974443