亚信安慧AntDB-M负载均衡

负载均衡是分布式系统中常用的技术,主要是将工作任务均衡分布到系统的各个资源点上,可以充分利用系统资源。

AntDB-M分布式内存数据库节点角色可以分为管理节点(MN)、计算节点(CN)和数据节点(DN)三种。管理节点收到客户端连接请求后,会经由负载均衡模块为客户端分配集群内的服务端节点,流程图如下图所示:

图1:AntDB-M 负载均衡示意图

通常负载均衡算法会将工作负载平均分布到所有节点,但是AntDB-M分布式数据库的节点存在计算/存储节点类型、主备状态等差异,因此我们在设计均衡算法时结合考虑了节点类型、主备状态等信息。

算法实现

AntDB-M管理节点内部维护了集群中所有机器的元数据信息,并通过心跳更新机器状态与信息。当新连接到达管理节点后,管理节点根据均衡策略返回客户端多个可用节点,客户端依次轮询连接。具体算法步骤如下:

1、节点类型判断

AntDB-M分布式集群可以根据需求配置CN节点与DN节点,构建MN+DN结构或MN+CN+DN结构的结构。当集群结构为MN+CN+DN时,管理节点可以根据需求指定分配CN或DN节点,未指定时会默认优先分配CN节点。负载均衡算法第一步会判断需求节点类型,获取对应类型机器。

2、主备选择

AntDB-M各分片可搭建主从集群保证分片的高可用。当分片存在主从节点时,管理节点可以根据请求的只读属性,为请求分配分片的主节点或从节点。对于非只读请求返回分片主节点,只读请求优先获取备节点,无可用备节点时返回主节点。

2、最少连接数

MN会通过心跳维护集群内所有节点状态信息,负载均衡算法获取到多个符合条件的节点后,会根据各节点当前连接数状态,优先返回连接数最少的节点。

经过上述均衡策略之后,管理节点会依照节点优先程度,至多向客户端返回3个可用节点。

实践示例

1、相关操作

**节点类型控制:**AntDB-M通过变量antdb_route_mode(session_variable)控制负载均衡暴露节点类型,使用show variables like "antdb_route_mode"查看当前暴露的节点,使用 set session antdb_route_mode="DN"改变暴露的节点。当集群结构发生改变时,antdb_route_mode值会根据集群结构自动进行调整,仅当集群结构为MN+CN+DN时可以指定暴露节点类型。

**UDF:**AntDB-M内置了UDF:get_route(ip,read_only)供客户端调用。其中read_only为连接请求的只读属性。

2、实践

下面通过几个简单的示例展示负载均衡功能用法及均衡结果。以如下集群结构为例,搭建1个MN、1个CN、2个一主两备DN的集群。

图2:集群结构

此时默认对外暴露节点为CN:

图3:负载均衡暴露节点类型

复制代码

查看负载均衡结果:

图4:CN负载均衡结果

复制代码

可见此时MN只会暴露给客户端CN节点。

修改antdb_route_mode为"DN"后再次查看负载均衡结果:

图5 DN负载均衡结果

此时负载均衡可以根据客户端请求只读属性,返回DN分片主节点或备节点。手动在21、22、32节点上建立一个连接后,可以看到此时负载均衡返回结果会根据各节点连接数进行选择,实现负载均衡。负载均衡结果如下图所示:

图6:最少连接数均衡结果

综上所述,在分布式数据库中,想要合理利用各个服务器,最大程度发挥集群性能,负载均衡必不可少。

关于亚信安慧AntDB数据库

AntDB数据库始于2008年,在运营商的核心系统上,服务国内24个省市自治区的数亿用户,具备高性能、弹性扩展、高可靠等产品特性,峰值每秒可处理百万笔通信核心交易,保障系统持续稳定运行超十年,并在通信、金融、交通、能源、物联网等行业成功商用落地。

相关推荐
SKYDROID云卓小助手2 小时前
三轴云台之相机技术篇
运维·服务器·网络·数码相机·音视频
东方佑2 小时前
自动调整PPT文本框内容:防止溢出并智能截断文本
linux·运维·powerpoint
泥土编程4 小时前
kubekey -实现懒人一键部署K8S集群
linux·运维
wirepuller_king7 小时前
创建Linux虚拟环境并远程连接,finalshell自定义壁纸
linux·运维·服务器
在野靡生.7 小时前
Ansible(1)—— Ansible 概述
linux·运维·ansible
风123456789~7 小时前
【Linux运维】查询指定日期的上月
linux·运维·服务器
zyk_5208 小时前
Docker desktop如何汉化
运维·docker·容器
韭菜盖饭8 小时前
解决Docker端口映射后外网无法访问的问题
运维·docker·容器
CC.cc.9 小时前
Linux系统之systemctl管理服务及编译安装配置文件安装实现systemctl管理服务
linux·运维·服务器
qq_339282239 小时前
docker之network
运维·docker·容器