Ribbon负载均衡及其应用
nginx - 随笔分类 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中涉及到负载均衡,为何此处由涉及Ribbon负载均衡呢?那是因为ngnix是服务端的负责均衡,而Ribbon是客户端的负载均衡。
对于负载均衡理论相关的内容nginx - 随笔分类 - 池塘里洗澡的鸭子 - 博客园 (cnblogs.com)中没有太多的涉及。此处补充如下:
负载均衡⼀般分为服务器端负载均衡和客户端负载均衡。
所谓服务器端负载均衡,⽐如Nginx、 F5这些,请求到达服务器之后由这些负载均衡器根据一定的算法将请求路由到模板服务器处理。
所谓客户端负载均衡,⽐如我们要说的Ribbon,服务消费者客户端会有⼀个服务器地址列表,调用方在请求前通过一定的负责均衡算法选择一个服务器进行访问,负载均衡算法选择一个服务器进行访问,负载均衡算法的执⾏是在请求客户端进⾏。
至于负载均衡中涉及的算法,后续将会在数据结构与算法中专门介绍。
Ribbon的使用相对比较简单,其一般与Eureka配合使用:Ribbon利用从Eureka中读取到的服务信息,在调用服务提供者提供的服务时根据相应算法进行负载均衡。具体应用如下:
1、无需另外导入jar,因为Eureka相关包中已经包含:
2、修改嵌套调用服务添加@LoadBalanced:
3、修改Resume测试案例:
4、测试结果:
测试过程中遇到几个小问题:
1)无法找到服务,原因是使用了ribbon负载均衡后不可直接使用ip:port地址进行路由了,而是必需使用spring.application.name里配置的名称。为什么呢?可以看下使用ribbon进行客户端负载均衡后,eureka的内容:
本机的ip是:
但是注册到eureka之后是两个地址,所以不使用硬编码的方式进行访问
2)使用spring.application.name里配置的名称后,提示Request URI does not contain a valid hostname: http://XXX/XX/openstate/XX。这是因为ribbon不支持应用名中间包含下划线“_”,支持应用名中间包含连接线“-”。
所以除了以上修改外还需修改被嵌套调用的路由:
配置文件中关于spring.application.name部分内容同步修改。
最新文章
- html基础 1
- Sharepoint学习笔记—习题系列--70-576习题解析 -(Q1-Q3)
- Greenplum 集群部署
- Mysql数据库实践操作之————批量插入数据(100万级别的数据)
- BackgroundWorker组件学习
- [一]Head First设计模式之【策略模式】(鸭子设计的优化历程)
- 懒人记录 Hadoop2.7.1 集群搭建过程
- Win7窗口操作
- UT源码-124
- 简述RPC原理实现
- idea使用错误及技巧总结合集(一)
- pygame 笔记-1 按键控制方块移动
- mysql常用连接查询
- 牛客OI周赛6-提高组 A 大法师与魔法石
- HAAR小波
- 通过Mysql连接ASP.Net Core2.0(Code First模式)
- NBUT 1219 Time 2010辽宁省赛
- 盒子模型 W3C中和IE中盒子的总宽度分别是什么
- linux时间与Windows时间不一致的解决
- Go语言string包详解