出于教学目的, 通信协议设计两套实现
- HTTP协议
- 自定义协议
1. HTTP协议
1.1 RequestHeader
header中不需要任何值
1.2 请求体
请求体使用json格式来传输数据
{
serviceName:"服务名,和注册中心的相匹配",
methodName:"能够定位服务提供方的方法",
request:[ #数组是请求参数
"",
""
]
}
这个请求体, 够用了
2. 自定义协议
自定义协议需要使用Netty等框架来进行通信, 所以需要规定好每条报文的详细格式
2.1 格式
我们就设计简单点
定义: [16bit:魔数][1bit: 标识请求还是响应][1bit: 是否双向传输][1bit: 是否心跳包][5bit:预留][16bit:请求id][32bit:请求体长度(单位字节)][请求体长度: 请求体] 魔数: 1111000000001111 请求标识位: 0=请求; 1=响应 是否双向传输: 0=否; 1=是 是否心跳包: 0=否; 1=是
例:
发送一条请求体内容是数字1的请求,请求体大小为1字节
则:
魔数: 1111000000001111
请求标识位: 0
是否双向传输: 1
是否心跳包: 0
预留位: 00000
请求id: 0000000000000001
请求长度: 00000000000000000000000000000001
请求体: 00000001
最终组装的请求为:11110000000011110100000000000000000000010000000000000000000000000000000100000001
2.2 请求体
请求体这里就不搞花样了, 就用json格式, 和上门的HTTP协议的使用规则一样
{
serviceName:"服务名,和注册中心的相匹配",
methodName:"能够定位服务提供方的方法",
request:[ #数组是请求参数
"",
""
]
}