rpc框架之HA/负载均衡构架设计

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实例。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我和PYTHON有个约会

21. 企业级开发基础2:使用第三方模块

python提供了非常强大的程序设计和编程开发的平台,但是python本身提供的功能在一定程度上并不是非常完善或者完整的契合我们的项目需要。

1072
来自专栏大数据技术学习

零基础学习大数据,搭建Hadoop处理环境

由于Hadoop需要运行在Linux环境中,而且是分布式的,因此个人学习只能装虚拟机,本文都以VMware Workstation为准,安装CentOS7,具体...

2547
来自专栏娱乐心理测试

私有API检查工具详解

3425
来自专栏小白课代表

PanDownload 1.5.4 回归!享受飞一样的下载体验!!!

2842
来自专栏云计算教程系列

在Centos上安装Node.js

Node.js是一个能够在服务器端运行JavaScript的开放源代码、跨平台avaScript 运行环境。Node.js由Node.js基金会持有和维护,并与...

5630
来自专栏java思维导图

从输入URL到页面展示到底发生了什么

地址:http://www.cnblogs.com/xianyulaodi/ 作者:咸鱼老弟

1473
来自专栏linux运维学习

linux学习第三十一篇:iptables规则备份和恢复,firewalld的9个zone,firewalld关于zone的操作,firewalld关于service的操作

iptables规则备份和恢复 保存和备份iptables规则 service iptables save //会把规则保存到/etc/sysconfig/ip...

26110
来自专栏Java帮帮-微信公众号-技术文章全总结

OAuth 2.0验证【面试+工作】

OAuth2.0验证【面试+工作】 OAuth是一个关于授权(authorization)的开放网络标准,在全世界得到广泛应用,目前的版本是2.0版。 本文对...

3755
来自专栏雨过天晴

原 基于极路由的视频广告过滤及VIP通道

2.6K3
来自专栏华章科技

零基础搭建Hadoop大数据处理环境

VMware的安装,装好一个虚拟机后利用复制虚拟机的方式创建后面几个虚拟机,省时省力,需要注意的是需要修改每个虚拟机的IP与主机名。

1283

扫码关注云+社区

领取腾讯云代金券