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/
网友评论