客户端负载均衡-微服务架构
什么是负载均衡?
负载均衡是我们处理高并发、缓解网络压力和进行服务端扩容的解决方案
负载均衡分为两种
1.服务端负载均衡
Nginx就是服务端负载均衡的例子
由Nginx 分发器统一反向代理请求地址
2.客户端负载均衡
不是统一分发,而是由客户端自己选择,如果你学过dubbo,它就是客户端负载均衡
Ribbo消费者是否支持负载均衡?
可以的,Ribbo的实现本身就是客户端负载均衡,
通过RestTemplate来访问接口服务的,
只要加@LoadBalanced注解来达到负载均衡是不是很简单
Ribbo负载均衡运行机制是什么?
Ribbo是一个基于HTTP和TCP的客户端负载均衡器,
当我们将Ribbon和Eureka一起使用时,Ribbon会从Eureka注册中心去获取服务端列表,
然后进行轮询访问以到达负载均衡的作用,客户端负载均衡中也需要心跳机制去维护服务端清单的有效性,
当然这个过程需要配合服务注册中心一起完成
常用的负载均衡策略
- RandomRule(随机策略)
- RoundRobinRule(轮询策略-默认策略)
- RetryRule(重试策略)
- WeightedResponseTimeRule(权重策略)
测试负载均衡
1.需要两个提供者项目
springcloud-provider-1(已有,项目端口9001)
springcloud-provider-2-项目端口是9003
和springcloud-provider-1项目一样但是就端口不一样,和自定义属性值不一样
相当于有springcloud-provide提供者两个实例,供消费者消费
2.启动两个提供者项目,查看注册中心\
发现springcloud-provider服务up数量是2
3.启动Ribbo消费者来消费服务
不断刷新浏览器访问 http://localhost:9004/test
你会发现:
7
发现:
Ribbo 消费者会轮询消费注册列表的两个提供者服务
源码链接
https://github.com/java-aodeng/hope
转载保留版权
十分感谢隐无为的源计划:http://javatv.cn/springcloud/springcloud-doc/doc_1.html
我的博客:https://aodeng.cc 我的公众号:低调小熊猫 我的QQ群:756796932
- 本文作者:低调小熊猫
- 本文链接:https://aodeng.cc/archives/khdfzjhs
- 版权声明:本博客所有文章除特别声明外,均采用知识共享署名 4.0 国际许可协议。转载请注明出处!