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

时间: 2024-11-03 22:01:27

rpc框架之HA/负载均衡构架设计的相关文章

[HA]负载均衡:HAPROXY与KEEPALIVED强强组合

步骤一:修改系统控制配置文件,允许分配虚拟IP(VIP) /etc/sysctl.conf net.ipv4.ip_nonlocal_bind=1 <pre style="word-wrap: normal; line-height: 18px;">sysctl -p 步骤二:安装HAPROXY和KEEPALIVED apt-get update && apt-get install keepalived haproxy -y 步骤三:配置KEEPALIVE

mysql HA 负载均衡

DRBD+heartbeat + LVS + keepalived+ mysql 硬件:master *2 :安装drbd, heartbeat,mysql slave*3 : 安装mysql keep alived主机*2: 安装LVS, keepalived(real server就是slave) 应用主机*3 IP: 两台master 有一个HA VIP1 两台keepalived主机有一个lvs VIP2 写操作: 应用主机(AS)->VIP1->dev/drbd(两台master的d

rpc框架之 thrift连接池实现

接前一篇rpc框架之HA/负载均衡构架设计 继续,写了一个简单的thrift 连接池: 先做点准备工作: package yjmyzz; public class ServerInfo { public String getHost() { return host; } public void setHost(String host) { this.host = host; } public int getPort() { return port; } public void setPort(i

Lvs + Ngnix + Haproxy + Keepalived + Tomcat 实现三种HA软负载均衡和Tomcat Session共享

环境准备: 一.11台测试机器 hostname:v1 ~ v10   (10台测试机) ip:192.168.33.81(v1) ~ 192.168.33.90(v101) 由于在内网测试,需要搭建个内网yum源,方便安装软件.yum所在机器为192.168.33.101 二.待实现功能 下面分别使用haproxy/nginx/lvs实现HA + 负载均衡,软件环境如下: v1:33.81 nginx v2:33.82 nginx v3:33.83 tomcat v4:33.84 tomcat

集群、负载均衡及分布式系统架构

1.集群 1.1 定义: 是一组独立的计算机系统构成一个松耦合的多处理器系统,它们之间通过网络实现进程间的通信.应用程序可以通过网络共享内存进行消息传送,实现分布式计算机. 是一组连在一起的计算机,从外部看它是一个系统,各节点可以是不同的操作系统或不同硬件构成的计算机.如一个提供Web服务的集群,对外界来看是一个大Web服务器.不过集群的节点也可以单独提供服务. 1.2 负载均衡系统: 集群中所有的节点都处于活动状态,它们分摊系统的工作负载.一般Web服务器集群.数据库集群和应用服务器集群都属于

【译】gRPC负载均衡

原文地址:https://github.com/grpc/grpc/blob/master/doc/load-balancing.md gRPC负载均衡 范围 本文档解释了gPRC的负载均衡的设计. 背景 每次调用的负载均衡 值得注意的是gRPC的负载均衡是反生在每次调用的基础上,而不是每条连接的基础上.换言之,即使所有请求都来自于同一个客户端,我们仍旧想要它们被负载到所有的服务器上. 负载均衡的方式 在gPRC的负载均衡之前,先研究一下一些常见的负载均衡方式. 代理模式 代理提供一个可靠的可以

企业级Nginx负载均衡与keepalived高可用实战(二)keepalived篇

1.Keepalived高可用软件 1.1.Keepalived介绍 Keepalived软件起初是专门为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能.因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx,Haproxy,MySQL等)的高可用解决方案软件. Keepalived软件主要是通过VRRP协议实现高可用功能的.VRRP是Virtual Router Redundancy Pro

haproxy+keepalived实现高可用负载均衡web集群

haproxy+keepalived实现高可用负载均衡web集群 负载均衡集群的概念 负载均衡是设计分布式系统架构必须要考虑的因素之一,它指的是通过调度分发的方式尽可能将"请求"."访问"的压力负载平均分摊到集群中的各个节点,避免有些节点负载太高导致访问延迟,而有些节点负载很小导致资源浪费.这样,每个节点都可以承担一定的访问请求负载压力,并且可以实现访问请求在各节点之间的动态分配,以实现负载均衡,从而为企业提供更高性能,更加稳定的系统架构解决方案. 高可用集群的概念

apache+inotify-tools+keepalived+lvs-DR模式配置高可用负载均衡集群

环境:虚拟机VMware workstation 9 操作系统:Redhat 5.6 i386 一.keepalived+LVS-DR模式配置高可用负载均衡 拓扑如下: 二.服务器IP配置信息 四台服务器均有VMware虚拟机实现,两台HA主机.两台web服务器.网络方式都设置为NAT模式 1.master:192.168.80.145 2.slaver:192.168.80.137 3.web1:192.168.80.144 4.web2:192.168.80.134 5.VIP:192.16