课后练习:通过 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

报文标志,取值如下:

  • 1:请求

  • 2:响应

  • 3: 心跳请求

  • 4:心跳响应

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

-

编码后的格式为键值对字符串,格式为:key1=value1&key2=value2。例如:interface=com.alipay.core.UserService&method=userInfo

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\&parameter=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 协议开发步骤和注意事项: