博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
rpc框架之HA/负载均衡构架设计
阅读量:5086 次
发布时间:2019-06-13

本文共 683 字,大约阅读时间需要 2 分钟。

thrift、avro、grpc之类的rpc框架默认都没有提供负载均衡的实现,生产环境中如果server只有一台,显然不靠谱,于是有了下面的设计,这其实是前一阵跟北京一个朋友在qq群里交流的结果,分享一下:

主要思路:

1、rpc server端以多实例方式运行(多端口或多机部署均可),启动时每个实例向zk集群以临时节点方式注册(这样,遍历zk上/server下有多少个临时节点就知道有哪些server实例在线)

2、客户端自己实现一个连接池,连接池初始化时,从zk将在线的server实例信息同步到本地并缓存,同时监听zk下的节点变化,然后建立连接若干(简单考虑的话,可以与每个server实例建立一个连接)

3、客户端需要与Server通讯时,从连接池中取一个可用的连接,用它实现远程调用。

 

需要考虑的细节:

连接池其实是关键,要设计完善的话,还是有很多细节要认真考虑:

a) 连接池的初始连接数、最低连接数、最大连接数,这些都是要考虑的。

b) 如果长时间没有client调用,要有额外机制来释放闲置连接(可以额外开一个线程定时检测)

c) 如果server端,某个实例down掉,要考虑将对应的连接置为不可用,或者直接释放。

d) 没有可用连接时,如果池中的连接数<最大连接数,要考虑主动创建新连接。

e) 所有连接都占用,也无法创建新连接时,要有通知机制(邮件、短信之类的都行)及时通知运维人员,提示新增server实例。

 

转载于:https://www.cnblogs.com/yjmyzz/p/rpc-load-balance-design.html

你可能感兴趣的文章
web服务器
查看>>
第一阶段冲刺06
查看>>
EOS生产区块:解析插件producer_plugin
查看>>
一天一道算法题--5.30---递归
查看>>
JS取得绝对路径
查看>>
排球积分程序(三)——模型类的设计
查看>>
HDU 4635 Strongly connected
查看>>
ASP.NET/C#获取文章中图片的地址
查看>>
Spring MVC 入门(二)
查看>>
格式化输出数字和时间
查看>>
页面中公用的全选按钮,单选按钮组件的编写
查看>>
java笔记--用ThreadLocal管理线程,Callable<V>接口实现有返回值的线程
查看>>
BZOJ 1047 HAOI2007 理想的正方形 单调队列
查看>>
各种语言推断是否是手机设备
查看>>
这个看起来有点简单!--------实验吧
查看>>
PHP count down
查看>>
JVM参数调优:Eclipse启动实践
查看>>
(旧笔记搬家)struts.xml中单独页面跳转的配置
查看>>
不定期周末福利:数据结构与算法学习书单
查看>>
strlen函数
查看>>