背景
对于分布式数据库而言,节点间的网络通信处理能力在一定程度上决定着分布式数据库的处理能力。SequoiaDB 在 3.2 版本新增了节点通信多连接模型特性,并提供三个参数(maxsocketpernode、maxsocketperthread、maxsocketthread)控制节点间的网络通信,在此笔者称这三个参数为 SequoiaDB 网络通信“三剑客”。本文主要简单地介绍 SequoiaDB 网络通信“三剑客”。
节点通信过程概述
介绍“三剑客”之前,首先介绍一下节点之间的通信过程(以协调节点(Coord)到数据节点(Data)的通信为例),如图所示。
数据库节点启动后,协调节点会与数据节点建立一个 Socket 通信连接,此时数据节点创建相应的监听线程监听该 Socket 端口。监听线程接收到数据请求时,由网络消息接收线程接收消息然后进行消息分发,分发会话线程进行处理,会话线程处理完毕后,调用消息发送接口进行应答消息发送。
由于节点之间只有一个通信 Socket 连接,所有数据请求以及数据传送都基于这个通信Socket,随着数据请求数的增加及请求数据量的增大,通信 Socket 的传输能力会成为整个数据库的瓶颈,如同高速公路上只有一条车道,随着车流量的增大,高速公路会变得越来越拥堵,限制了高速路的运输力。为了缓解单一通信 Socket 连接所带来的性能问题,SequoiaDB 在 3.2 版本中新增