Springcloud
服务发现框架Eureka
服务发现
-
服务提供者
- 提供一些自己能够执行的服务给外界
-
服务消费者
- 需要使用一些别人提供的服务的“用户”
-
服务中心
- 服务提供者与消费者之间的桥梁,服务提供者可以将自己的服务注册到服务中心,而服务消费者可以到服务中心寻找到自己所需要的服务的服务提供者
负载均衡Ribbon
RestTemplate
- 是spring提供的一个访问http服务的客户端类,各个微服务之间就是通过Resttemplate远程调用eureka中已注册的服务
Ribbon是什么,为什么需要ribbon
- ribbon是一个负载均衡器,运行消费端
- 微服务间为了实现高可用,同一个功能可能会提供多个微服务,如秒杀系统,当大量请求涌入时,如果请求都集中在其中某个微服务,而其他的可以实现相同功能的微服务却没有被调用到,那么为了实现高可用的集群也就失去了作用,ribbon负载均衡就是为了解决整个问题了,在消费者端获取到了服务列表后,根据请求在内部使用负载均衡算法,对多个系统进行调用,不会出现某个系统处理所有请求,而其他系统不干活的情况
Nginx和ribbon的对比
- nginx是一种集中式的负载均衡,将所有请求都集中起来再进行负载均衡
Ribbon的集中负载均衡算法
- RoundRobbonRule:轮询策略。默认采用的策略,若经过一轮轮询没有找到可用的服务提供者,会再进行一轮轮询,最多轮询十轮,若最终还是没有找到,则返回null
- RandomRule:随机策略,从所有可用的服务提供者中随机选择一个
- RetryRule:重试策略,先按照轮询策略获取服务提供者,若获取失败,则在指定的时限内重试,默认为500毫秒
- 还有其他一些算法,也可自定义负载均衡算法
远程调用Open Feign
什么是feign,为什么需要feign
- 有了eureka、resttemplate和ribbon进行微服务间的调用很不方便,使用feign就可以实现像调用代码一样进行各个服务间的调用