前言:用过springcloud微服务的朋友都知道Eureka,流程如下
既然最终还是通过2个服务之间的调用,那为啥不直接调,非要多此一举先注册eureka,再调用呢?
思考中......
细想之后估计很多朋友(起码70%)都说不出原因来。
如果不使用Eureka,直接A服务调用B服务也可以啊。是的,直接在A服务写http请求,配置ip:端口(硬编码)。
问题来了,如果B服务有集群呢,存在B1,B2,B3…呢,那http配置ip:端口也相应改下,改哪个呢?难不成写B1,或是B2,那B服务的集群意义又在哪?对于A服务来说他压根就不关心具体调用了B服务的哪个,那是B的事情,A服务只关心有没有结果返回,这就产生了Eureka,他是个协调者,把B所有的集群服务都注册到Eureka,对外提供都是B服务,这个时候A服务引用的是B服务,至于是B1,还是B2,还是B3,那是Eureka的加载策略,不用管,这个时候B服务又增加了集群机器,A服务不用改代码。
Eureka 有`负载均衡`的功能,还有心跳机制检测服务。