上一篇文章中我们提到了大量的ip及端口号难以维护的问题,这篇文章我们续接上文,来聊聊Eureka和Ribbon的作用
Eureka
1.为什么要用Eureka
服务数量过多,大量的ip,端口等信息难以维护,那么注册中心来帮助我们管理这些微服务,微服务实时上报服务状态,注册中心来统一维护这些服务,一旦离线提出队伍,保证客户端能够获得到可用的服务。
Spring Cloud Eureka 提供 Eureka Server 服务端与 Eureka Client 客户端 ,服务端即是Eureka服务注册中心,客户端完成微服务向Eureka服务的注册与发现。
2.Eureka如何发现微服务不可用
微服务启动并注册后,会定时向注册中心发送心跳消息,默认时间为30s,如果超过90s(默认的)那么就将会提出队伍,因为我们项目运行后比如某一服务突然间网络中断,但是如果90s内恢复,那么服务依旧有效。
3.Eureka server 和Eureka client
Eureka Server 是服务端,负责管理各个微服务注册和发现。
在微服务上添加 Eureka Client 代码,就会访问到 Eureka Server 将此微服务注册在Eureka Server中,从而使服务消费方能够找到。
微服务(服务消费者)需要调用另一个微服务(服务提供者)时,从 Eureka Server 中获取服务调用地址,进行远程调用。
看到这里那么有童鞋可能会问到,如果注册中心服务端挂掉了,项目一样是会崩溃,是的没错,所以我们在建立项目的时候通常都是有至少两个server在运行,当client注册时,同时向两个server发起注册,并且每个server的交互地址填写其他server的地址即可,例:单击版的eureka server 那么地址直接写自己即可,如有A,B两个服务器那么他们的地址互换即可,如果两个以上,地址用逗号拼接。
因为要配置集群环境所以这里就就改下host用来替代下,
Ribbon 客户端负载均衡
1.什么是客户端负载均衡,服务端负载均衡
客户端负载均衡和服务端负载均衡最大的区别在于服务清单所存储的位置。在客户端负载均衡中,每个客户端服务都有一份自己要访问的服务端清单,这些清单统统都是从Eureka服务注册中心获取的。而在服务端负载均衡中,只要负载均衡器维护一份服务端列表 。
聚个栗子:我们去食堂打饭,我们肯定会去眼前看到排队人数最少的队伍中,如果有一位引导员会怎么样呢,引导员帮我们看排队情况,这样即便我们蒙着眼睛也会最快打到饭,这么说来我们眼前看到的排队就是这份服务器清单。
Ribbon配置
1.添加依赖
org.springframework.cloud
spring-cloud-starter-netflix-eureka-client
对你没有看错就是这个包,这是eureka-client的依赖,其实他内部已经依赖了Ribbon的包,所以我们不需要额外引入。
2.在我们的confBean中 给RestTemplate添加@LoadBalance注解
至此Ribbon配置结束,在我们调用restTemplate中的方法调用微服务时,Ribbon将会为我们实现负载均衡,前提你应该至少有两个服务器。(默认访问规则为轮询)
最终测试
可以看到同一地址两次请求结果分别为两个数据库,至此 eureka server 集群以及eureka client搭建完成。Ribbon默认访问规则为轮询,在provider中有两台服务器再同时运行,其中up代表为上线可用服务,down表示离线不可用。
项目案例地址:https://pan.baidu.com/s/19l1gEx44Jaz3XMsEROGUaw
(如果连接失效,欢迎骚扰)