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

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/

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容