TCP协议报文说明

简介

   本篇幅介绍CppCloud服务端对外提供的TCP协议报文定义,每个消息内的自段解释。 使用者或第3方机构可以遵照此协议定义实现某种语言的sdk,或者直接Native方式与Serv进行通信。

报文定义

   CppCloud通信采用TCP长连接方式来收发消息,原生TCP是无边界的字节流,要表达一个个消息单元,CppCloud规定了每个消息由消息头和消息体构成,消息头固定10字节,消息体不定长(消息长度在头部指定),消息体一般是json字符串。 报文格式

c++的报文头部定义 
#pragma pack(1)
struct sc_msg_head_t
{
    unsigned char ver;
    unsigned char head_len;
    unsigned int  body_len; // 网络字节序
    unsigned short cmdid;   // 网络字节序
    unsigned short seqid;   // 网络字节序
};
#pragma pack()
报文头部 字节数 解释
ver 1 版本号目前是1
head_len 1 头部长度,目前是10
body_len 4 报文主体长度,网络字节序
cmdid 2 消息命令字,网络字节序
seqid 2 消息序号,响应时回复同样的序号,网络字节序

报文主体定义

目录
1. 客户自报身份 CMD_WHOAMI_REQ
2. 获取客户应用列表CMD_GETCLI_REQ
3. 查询最近退出的客户列表CMD_HUNGUP_REQ
4. 获取服务端系统日志CMD_GETLOGR_REQ
5. N/ACMD_EXCHANG_REQ
6. 设备客户应用属性CMD_SETARGS_REQ
7. 获取告警的用户列表(不常用)CMD_GETWARN_REQ
8. 对等服务端Serv报告身份*CMD_IAMSERV_REQ
9. 存活心跳保持CMD_KEEPALIVE_REQ
10. REA广播CMD_BROADCAST_REQ
11. 申请获取某Serv下的Cli数据CMD_CLIERA_REQ
12. 测试请求CMD_TESTING_REQ
13. 广播Cli上线或属性变化CMD_UPDATEERA_REQ
14. 查询分布式配置CMD_GETCONFIG_REQ
15. 修改分布式配置CMD_SETCONFIG_REQ
16. 列出所有配置文件CMD_GETCFGNAME_REQ
17. Serv间同步配置文件CMD_HOCFGNEW_REQ
18. 推送配置文件数据CMD_SETCONFIG2_REQ
19. 广播推送新修改的配置文件CMD_SETCONFIG3_REQ
20. 订阅配置改变通知CMD_BOOKCFGCHANGE_REQ
21. 通知app事件CMD_EVNOTIFY_REQ
22. 服务Provider注册CMD_SVRREGISTER_REQ
23. 推送服务注册信息给其他ServCMD_SVRREGISTER2_REQ
24. 服务发现(查询)CMD_SVRSEARCH_REQ
25. 列出所有服务CMD_SVRSHOW_REQ
26. 查询客户应用运行时输出日志CMD_APPRUNLOG_REQ
27. 默认的tcp微服务请求处理方法CMD_TCP_SVR_REQ
28. 服务治理上报统计信息CMD_SVRSTAT_REQ
29. web请求通告命令CMD_WEBCTRL_REQ

1. 客户自报身份

  • 请求命令字:CMD_WHOAMI_REQ 0x0001(1)
  • 响应命令字:CMD_WHOAMI_RSP 0x1001(4097)
  • 功能描述:客户应用连接上Serv后首先告知自己的身份信息,包括客户名称,客户类型,进程号等等。如果没有上报身份,后面的其他命令字会被拒绝。
  • 请求示例: json { 'localsock': '192.168.228.10:54967', 'svrid': 0, 'pid': 10396, 'svrname': 'httpApp1', 'desc': '', 'clitype': 200, 'tag': 'mytag', 'begin_time': 1549138758, 'shell': './sample_http_prvd.py' }
  • 请求参数解释: |符号名称|解释| |-------|----| |svrid|客户应用ID,传0时由服务端生成| |svrname|客户应用名称(必填)| |tag|自定义的标记| |localsock|客户ip:port| |clitype|应用类型 1-9:sevr端服务; 10-19:监控进程; 20-29:web serv; 30-39:观察进程; 100-199:CPP应用;200-299:py应用;(必填)| |begin_time|进程启动时间| |desc|应用功能描述| |pid|客户进程pid| |shell|客户进程启动时的shell命令| > 上报时提供的信息越多,在web上展示就越完整清晰。

  • 响应示例: json {"code":0,"svrid":2002, "mconf": "abc.json"}

  • 响应参数解释: |符号名称|解释| |-------|----| |code|结果码,0代表成功(必填)| |desc|错误描述,当code!=0时会附带出现| |svrid|客户应用ID(必填)| |mconf|主配置文件名(在元配置中有指定才有)|

2. 获取客户应用列表

  • 请求命令字:CMD_GETCLI_REQ 0x0002(2)
  • 响应命令字:CMD_GETCLI_RSP 0x1002(4098)
  • 功能描述:获取客户应用详细信息列表,主要提供给web管理应用使用
  • 请求示例: json { "svrid": 100, "key": "" }
  • 请求参数解释: |符号名称|解释| |-------|----| |svrid|要查询的客户应用ID;传0时查询所有| |key|为空时返回所有属性字段,非空时返回名为key值的属性|

  • 响应示例: json { "code": 0, "desc": "success", "count": 2, "data": [{ "_ip": "127.0.0.1", "atime": "1548316521", "begin_time": "1548254131", "clisock": "127.0.0.1:55990", "clitype": "100", "fd": "8", "idc ": "200 ", "localsock": "127.0.0.1:55990", "pid": "16", "svrid": "2002", "svrname": "TestPrvd" }, { "_ip": "192.168.228.10", ... } ] }

  • 响应参数解释: |符号名称|解释| |-------|----| |code|结果码,0代表成功(必填)| |desc|错误描述,当code!=0时会附带出现| |data|应用信息列表| |_ip|服务端看到的IP地址| |atime|最后的活跃时间| |begin_time|进程启动时间| |clisock|服务端看到的客户地址(有NAT时这里是客户公网地址)| |localsock|客户端自己socket地址(有NAT时和clisock不相等)| |pid|进程ID| |shell|客户启动的命令| |svrid/svrname|同CMD_WHOAMI_REQ一样|

3. 查询最近退出的客户列表

  • 请求命令字:CMD_HUNGUP_REQ 0x0003(3)
  • 响应命令字:CMD_HUNGUP_RSP 0x1003(4099)
  • 功能描述:查询最近退出的客户列表,提供给用户设置告警接口
  • 请求示例: json { "op": "get", "svrid": 123 }
  • 请求参数解释: |符号名称|解释| |-------|----| |op|命令动作:"get"获取退出列表; "set"清除列表(必填)| |svrid|当op=="set"时使用,指定要请除哪项, 0时代表所有|

  • 响应示例: json { "code":0, "data": [ {"svrid": 123, "name": "app3", ... }, ] }

  • 响应参数解释: |符号名称|解释| |-------|----| |code|结果码,0代表成功(必填)| |desc|错误描述| |data|当op=="get"时存在,已退出的客户列表|

4. 获取服务端系统日志

  • 请求命令字:CMD_GETLOGR_REQ 0x0004(4)
  • 响应命令字:CMD_GETLOGR_RSP 0x1004(4100)
  • 功能描述:获取服务端Serv系统日志
  • 请求示例: json { "size": 10 }
  • 请求参数解释: |符号名称|解释| |-------|----| |size|获取最新日志的条数|

  • 响应示例: json { "code":0, "data": [ "log-string1", "log-string2" ] }

  • 响应参数解释: |符号名称|解释| |-------|----| |code|结果码,0代表成功(必填)| |desc|错误描述| |data|字符串列表,越靠前越新|

CMD_EXCHANG_REQ(不常用)(略)


6. 设备客户应用属性

  • 请求命令字:CMD_SETARGS_REQ 0x0006(6)
  • 响应命令字:CMD_SETARGS_RSP 0x1006(4102)
  • 功能描述:设备客户应用属性,可以自定义一些键值对信息,绑定在本次连接中,服务端的CliBase对象会以map形式保存;当请求CMD_GETCLI_REQ时附带返回
  • 请求示例: json { "aliasname": "app-001", "key": "value", "hello": "world" }
  • 请求参数解释: |符号名称|解释| |-------|----| |svrid/svrname/_ip/clisock/atime/tag|特殊名cli不要使用| |warn|保留作告警使用,取值ok/ng/clear,配合CMD_GETWARN_REQ命令,请忽略| |aliasname|设置应用别名|

  • 响应示例: json { "code": 0, "desc": "success" }

  • 响应参数解释: |符号名称|解释| |-------|----| |code|结果码,0代表成功(必填)| |desc|错误描述|

7. 获取告警的用户列表(不常用)

  • 请求命令字:CMD_GETWARN_REQ 0x0007(7)
  • 响应命令字:CMD_GETWARN_RSP 0x1007(4103)
  • 功能描述:当cli里含有filter_key属性,且值也和filter_val相等时返回
  • 请求示例: json { "filter_key": "warn", "filter_val": "ng" }
  • 请求参数解释: |符号名称|解释| |-------|----| |filter_key|过滤条件,属性名,为空时忽略此条件| |filter_val|过滤条件,属性值,非空且filter_key非空时有效|

  • 响应示例: json { "code": 0, "desc": "success", "data": [{ "begin_time": "1544586678", "clisock": "192.168.84.50:39144", "svrid": "434", "svrname": "CliChecker", "warn": "ok", "warn.mainSvr.disk_check": "ok|success|Thu Jan 24 17:51:41 2019" },.. ] }

  • 响应参数解释: |符号名称|解释| |-------|----| |code|结果码,0代表成功(必填)| |desc|错误描述,当code!=0时会附带出现| |data|cli信息列表,每个cli信息是一个map,参考CMD_GETCLI_REQ中的响应说明|


8. 对等服务端Serv报告身份

  • 请求命令字:CMD_IAMSERV_REQ 0x0008(8)
  • 响应命令字:CMD_IAMSERV_RSP 0x1008(4104)
  • 功能描述:cppcloud_serv进程之间建立连接后首个消息,告诉对方自己的身份信息
  • 请求示例: json { "svrid": 1, "svrname": "serv", "localsock": "192.168.0.10:14857", "begin_time": "1544586678", "pid": 1350, "clitype": 1 }
  • 请求参数解释: |符号名称|解释| |-------|----| |svrid|serv的唯一ID(请求方),一般小于100| |svrname|固定"serv"| |localsock|自身socker地址| |begin_time|当前时间| |pid|进程ID| |clitype|固定1|

  • 响应示例: json { "svrid": 3, "svrname": "serv", "localsock": "192.168.0.10:14857", "begin_time": "1544586678", "pid": 1354, "clitype": 1 }

  • 响应参数解释: |符号名称|解释| |-------|----| |svrid|响应Serv的svrid| |svrname|固定"serv"| |localsock|自身socker地址| |begin_time|响应时的时间| |pid|响应方进程ID| |clitype|固定1|

9. 存活心跳保持

  • 请求命令字:CMD_KEEPALIVE_REQ 0x0009(9)
  • 响应命令字:CMD_KEEPALIVE_RSP 0x1009(4105)
  • 功能描述:存活心跳保持,无需消息体,头部body_len=0,响应也一样

    Serv端会定时向没有活跃操操作的Cli发起此消息,后者收到后应当立即响应,以让Serv知道客户还在正常工作;如果一直无回复,Serv会主动断开连接。


10. REA广播

  • 请求命令字:CMD_BROADCAST_REQ 0x000A(10)
  • 响应命令字:CMD_BROADCAST_RSP 0x100A(4106)
  • 功能描述:Serv间用来同步各自所持cli信息和配置信息;譬如ServA有cli1,cli2,ServA与ServB,ServC直连,那个每隔一定时间(2min),ServA会广播出他持有cli1+cli2的消息
  • 请求示例: ```json { "ERA": "10:2:15412341234 12:3:15412341234 ", "CFGERA": { "app1-dev.json":[1, 15412341234], "app2-test.json":[0, 15412341234] },

    } ``` - 请求参数解释: |符号名称|解释| |-------|----| |ERA|cli的era版本列表[svrid:erano:atime],erano是cli每次属性改变加1,用此来同步各Serv的cli信息,atime是最后访问时间| |CFGERA|配置部分的同步{filename: [flag, mtime]},每个配置文件名为key,值是长度为2的数组,第1个元素代表是否删除,第2元素代表修改时间;往时间大的方向同步。| |*|另外还有路由控制字段,参见|

  • 响应示例:

    有异常时回复错误码;成功时不回复,而是可能触发其他行为,当发现cli有更新era版本时,触发CMD_CLIERA_REQ请求,当本地配置过旧时,触发CMD_HOCFGNEW_REQ请求。 json { "code": 400, "desc": "fail" }

  • 响应参数解释: |符号名称|解释| |-------|----| |code|结果码| |desc|错误描述|

- 消息路由控制

Serv支持分布式集群,每个Serv下有各自的Cli应用,那么如果控制用A这个Cli出发能顺利转发到B的Cli呢?Serv就需要有消息路由的功能,要具有此功能就要在消息体里添加一些字段来指示路由目标等信息,这里介绍这些路由控制字段的含义,路由目标用svrid指示。
+ from
发起者的svrid + to
发往目标的svrid + path
实际经过的路径;每走过一个Serv,发往下一跳Serv前把自己svrid加到最后。(由Serv生成的,请求时不要设置) + jump
经过的次数,每走过一个Serv,发往下一跳Serv前加1。(由Serv生成的,请求时不要设置) + refer_path
参考路径,组装消息时,可以提供个参考路线给下个Serv如何走;(目前忽略)

route-flow


11. 申请获取某Serv下的Cli数据

  • 请求命令字:CMD_CLIERA_REQ 0x000B(11)
  • 响应命令字:CMD_CLIERA_RSP 0x100B(4107)
  • 功能描述:这个请求是Serv发起,向另一Serv申请获取它下面连接的客户数据
  • 请求示例: json { "differa": "all" }
  • 请求参数解释: |符号名称|解释| |-------|----| |differa|不差异的cli ERASTR("3:2:15412341234 12:3:15412341234 "),或者"all"指要全部| |*|有路由控制字段,参见|

  • 响应示例: json { "datalen": 1, "data": [ { "ERAN": 3, "svrid": 101, "svrname": "app2" ... } ] }

  • 响应参数解释: |符号名称|解释| |-------|----| |datalen|返回cli的数量,和"data"列表里的元素个数一样| |data|cli的属性信息以键值对的方式呈现,各属性说明参考CMD_GETCLI_REQ中的响应说明; "ERAN"指客户属性era版本,变化一次加1。|

12. 测试请求

  • 请求命令字:CMD_TESTING_REQ 0x000C(12)
  • 响应命令字:CMD_TESTING_RSP 0x100C(4108)
  • 功能描述:测试用的,请忽略*

13. 广播Cli上线或属性变化

  • 请求命令字:CMD_UPDATEERA_REQ 0x000D(13)
  • 响应命令字:CMD_UPDATEERA_RSP 0x100D(4109)
  • 功能描述:当Cli属性发生变化,或者客户下线,所在的Serv将广播Cli上线或属性变化,通知其他Serv更新内存Cli信息
  • 请求示例: json { up:[ { "ERAN": 3, "svrid": 102, ... } ], down:[ 104, 105 ] }
  • 请求参数解释: |符号名称|解释| |-------|----| |up|在线的cli列表,列表里的内容是cli属性,各属性说明参考CMD_GETCLI_REQ中的响应说明; "ERAN"指客户属性era版本,变化一次加1| |down|下线的客户svrid列表| |*|有路由控制字段,参见|

  • 无响应


14. 查询分布式配置

  • 请求命令字:CMD_GETCONFIG_REQ 0x000E(14)
  • 响应命令字:CMD_GETCONFIG_RSP 0x100E(4110)
  • 功能描述:查询分布式配置
  • 请求示例: json { "file_pattern": "app1-dev.json", "key_pattern": "/", "incbase": 1, "gt_mtime": 154000999 }
  • 请求参数解释: |符号名称|解释| |-------|----| |file_pattern|配置文件名(必填)| |key_pattern|查询条件(键样式),"/"或""表示整个文件;查询json文件内某一部分时,用以斜线分隔每一级的key组成的字符串,详细参考配置章节| |incbase|是否启动继承组合详细参考配置章节| |gt_mtime|文件修改时间,可选,如果有传递,则当服务端上该file_pattern对应的修改时间不大于gt_mtime时,响应返回“1”,否则响应查询结果|

  • 响应示例: json { "code":0, "mtime": 154000999, "file_pattern": "app1-dev.json", "contents": {... 文件内存 ...} }

  • 响应参数解释: |符号名称|解释| |-------|----| |code|结果码,0代表成功(必填)| |desc|错误描述,当code!=0时会附带出现| |mtime|当contents有内容时,mtime代表文件最后的修改时间| |file_pattern|配置文件名| |contents|查询结果|

15. 修改分布式配置

  • 请求命令字:CMD_SETCONFIG_REQ 0x000F(15)
  • 响应命令字:CMD_SETCONFIG_RSP 0x100F(4111)
  • 功能描述:修改分布式配置,目前是文件级的修改
  • 请求示例: json { "filename": "abc.json", "mtime": 154000999, "contents": {.. 文件内容 ..} }
  • 请求参数解释: |符号名称|解释| |-------|----| |filename|文件名(必填)| |mtime|修改时的timestamp,不传时使用Serv当前时间| |contents|文件内容,目前只接收json格式的配置|

  • 响应示例: json { "code":0, "desc": "success", "mtime": 154000999 }

  • 响应参数解释: |符号名称|解释| |-------|----| |code|结果码,0代表成功(必填)| |desc|错误描述,当code!=0时会附带出现| |mtime|修改时间,如果请求有传,这个会相同|

16. 列出所有配置文件

  • 请求命令字:CMD_GETCFGNAME_REQ 0x0010(16)
  • 响应命令字:CMD_GETCFGNAME_RSP 0x1010(4112)
  • 功能描述:列出所有配置文件,一般web端用来展示配置列表
  • 请求: 无需包体

  • 响应示例: ```json { $file1: [1, $mtime1], $file2: [0, mtime2] }

``` - 响应参数解释: |符号名称|解释| |-------|----| |$file1|文件名,后面对应的值是2元素列表,第1个值文件是否存在(0被删了,1存在),第2个值是修改时间时间截|


17. Serv间同步配置文件

  • 请求命令字:CMD_HOCFGNEW_REQ 0x0011(17)
  • 响应命令字:CMD_HOCFGNEW_RSP 0x1011(4113)
  • 功能描述:当Serv广播自身ERA时,收到广播的Serv如果内存的配置较旧,则发起这个请求申请源Serv把新配置推给我;推送不在CMD_HOCFGNEW_RSP推送,而是用CMD_SETCONFIG2_REQ消息
  • 请求示例: json { "data": [ "app1-dev.json", "app2-test.json" ] }
  • 请求参数解释: |符号名称|解释| |-------|----| |data|配置文件名字符串列表|

  • 响应示例: json { "code":0, "desc": "success" }

  • 响应参数解释: |符号名称|解释| |-------|----| |code|结果码,0代表成功(必填)| |desc|错误描述|

18. 推送配置文件数据

  • 请求命令字:CMD_SETCONFIG2_REQ 0x0012(18)
  • 响应命令字:无
  • 功能描述:由Serv端推送发出配置更新,请求格式和CMD_SETCONFIG_REQ一样,多个了callby字段
  • 请求示例: json { "callby": "cfg_newer" }
  • 请求参数解释: |符号名称|解释| |-------|----| |callby|"cfg_newer"固定| |*|有路由控制字段,参见|

  • 响应:无


19. 广播推送新修改的配置文件

  • 请求命令字:CMD_SETCONFIG3_REQ 0x0013(19)
  • 响应命令字:无
  • 功能描述:用户修改配置,直接Serv收到CMD_SETCONFIG_REQ请求后保存文件,并使用CMD_SETCONFIG3_REQ命令字广播给其他Serv。请求格式和CMD_SETCONFIG_REQ一样,多个了callby字段
  • 请求示例: json { "callby": "setall", ... }
  • 请求参数解释: |符号名称|解释| |-------|----| |callby|"setall"固定| |*|有路由控制字段,参见|

  • 响应:无


20. 订阅配置改变通知

  • 请求命令字:CMD_BOOKCFGCHANGE_REQ 0x0014(20)
  • 响应命令字:CMD_BOOKCFGCHANGE_RSP 0x1014(4116)
  • 功能描述:客户应用订阅配置改变,有改变时通过CMD_EVNOTIFY_REQ通知
  • 请求示例: json { "file_pattern": "app1-dev.json", "incbase": 1 }
  • 请求参数解释: |符号名称|解释| |-------|----| |file_pattern|配置文件名(必填)| |incbase|是否匹配配置继承,默认0|

  • 响应示例: json { "code":0, "desc": "success" }

  • 响应参数解释: |符号名称|解释| |-------|----| |code|结果码,0代表成功(必填)| |desc|错误描述,当code!=0时会附带出现|

21. 通知app事件

  • 请求命令字:CMD_EVNOTIFY_REQ 0x0015(21)
  • 响应命令字:CMD_EVNOTIFY_RSP 0x1015(4117)
  • 功能描述:当服务端发生一些事件时,会主动通知到cli
  • 请求示例: json { "notify": "cfg_change" }
  • 请求参数解释: |符号名称|解释| |-------|----| |notify|通知的名字:cfg_change指配置改变,provider_down指报务提供者下线,还可以是cli间相互约定名称,约定参数来使用| |filename|notify==cfg_change时表示变化的文件名| |mtime|notify==cfg_change时表示变化的时间| |svrid|notify==provider_down时表示下线的客户svrid| |prvdid|notify==provider_down时表示下线的客户服务提供的prvdid| |regname|notify==provider_down时表示下线或禁用的服务提供者名称| |*|有路由控制字段,参见|

  • 响应示例: json { "code": 0, "notify_r": "cfg_change" }

  • 响应参数解释: |符号名称|解释| |-------|----| |code|结果码,0代表成功(必填)| |notify_r|对应的notify通知名|

22. 服务Provider注册

  • 请求命令字:CMD_SVRREGISTER_REQ 0x0016(22)
  • 响应命令字:CMD_SVRREGISTER_RSP 0x1016(4118)
  • 功能描述:服务注册,客户应用cli要请求注册后才能成为服务提供者,注册时提供本服务的信息
  • 请求示例: json { "regname": "prvdname", "svrprop": { "prvdid": 1, "url": "tcp://192.168.1.101", "desc": "service description", "protocol": 1, "version": 1, "weight": 100, "enable": 1 } }
  • 请求参数解释: |符号名称|解释| |-------|----| |regname|服务名(必填)| |prvdid|编号,默认0,当一个进程提供多个服务时使用| |desc|服务描述| |url|服务所在地址| |protocol|tcp=1 udp=2 http=3 https=4| |version|版本,不填时忽略版本匹配| |weight|服务权重| |enable|是否启用本服务| |idc|机房号,一般不填,在元配置里配置机房| |rack|机柜号,一般不填,在元配置里配置柜房|

  • 响应示例: json { "code":0, "desc": "reg xxx result" }

  • 响应参数解释: |符号名称|解释| |-------|----| |code|结果码,0代表成功(必填)| |desc|错误描述|

23. 推送服务注册信息给其他Serv

  • 请求命令字:CMD_SVRREGISTER2_REQ 0x0017(23)
  • 响应命令字:CMD_SVRREGISTER_RSP 0x1017(4119)
  • 功能描述:Serv间用来推送服务注册请求给其他Serv。
  • 请求解释:参数和命令字CMD_SVRREGISTER_REQ参数一样,多了个svrid参数。 上面的CMD_SVRREGISTER_REQ请求不能带svrid |符号名称|解释| |-------|----| |svrid|服务注册都所在的客户应用svrid;|

  • 响应:同CMD_SVRREGISTER_RSP一样。


24. 服务发现(查询)

  • 请求命令字:CMD_SVRSEARCH_REQ 0x0018(24)
  • 响应命令字:CMD_SVRSEARCH_RSP 0x1018(4120)
  • 功能描述:服务发现(查询)已经注册且在线的服务,返回服务列表
  • 请求示例: json { "regname": "app1", "version": 1, "bookchange": 1 }
  • 请求参数解释: |符号名称|解释| |-------|----| |regname|服务名(必填)| |version|版本号,不指定时忽略| |bookchange|1时订阅服务提供者下线的事件,0不订阅,默认0| |idc|机房号,一般不填,在元配置里配置机房| |rack|机柜号,一般不填,在元配置里配置柜房|

  • 响应示例: json { "desc": "total resp 1 providers", "code": 0, "count": 1, "data": [{ "regname": "app1", "url": "tcp://127.0.0.1:5478", "desc": "", "svrid": 2002, "prvdid": 1, "pvd_ok": 0, "pvd_ng": 0, "protocol": 1, "version": 0, "weight": 202, "idc": 200, "rack": 0, "enable": 1 }] }

  • 响应参数解释: |符号名称|解释| |-------|----| |code|结果码,0代表成功(必填)| |desc|错误描述,当code!=0时会附带出现| |data| 服务提供者信息列表,其中服务提供者含有的属性同注册时定义|

25. 列出所有服务

  • 请求命令字:CMD_SVRSHOW_REQ 0x0019(25)
  • 响应命令字:CMD_SVRSHOW_RSP 0x1019(4121)
  • 功能描述:列出所有服务
  • 请求示例: json {"regname": "all"}
  • 请求参数解释: |符号名称|解释| |-------|----| |regname|为all或空时返回所有服务不管名字;如果指定了服务名,则只返回指定的服务列表|

  • 响应示例: json { "len": 3, "data": { "THttpPrvd": [], "TestPrvd": [{ "regname": "TestPrvd", "url": "tcp://127.0.0.1:5478", "desc": "", "svrid": 2002, "prvdid": 1, "pvd_ok": 0, "pvd_ng": 0, "protocol": 1, "version": 0, "weight": 100, "idc": 200, "rack": 0, "enable": 1 }], "httpApp1": [] } }

  • 响应参数解释: |符号名称|解释| |-------|----| |len|返回服务提供都的数量| |data|是一个以服务名为键,服务提供者信息列表为值的映射,上面的示例中THttpPrvd TestPrvd httpApp1均是服务名,服务提供者含有的属性同注册时定义|

26. 查询客户应用运行时输出日志

  • 请求命令字:CMD_APPRUNLOG_REQ 0x001A(26)
  • 响应命令字:CMD_APPRUNLOG_RSP 0x101A(4122)
  • 功能描述:保留,未实现
  • 请求示例: json {"svrid": 123}
  • 请求参数解释: |符号名称|解释| |-------|----| |svrid|要查询的目标svrid|

27. 默认的tcp微服务请求处理方法

  • 请求命令字:CMD_TCP_SVR_REQ 0x001B(27)
  • 响应命令字:CMD_TCP_SVR_RSP 0x101B(4123)
  • 功能描述:默认的tcp微服务请求处理方法, 消息具体含义根据实际项目自行约定,tcp服务提供者开发可参考产品自带sample_示例

28. 服务治理上报统计信息

  • 请求命令字:CMD_SVRSTAT_REQ 0x001C(28)
  • 响应命令字:CMD_SVRSTAT_RSP 0x101C(4124)
  • 功能描述:服务提供/消费业务处理过程,成功还是失败,客户端可以进行统计并定时上报统计信息给到服务端,Serv会收集汇总
  • 请求示例: json { "regname": "app1", "svrid": 123, "prvdid": 0, "pvd_ok": 1, "pvd_ng": 1, "ivk_ok": 0, "ivk_ng": 0, "ivk_dok": 0, "ivk_dng": 0 }
  • 请求参数解释: |符号名称|解释| |-------|----| |regname|本次上报的服务名(必填)| |svrid|消费者上报某个服务状况时才需要,是搭配ivk_dok&ivk_dng一起的| |prvdid|提供者序号,和svrid同时出现| |pvd_ok|regname服务提供者成功提供服务的累计次数| |pvd_ng|regname服务提供者处理失败的累计次数| |ivk_ok|服务消费者成功调用regname服务的累计次数| |ivk_ng|服务消费者失败调用regname服务的累计次数| |ivk_dok|一段时间内调用到某个提供者(即svrid+prvd+regname)的成功次数,本次请求完成后应当清0,再在下一段时间内统计增量,以此类推地进行| |ivk_dng|类似ivk_dok,这里只是失败增量次数|

  • 响应:无


29. web请求通告命令

  • 请求命令字:CMD_WEBCTRL_REQ 0x001D(29)
  • 响应命令字:CMD_WEBCTRL_RSP 0x101D(4125)
  • 功能描述:现在不用;本来是想用来让web上发命令到cli通过此命令的,后来发现与CMD_EVNOTIFY_REQ有很多同样的处理,所以合并了,这个命令就没用了。