


通常负载均衡算法会将工作负载平均分布到所有节点,但是AntDB-M分布式数据库的节点存在计算/存储节点类型、主备状态等差异,因此我们在设计均衡算法时结合考虑了节点类型、主备状态等信息。
算法实现AntDB-M管理节点内部维护了集群中所有机器的元数据信息,并通过心跳更新机器状态与信息。当新连接到达管理节点后,管理节点根据均衡策略返回客户端多个可用节点,客户端依次轮询连接。具体算法步骤如下:
1、节点类型判断
AntDB-M分布式集群可以根据需求配置CN节点与DN节点,构建MN+DN结构或MN+CN+DN结构的结构。当集群结构为MN+CN+DN时,管理节点可以根据需求指定分配CN或DN节点,未指定时会默认优先分配CN节点。负载均衡算法第一步会判断需求节点类型,获取对应类型机器。
实践示例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的集群。


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



点击了解 往期精彩
点击“阅读原文”
查看更多AntDB数据库内容









