Eureka各角色作用:
Eureka注册中心–>接收注册服务请求、同步Eureka节点服务状态、安全保护机制、服务移除。
Eureka消费端:定时拉取可用服务状态并同步本地缓存、同时作为服务者向注册中心注册服务、向注册中心报活、调用服务
Eureka服务端:向注册中心注册服务、报活(续约)。服务下线。
Eurake集群同步是点对点复制
默认20秒一次报活,90秒没收到报活的服务会被剔除。当85%的机器没报活续约时,会触发安全保护机制。这时,注册中心不会再删除服务提供者,会造成一个问题就是:确实有些服务提供者不行了,没有正常移除。
造成该情况符合AP理论,即保存服务的安全和高可用,宁可不杀,不可误杀。
Eurake常用配置:
#注册中心
eureka:
instance:
hostname: sncEurekaServerA #当前eureka实例的主机名
client:
service-url:
#配置客户端所交互的eureka server的地址(集群中每个server其实相对于其他server都是一个client)
defaultZone: http://sncEurekaServerB:8762/eureka
register-with-eureka: true #集群模式下可以改成true,把本身注册,作为同步其他节点的接口
fetch-registry: true #集结群模式下可以改成true
dashboard:
enabled: true #是否开启管理页面
#消费者提供者
eureka:
client:
service-url:
defaultZone: http://sncEurekaServerA:8761/eureka,http://sncEurekaServerB:8762/eureka
instance:
instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}:@project.version@
Eureka底底原理是启动了一个jersey实例。提供一系列的Restful风格接口,如服务注册,续约、拉取服务状态等。供服务消费者和服务提供者调用 。自身通过timer定时任务去做实例间服务同步,服务健康检查等。说白了就是弄些接口和定时任务给服务提供者和消费者操作本身的一个维护有服务ip地址端口号和服务id的一个map.