微服务·入门·贰——注册中心nacos、eureka
1. 微服务问题解决·服务治理问题
1.1 问题抛出
问题抛出:假如我们服务提供者user-service部署到多个服务器: ① 在order-service发起远程调用时,如何得到user-service实例的IP和端口? ② 当user-service实例进行了集群搭建,order-service调用时如何选择? ③ order-service如何得知某个user-service实例是否依然健康,其是否发生宕机?
1.2 解决方法
2 Eureka注册中心
2.1 Eureka解决的问题
问题回顾:假如我们服务提供者user-service部署到多个服务器: ① 在order-service发起远程调用时,如何得到user-service实例的IP和端口? ② 当user-service实例进行了集群搭建,order-service调用时如何选择? ③ order-service如何得知某个user-service实例是否依然健康,其是否发生宕机?
2.2 Eureka的结构和作用
2.2.1 Eureka的作用
2.2.2 order-service如何得知user-service实例地址 ?
流程如下: ① 服务注册:user-service启动后,将自己的信息注册到eureka-service(Eureka服务端)。 ② eureka-service保存服务名称与服务实例IP地址的映射关系。 ③ 服务发现、服务拉取:order-service根据服务名称,拉取(user-service)实例地址列表。
2.2.3 order-service如何从多个user-service实例中选择具体实例 ?
流程如下: ① order-service从实例列表中利用负载均衡算法选择一个实例地址。 ② 向该实例地址发起远程调用
2.2.4 order-service如何得知某个user-service实例是否健康 ?是否宕机 ?
流程如下: ① 心跳检测机制(ping - pong):user-service会每隔一段时间(默认30秒)向eureka-service发送请求,报告自己状态。 ② 当超过一定时间没有发送心跳时,eureka-service会认为微服务实例故障,将该服务从服务列表中剔除。 ③ order-service拉取服务时,实现将故障实例排除。