负载均衡:
负载均衡(Load Balance),意思是将负载(工作任务,访问请求)进行平衡、分摊到多个操作单元(服务器,组件)上进行执行。是解决高性能,单点故障(高可用),扩展性(水平伸缩)的终极解决方案。
常用的负载均衡算法有: 轮循、随机、加权轮循、加权随机、地址哈希等方法。
springcloud实现负载均衡的两种方式是:
1.ribbon(restTemplate+自定义负载均衡算法)
ribbon是基于netflix ribbon实现的一套客户端负载均衡的工具,消费者可以自动从Eureka中拿到对应的服务列表,默认进行轮询策略(RoundRobinRule),也可在配置类中声明想要的均衡策略。
ribbon七种轮询策略
RoundRobinRule 轮询(默认策略)
RandomRule 随机
AvailabilityFilteringRule 过滤多次访问故障及并发数量超过阈值的服务,对剩余服务进行轮询
WeightedResponseTimeRule 根据响应时间分配权重,响应时间越短权重越大,如果刚启动时统计信息不足会暂时使用轮询策略
RetryRule 使用轮询策略,如果失败,会进行重试
BestAvailableRule 过滤掉多次访问故障的服务,然后选择并发量最小的服务
ZoneAvoidanceRule 根据性能和可用性选择服务
2.feign
feign是一个声明式的web service客户端,使用声明式的接口+注解,spring cloud为feign添加了spring mvc的注解支持,并整合了ribbon和eureka来为使用Feign时提供负载均衡。
网友评论