欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

CshBBrain集群设计与开发计划

程序员文章站 2022-05-03 20:42:39
...

 

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

Host:192.168.12.112:9292

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交换数据