课后练习:通过 MOSN mecha 完成 brpc 开发
brpc 协议规范
标准 brpc 协议报文格式如下:
0 1 2 3 4 6 8 10 12 14 16
+----+----+------+---+---+---+---+-----+----+----+----+----+-----+-----+------+-----+
| magic | flag | requestID |codec| timeout/status | headerLen | contentLen |
+----+----+------+---+---+---+---+-----+----+----+----+----+-----+-----+------+-----+
| header + content bytes ... ... |
| |
+-----------------------------------------------------------------------------------+
字段说明如下:
字段名 |
大小(Byte) |
说明 |
magic |
2 |
魔法数,固定值:0xbcbc。 |
flag |
1 |
报文标志,取值如下:
|
requestID |
4 |
请求或者响应 ID |
codec |
1 |
序列化编号,固定值:0。 |
timeout |
4 |
超时时间,单位:ms。 flag 取值为 1、3 时生效,代表请求超时时间。请求时该字段需填值。 |
status |
4 |
响应码 flag 取值为 2、4 时有效,代表响应状态码。响应时该字段需填值,和 timeout 共用字段。 |
headerLen |
2 |
代表报文 key-value 键值对长度。 |
contentLen |
2 |
代表消息体长度。 |
header |
- |
编码后的格式为键值对字符串,格式为:
header 中包含服务调用信息,详情信息参见下方表格。 |
content bytes |
- |
为业务报文体,内容不设限制,例如传递字符串。 |
header 中包含的服务调用信息如下:
序号 |
包含 Key |
含义 |
样例 |
1 |
interface |
服务调用接口 |
com.alipay.core.UserService |
2 |
method |
服务调用方法 |
userInfo |
brpc 协议调用指南
brpc 的服务端和客户端源码地址如下:
https://github.com/mosn/extensions/tree/master/java-quickstart/java-plugin-quickstart
-
brpc-server 对应服务端程序,服务端启动监听 7766 端口。
-
brpc-client 对应客户端程序,客户端启动监听 8080 端口。
brpc 客户端支持 REST API 触发 RPC 调用,命令如下:
curl localhost:8080/invoke
可选 HTTP 参数如下:
-
service 调用服务 interface,默认为:
com.alipay.core.UserService
。 -
parameter 调用指定参数,格式为:
key=value,...=...
。多个 Key 需使用英文逗号(,)分隔。 -
content 调用 RPC 报文的消息体,RPC 响应回送返回。默认为:
hello world
。 -
ipPort 调用
ip:port
, 默认为:127.0.0.1:2045
,指向 brpc MOSN Client 端口。 -
timeout 调用超时时间(毫秒),默认为:3000 毫秒。如果要 debug 长时间挂住,可以指定更长时间。
示例如下:
curl localhost:8080/invoke\?timeout=6000\&content=yiji\¶meter=user=yiji,age=30
命令行
curl
需要对
?
、
&
增加转译
\
字符, postman 发起调用不需要。
代码会自动生成提供 MOSN 启动后手动执行服务发布、订阅的脚本,在 MOSN 首次启动手动执行即可:
cd ~/go/src/quick-start-practice/configs/codecs/brpc/
bash ./auto_pub_sub.sh
课后练习
请根据前面的学习内容通过 MOSN mecha 完成 brpc 开发。
提示:开发者应关注协议接入解码 header 包含的字段
序号 |
协议要素 |
对应字段 |
样例 |
1 |
服务标识 |
interface |
com.alipay.core.UserService |
2 |
服务方法 |
method |
userInfo |
观看以下视频,了解 brpc 协议开发步骤和注意事项: