服务治理-概念&技术选型
服务治理
技术选型
分布式系统CAP定理:(C)一致性,(A)可用性,(P )分区容错性,分布式系统中只能三元二,不能全占,一般CP,AP。
- Eureka
- Consul
- Nacos
Eureka-服务治理全链路
Eureka服务治理组件主要功能为:服务注册、服务发现、心跳和续约、服务下线、剔除和自保
####注册中心配置######
eureka.instance.hostname=localhost
#注册中心不注册到注册中心
eureka.client.register-with-eureka=false
#不从注册中心拉取服务信息
eureka.client.fetch-registry=false
服务注册
Eureka的注册模式为注册中心等服务节点主动上门注册。
服务注册信息有:服务名称、服务节点IP、节点状态。
Eureka采用的是居于客户端的服务发现,调用方从注册中心拉取可用的服务列表然后从中选择一个调用。
#服务注册到注册中心配置
eureka.client.serviceUrl.defaultZone=http://localhost:20000/eureka/
心跳检测
心跳服务是由一个个服务节点主动发起的,告诉注册中心自己的状态。Eureka可以通过心跳来知道服务的可用性。
## 客户端指标
#每隔多久向注册中心发送一个心跳包
eureka.instance.lease-renewal-interval-in-seconds=10
#告诉注册中心X秒后还没有心跳,代表挂掉了
eureka.instance.lease-expiration-duration-in-seconds=20
服务剔除
Eureka的服务剔除功能可以让无心跳的服务自动下线。服务剔除步骤如下:
- 启动定时任务 注册中心在启动时会开启一个后台任务,默认每隔60s触发服务剔除服务。
#可以通过下面配置来修改,修改成30S
eureka.server.eviction-interval-timer-in-ms=30000
- 调用ecivt方法
- 服务自保,如果服务自保开启则会中断服务剔除
- 遍历找出已经过期的服务
- 计算可剔除的服务。(总数*可更新比例)
- 乱序剔除超时服务
服务续约
服务节点会向注册中心发送续约请求。
服务自保
过去一段时间内,服务续约的节点占所有注册节点的比例低于一个限定值(默认85%)时开始服务自保。
#强制关闭服务自保(自动开关不起作用)
eureka.server.enable-self-preservation=false
服务下线
服务节点可以主动向注册中心发起资源释放指令。
注册中心高可用改造(双备份注册中心)
集群+互备
#注册中心集群配置
eureka.client.service-url.defaultZone=http://localhost:20001/eureka