美文网首页
Spring Cloud Eureka -- 服务注册与发现

Spring Cloud Eureka -- 服务注册与发现

作者: saoraozhe3hao | 来源:发表于2018-12-04 09:59 被阅读0次

    Spring Cloud Eureka:封装于Netflix Eureka, [juˈri:kə] ,叹词(找到了)
    功能:服务注册,服务发现,心跳检测
    服务注册与发现的意义:A调用服务B,A只需要知道服务B的服务名,而不需要知道B具体的多个服务实例的IP地址

    概念
    客户端发现:客户端掌握所有目标地址,自己选择请求目标。例如Eureka
    服务端发现:即代理,代理掌握所有目标地址,转发客户端请求。例如Nginx,K8S
    康威定律:组织沟通方式 会影响 系统设计

    服务拆分

    1、按客户端拆分
    2、按用户角色拆分
    3、按功能模块拆分(单一职责,高内聚,松耦合)

    服务拆分方法论
    1、每个服务有单独的数据存储

    Eureka 原理

    角色:Eureka Server(服务注册中心)、Eureka Client
    Eureka Client:Application Service(服务提供者)、Application Client(服务消费者)
    服务注册:Client 向 Server 注册
    服务续约:Client每30秒向Server发一次心跳,进行服务续约
    服务剔除:Server 90秒没收到Client的心跳
    服务下线:Client 主动通知 Server 进行下线
    自我保护模式:当Eureka Server 15分钟内得到的续约率低于85%,不再剔除服务,因为这时很可能是自己出了问题

    Eureka Server 项目构建

    1、借助IDEA,初始化项目
    New Project -> Spring Initializr -> 选择依赖Cloud Discovery.Eureka Server
    2、给主类增加注解 @EnableEurekaServer
    3、application.properties 更名为 application.yml

    server.port: 8761   # Eureka 的默认端口
    spring.application.name: Eureka-Server  # 应用名
    eureka.client.register-with-eureka: false  # 本节点 不去 注册服务
    eureka.client.fetch-registry: false  # 本节点 不 检索服务
    eureka.server.enable-self-preservation: false # 在开发环境关闭自我保护机制,避免服务剔除不及时
    

    4、运行主类 main方法,访问 localhost:8761

    Eureka Client 项目构建

    1、借助IDEA,初始化项目
    New Project -> Spring Initializr -> 选择依赖Cloud Discovery.Eureka Discovery
    检查spring-cloud版本 是否与 Eureka Server 一致
    检查有没有依赖 spring-boot-starter-web

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
    

    2、给主类增加注解 @EnableEurekaClient 或 @EnableDiscoveryClient(还适用于consul、zookeeper注册中心)
    3、application.properties 更名为 application.yml

    server.port: 8080   # 确保该端口没被占用
    spring.application.name: Eureka-Client # 应用名
    eureka.client.service-url.defaultZone: http://localhost:8761/eureka/  # 指定注册中心
    eureka.client.fetch-registry: true # 默认就是 true,即从Eureka Server拉取服务列表(发现服务),从而能被Ribbon组件获取
    eureka.instance.prefer-ip-address: true  # 在Eureka Server展示页面上显示的链接,链接到一个IP,而不是域名
    

    4、到 Eureka 检查是否注册上

    Eureka Server 高可用

    1、Eureka Server两两注册,即一个Eureka Server注册除自己以外的所有Eureka Server,Eureka Server之间会相互同步Client 注册信息
    2、给Client 指定全部注册中心:eureka.client.service-url.defaultZone: http://localhost:8761/eureka/,http://localhost:8762/eureka/

    相关文章

      网友评论

          本文标题:Spring Cloud Eureka -- 服务注册与发现

          本文链接:https://www.haomeiwen.com/subject/abzpcqtx.html