支持bRPC网关转发baidu协议请求的功能
Is your feature request related to a problem? (你需要的功能是否与某个问题有关?)
目前brpc框架不支持bRPC网关服务高效地转发baidu协议的请求——只反序列化meta部分,直接转发payload,无需反序列化payload。
Describe the solution you'd like (描述你期望的解决方法)
- baidu协议实现类似http_master_service的功能,接管所有baidu协议流量。同时,http_master_service可用于多语言接入bRPC服务场景。
- baidu协议meta中支持用户自定义字段(kv),用于传递upstream信息、路由信息等。
- 支持baidu协议泛化调用,payload支持pb序列化数据,网关服务可以不受服务端pb的限制(#1385 中有相关咨询)。同时,扩展payload以支持其他序列化数据(例如json),网关具备了多语言接入brpc服务的能力了。
Describe alternatives you've considered (描述你想到的折衷方案)
Additional context/screenshots (更多上下文/截图)
#2406 实现baidu协议meta中传递用户自定义字段的特性
related issue: #1444
功能3的意思是用户可以不用pb协议,使用其它类型协议也可以是吗?c++客户端到服务端直接这样可以吗?中间不用加一层代理。
用户可以不用pb协议,使用其它类型协议也可以是吗?
要求能跟pb互转,例如json。
c++客户端到服务端直接这样可以吗?
可以的。HTTP body类似。
为啥需要和pb互转呢?我理解这个过程bRPC完全透传了用户的消息,不用做任何处理,就类似attachment。 bRPC只处理baidu_std这层协议使用的是pb。
嗯嗯,网关只转发baidu协议请求的话,是不需要json、pb互转的。
扩展一下,网关要支持多语言(php、nodejs、python等)接入baidu-std的brpc服务的话,client的payload一般使用json,网关负责服务发现和转发payload,brpc服务需要支持json、pb互转的能力。
稍微修改了一下原来的描述。
- #2406:支持baidu-std meta中传递用户自定义字段的特性。
- #2629:支持BaiduMasterService和泛化调用。
- #2946:支持baidu-std多格式payload。