一. 服务注册中心、服务提供者、服务消费者 如何通信?
客户端:
应用主类中配置@EnableDiscoveryClient
application.properties中配置defaultZone指定服务中心地址
@EnableDiscoveryClient开启DiscoveryClient实例, DiscoveryClient中的initScheduledTasks()中开启了三个定时任务:
1) 服务注册:向配置中心发送一个REST请求,将客户端元数据发送给配置中心
2)服务获取:根据是否是第一个获取,而发送不同的REST请求
3)服务续约:与服务注册成对出现,也是发送一个REST请求
服务注册中心:
服务注册:校验信息、传播注册事件、将元信息存到一个ConcurrentHahsMap中(双层hashMap)
Eureka 与 Zookeeper:https://blog.csdn.net/Hello_World_QWP/article/details/85247142
二. Ribbon如何实现客户端的负载均衡?
做法:只要在RestTemplate上面加@LoadBalanced就可以啦
如何实现的呢?
当一个被@LoadBalanced注解注释过的RestTemplate对象对外发送请求时,会被LoadBalancerInterceptor类的intercept函数拦截,获取这个请求的服务名,选择某一个实例发送实际的请求