欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Spring cloud ——EurekaServer

程序员文章站 2022-05-29 08:33:41
Eureka作为服务注册与发现的组件,Eureka2.0已经闭源了,但是本教程还是以Eureka为核心进行展开。 1、三个模块 Spring Cloud Eureka是Spring Cloud Netflix微服务套件之一,基于Netflix Eureka做了二次封装,主要负责完成微服务架构中的服务 ......

      eureka作为服务注册与发现的组件,eureka2.0已经闭源了,但是本教程还是以eureka为核心进行展开。

1、三个模块

       spring cloud eureka是spring cloud netflix微服务套件之一,基于netflix eureka做了二次封装,主要负责完成微服务架构中的服务治理功能。

       eueka的3个重要模块,eureka-server,service-provider,service-consumer
       eureka-server:服务端,提供服务注册和发现;
       eureka-client-service-provider:服务端,服务提供者,通过http rest告知服务端注册,更新,取消服务;
       eureka-client-service-consumer:客户端,服务消费者,通过http rest从服务端获取需要服务的地址列表,然后配合一些负载均衡策略(ribbon)来调用服务端服务。 

2、eureka-server

        eureka server 的服务注册数据存储层是双层的 concurrenthashmap(线程安全高效的 map 集合)。
        第一层的key=spring.application.name 也就是客户端实例注册的应用名;value 为嵌套的 concurrenthashmap。
        第二层的key=instanceid 也就是服务的唯一实例 id,value 为 lease 对象,lease 对象存储着这个实例的所有注册信息,包括 ip 、端口、属性等。
        申明语句如下:
        private final concurrenthashmap<string, map<string, lease<instanceinfo>>> registry= new concurrenthashmap<string, map<string, lease<instanceinfo>>>();

 

        服务注册表没有持久化到数据库,我想应该是出于性能的考虑吧。毕竟,注册表信息是需要定时获取、更新的。

3、创建服务注册中心——demo

3.1、引入依赖pom.xml

     <dependencies>
          <dependency>
               <groupid>org.springframework.boot</groupid>
               <artifactid>spring-boot-starter-web</artifactid>
         </dependency>
        <dependency>
              <groupid>org.springframework.cloud</groupid>
              <artifactid>spring-cloud-starter-netflix-eureka-server</artifactid>
        </dependency>
        <dependency>
             <groupid>org.springframework.boot</groupid>
             <artifactid>spring-boot-starter-test</artifactid>
            <scope>test</scope>
          </dependency>
     </dependencies>

3.2、eureka server启动代码        

       @springbootapplication
       @enableeurekaserver
       public class eurekaserverapplication {

             public static void main(string[] args) {
                   springapplication.run(eurekaserverapplication.class, args);
            }
       }

       @enableeurekaserver的主要作用是启动eurekaserver运行环境和上下文。

3.3、application配置文件

       application配置文件可以是xml或yml结构,我比较喜欢xml结构,yml是缩进格式,我觉得比较容易写错。

        server.port=8080

        spring.application.name: eureka-server 

        #服务注册中心实例的主机名
       eureka.instance.hostname: localhost

        #表示是否将自己注册在eurekaserver上,默认为true。由于当前应用就是eurekaserver,所以置为false
        eureka.client.register-with-eureka: false

       #表示表示是否从eurekaserver获取注册信息,默认为true。单节点不需要同步其他的eurekaserver节点的数据


       eureka.client.fetch-registry: false       

       #设置eureka的地址
       eureka.client.service-url.defaultzone: http://${eureka.instance.hostname}:${server.port}/eureka/

3.4、查看eureka server

       访问http://localhost:8080/地址。如图上部分

Spring cloud ——EurekaServer

        environment: 环境,默认为test,生产环境建议改下,看着顺眼
        data center: 数据中心,生产环境建议改下
        current time:当前的系统时间
        uptime:已经运行了多少时间
        lease expiration enabled:是否启用租约过期 ,自我保护机制关闭时,该值默认是true, 自我保护机制开启之后为false。
        renews threshold: 每分钟最少续约数,eureka server 期望每分钟收到客户端实例续约的总数。
        renews (last min): 最后一分钟的续约数量(不含当前,1分钟更新一次),eureka server 最后 1 分钟收到客户端实例续约的总数。

        

        页面下部分:

Spring cloud ——EurekaServer

 

 

    total-avail-memory : 总共可用的内存
    environment : 环境名称,默认test 
    num-of-cpus : cpu的个数
    current-memory-usage : 当前已经使用内存的百分比
    server-uptime : 服务启动时间
    registered-replicas : 相邻集群复制节点
   unavailable-replicas :不可用的集群复制节点,   

    available-replicas :可用的相邻集群复制节点

    ipaddr:eureka服务端ip
    status:eureka服务端状态

3.5、源代码链接:https://files-cdn.cnblogs.com/files/wreading/eureka-server.rar