CshBBrain集群设计与开发计划

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

你可能感兴趣的:(分布式,websocket,nio,宝贝鱼,CshBBrain)