如何把 http 请求转成对应的 rpc 请求。

2021-07-14 10:31:33 +08:00
 hejw19970413
  1. 所有的对外接口都是用 pd 来定义的,能不能在网关这一层做协议的转换
  2. 如果可以做转换,那么是手写还是程序自动转换还是说只能生成模版文件降低人工

想了几种办法,还是思路不是很清晰,各位大佬给个思路呗。。。

4489 次点击
所在节点    程序员
25 条回复
qW7bo2FbzbC0
2021-07-14 10:35:59 +08:00
rpc 包含 http,你说的那种是不是 grpc,dubbo 那种?把 http 请求包一包不就是本地方法了吗,只是序列化与传输方式不同而已
vchroc
2021-07-14 10:38:48 +08:00
关键词:泛化调用
hejw19970413
2021-07-14 10:50:51 +08:00
确实是 grpc 主要的问题就是用 pd 定义后,走后面的服务请求需要 pd 文件内的已经定义的数据格式,如果程序自动获取好像自动获取不到。。
renyijiu
2021-07-14 10:53:27 +08:00
Cy1
2021-07-14 11:09:24 +08:00
pd 是啥。。
hejw19970413
2021-07-14 11:15:34 +08:00
@renyijiu 感谢感谢,我去好好看看
hejw19970413
2021-07-14 11:16:07 +08:00
@Cy1 一种数据传输格式,跟 json 和 xml 是一类产品
Cy1
2021-07-14 11:23:21 +08:00
你说的怕不是 pb,protobuf ?
hejw19970413
2021-07-14 11:24:34 +08:00
@Cy1
Cy1
2021-07-14 11:26:19 +08:00
我们内部是在 SpringMVC 是基础上做的,做一个特定路径如 '/url' 的 MappingHandler,
在这个 handler 里面做自己的 pb 分发,rpc 也是这样做的
hejw19970413
2021-07-14 11:29:48 +08:00
@Cy1 每加一个路由都是自己做的转发是吗?
Cy1
2021-07-14 11:53:53 +08:00
自己定义一套类似于 @RestController,@RequestMapping 的 @MessageController,@MessageMapping,然后一个 SpringMVC 的一个特定的 HandlerMethod 内实现类似于 SpringMVC 的整个链路的流程,参考 SpringMVC 里面 HandlerMapping,HandlerChain,HandlerAdapter 的设计,做好自己的分发以及 Request,Response 的 pb 的序列化和反序列化就行。
最终用起来的效果类似于这样
@MessageMapping(PBMessageType.ADMIN_RESET_PASSWORD)
PBAdmin resetPassword(PBResetAdminPasswordReq req) {
......
}
cloverstd
2021-07-14 12:47:45 +08:00
Judoon
2021-07-14 13:01:13 +08:00
http://apisix.apache.org/
直接上全能型网关
labulaka521
2021-07-14 16:28:39 +08:00
我们这里使用 envoy 来实现的 内部是 grpc 通信,外部进来通过 envoy 转
hejw19970413
2021-07-14 17:33:12 +08:00
其实是有些定制化的需要,更想要的是一种插件的式的协议转换,现在就是两种选择,第一种就是网关自己写对前端请求的粗力度的接口,然后根据不同的业务线进行拆分成不同的网关。第二种就用一些常见的网关系统对请求进行二次的下沉。所以想找找别人的网关是怎么做的。。。
Lonenso
2021-07-14 19:20:48 +08:00
jsonrpc
young1lin
2021-07-14 19:25:02 +08:00
你对 RPC 有个错误的认知了吧? RPC 全称 Remote procedure call,其实现,HTTP 、gRPC 都是可以的啊
wm5d8b
2021-07-15 07:03:47 +08:00
HTTP/2+protobuf,和 grpc 在通信效率上有哪些差异?
hejw19970413
2021-07-15 10:11:26 +08:00
@wm5d8b 额,可能我没太说明白,当前的场景是 用 grpc 框架 从前端到网关这里是 http1.1 那么从网关到最终的服务都是使用的 grpc,所以这里就是 从 http1.1 到 rpc 的

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/789425

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX