V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hejw19970413
V2EX  ›  程序员

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

  •  1
     
  •   hejw19970413 · 102 天前 · 2539 次点击
    这是一个创建于 102 天前的主题,其中的信息可能已经有所发展或是发生改变。
    1. 所有的对外接口都是用 pd 来定义的,能不能在网关这一层做协议的转换
    2. 如果可以做转换,那么是手写还是程序自动转换还是说只能生成模版文件降低人工

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

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

    有现成的方案,你可以看看 java 版本有没有
    jinzhongyuan
        23
    jinzhongyuan   101 天前
    @Cy1 他这个简称,是业界统一的吗??
    Cy1
        24
    Cy1   100 天前
    @jinzhongyuan 什么简称
    NCE
        25
    NCE   97 天前
    网上有现成的方案吧? gg 下 gateway rpc
    关于   ·   帮助文档   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1230 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 18ms · UTC 17:52 · PVG 01:52 · LAX 10:52 · JFK 13:52
    ♥ Do have faith in what you're doing.