brpc icon indicating copy to clipboard operation
brpc copied to clipboard

支持bRPC网关转发baidu协议请求的功能

Open chenBright opened this issue 2 years ago • 7 comments

Is your feature request related to a problem? (你需要的功能是否与某个问题有关?)

目前brpc框架不支持bRPC网关服务高效地转发baidu协议的请求——只反序列化meta部分,直接转发payload,无需反序列化payload。

Describe the solution you'd like (描述你期望的解决方法)

  1. baidu协议实现类似http_master_service的功能,接管所有baidu协议流量。同时,http_master_service可用于多语言接入bRPC服务场景。
  2. baidu协议meta中支持用户自定义字段(kv),用于传递upstream信息、路由信息等。
  3. 支持baidu协议泛化调用,payload支持pb序列化数据,网关服务可以不受服务端pb的限制(#1385 中有相关咨询)。同时,扩展payload以支持其他序列化数据(例如json),网关具备了多语言接入brpc服务的能力了。

Describe alternatives you've considered (描述你想到的折衷方案)

Additional context/screenshots (更多上下文/截图)

chenBright avatar Oct 09 '23 16:10 chenBright

#2406 实现baidu协议meta中传递用户自定义字段的特性

chenBright avatar Oct 09 '23 16:10 chenBright

related issue: #1444

wwbmmm avatar Oct 13 '23 02:10 wwbmmm

功能3的意思是用户可以不用pb协议,使用其它类型协议也可以是吗?c++客户端到服务端直接这样可以吗?中间不用加一层代理。

yanglimingcn avatar May 31 '24 00:05 yanglimingcn

用户可以不用pb协议,使用其它类型协议也可以是吗?

要求能跟pb互转,例如json。

c++客户端到服务端直接这样可以吗?

可以的。HTTP body类似。

chenBright avatar May 31 '24 01:05 chenBright

为啥需要和pb互转呢?我理解这个过程bRPC完全透传了用户的消息,不用做任何处理,就类似attachment。 bRPC只处理baidu_std这层协议使用的是pb。

yanglimingcn avatar Jun 01 '24 11:06 yanglimingcn

嗯嗯,网关只转发baidu协议请求的话,是不需要json、pb互转的。

扩展一下,网关要支持多语言(php、nodejs、python等)接入baidu-std的brpc服务的话,client的payload一般使用json,网关负责服务发现和转发payload,brpc服务需要支持json、pb互转的能力。

chenBright avatar Jun 11 '24 03:06 chenBright

稍微修改了一下原来的描述。

chenBright avatar Jun 11 '24 03:06 chenBright

  1. #2406:支持baidu-std meta中传递用户自定义字段的特性。
  2. #2629:支持BaiduMasterService和泛化调用。
  3. #2946:支持baidu-std多格式payload。

chenBright avatar Apr 21 '25 02:04 chenBright