1.服务器集群交互使用的协议:
1.1 握手协议,定义简化的处理
请求格式:
CshBBrain
Host:
Key:
Protocol:
第一行固定为:CshBBrain
第二行为:发起请求的客户端地址和端口,比如192.168.1.220:9292
第三行为:客户端随机生成的24位的字符串
第四行为:协议必须为clusters
完整握手请求举例:
CshBBrain
Host:192.168.12.112:9292
Key:4tAjitqO9So2Wu8lkrsq3w==
Protocol:Clusters
响应格式:
CshBBrain
Host:192.168.12.112:9292
Accept:
Protocol:Clusters
第一行固定为:CshBBrain
第二行为:发起请求的客户端地址和端口,比如192.168.1.220:9292
第三行为:把客户端发送的Key截取出来
4tAjitqO9So2Wu8lkrsq3w==
用它和魔幻字符串258EAFA5-E914-47DA-95CA-C5AB0DC85B11
连接起来,像这样:
4tAjitqO9So2Wu8lkrsq3w==258EAFA5-E914-47DA-95CA-C5AB0DC85B11
然后把这一长串经过SHA-1算法加密,得到长度为20字节的二进制数据,
再将这些数据经过Base64编码,最终得到服务端的密钥,也就是Accept:
bEVeGLZrb9fS3Rj8WzExJdCsedg=
第四行为:协议必须为clusters
响应完整举例:
CshBBrain
Accept:bEVeGLZrb9fS3Rj8WzExJdCsedg=
Protocol:Clusters
1.2 数据交换格式采用websocket消息格式
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-------+-+-------------+-------------------------------+
|F|R|R|R| opcode|M| Payload len | Extended payload length |
|I|S|S|S| (4) |A| (7) | (16/63) |
|N|V|V|V| |S| | (if payload len==126/127) |
| |1|2|3| |K| | |
+-+-+-+-+-------+-+-------------+ - - - - - - - - - - - - - - - +
| Extended payload length continued, if payload len == 127 |
+ - - - - - - - - - - - - - - - +-------------------------------+
| |Masking-key, if MASK set to 1 |
+-------------------------------+-------------------------------+
| Masking-key (continued) | Payload Data |
+-------------------------------- - - - - - - - - - - - - - - - +
: Payload Data continued ... :
+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - +
| Payload Data continued ... |
+---------------------------------------------------------------+
[opcode] 01标识数据内容是 文本,08标识 : 要求远端去关闭当前连接。
[MASK](即原先的RSV4)如果是 1 则数据是被 MASK 的。
[Masking-key] 如果MASK为 1 则有4字节的 Masking-key,用于与传输的数据 [Payload Data] 进行异或运算,4byte(32bit)进行一次运算,
不足四位从前往后对应,如只有三位,则只与[Masking-key]的前三位进行运算。
关闭远端连接:
传两个字节 (0x88,0x00)。
2.集群端口可以通过参数设置,是否开启集群设置,归属的管理服务器,可设置多个
clustersSwitch:集群开关,是否开启集群,0:关闭集群,1:开启集群
clustersPort:集群端口
clustersRole:1:表示只担任普通服务器;2:表示管理服务器,且只担管理服务器之职责,不担任业务处理;3:表示即担管理服务器之职责,又担任业务服务器之职责
clustersServer:管理服务器地址和端口
3.管理服务器和普通服务器:
管理服务器是专门搜集管理所有普通服务器的服务器,可以向普通服务器移交管理权限。
3.1 普通服务器需要想管理服务汇报CPU参数,内存参数,工作线程数量,可以处理的连接极限数量,读写监听线程数量,进入监听线程数量,使用的端口
3.2 管理服务器可以想普通服务器下达新增监听端口,关闭监听端口,增加工作线程数量,减少工作线程数量,增加减少读写监听线程数量。
3.3 分配服务器和端口给客户端
3.4 管理服务器管理权限移交和接手
3.5 查看服务器的数量,查看各服务器的使用情况。
3.6 普通服务器相互备份数据
3.7 普通服务器的业务数据交换
3.8 管理服务器通知普通服务器A向普通服务器B交换数据