• Spring cloud ——EurekaServer


          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/地址。如图上部分

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

            

            页面下部分:

        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

  • 相关阅读:
    【Gamma】 Phylab 展示博客
    【技术博客】Postman接口测试教程
    【技术博客】利用Python将markdown文档转为html文档
    【技术博客】使用PhpStorm和Xdebug实现Laravel工程的远程开发及调试
    【技术博客】Laravel5.1文件上传单元测试
    【技术博客】移动端的点击事件与Sticky Hover问题
    【技术博客】 Laravel 5.1单元测试(PHPUnit)入门
    Scrum Meeting博客目录
    团队事后分析
    Gamma阶段测试报告
  • 原文地址:https://www.cnblogs.com/wreading/p/11808690.html
Copyright © 2020-2023  润新知