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

编译型语言线上如何验证 对端 rpc 接口的准确性

  •  
  •   wangwangleilei · 2018-03-29 23:13:37 +08:00 · 2135 次点击
    这是一个创建于 2217 天前的主题,其中的信息可能已经有所发展或是发生改变。

    像 python 这种语言,可以开 repl ( language shell )来调用对端的 rpc 接口(这里不包括 http 接口)看返回的值是否正确。但是像 go 这种编译型语言该怎么做呢?部署的时候 go 的程序只是一个二进制文件,跑在容器中,也没有 go 的环境和源码(把 go 环境放到容器中浪费,生产环境一定不会这么做)

    编译型语言应该都有这样的问题吧,想请教一下各位大佬都是怎么做的。

    8 条回复    2018-03-30 14:45:41 +08:00
    exch4nge
        1
    exch4nge  
       2018-03-30 07:33:06 +08:00
    ??? 不管哪个语言不得写调用 rpc 接口的代码吗? 区别是

    ( repl 里)写代码 --> 看结果 --> 不对就调整代码 --> 看结果 ...
    go 语言 写代码 --> 编译 --> 执行 --> 看结果 --> 不对就调整代码 --> 编译 --> 执行 --> 看结果 ...
    goofool
        2
    goofool  
       2018-03-30 08:29:36 +08:00 via Android
    成熟的框架都有不同语言的实现,用 go 写,python 测就行了呗
    BBCCBB
        3
    BBCCBB  
       2018-03-30 09:15:37 +08:00
    契约测试? 没实践过....
    Immortal
        4
    Immortal  
       2018-03-30 09:45:08 +08:00
    写个对应协议的客户端来测试不就好了,服务端有封包解包的代码了,客户端直接拿来就能用。

    顺路问下“把 go 环境放到容器中浪费,生产环境一定不会这么做”这个是怎么考虑的。。你这样把一堆微服务全给打死了
    wangwangleilei
        5
    wangwangleilei  
    OP
       2018-03-30 10:22:56 +08:00
    @Immortal 线上发布的是可执行程序,要 go 的环境做什么
    Immortal
        6
    Immortal  
       2018-03-30 11:04:44 +08:00
    @wangwangleilei 额 是我看错了 我以为你的意思是“ go 程序不需要放在容器中”,抱歉
    zhangysh1995
        7
    zhangysh1995  
       2018-03-30 12:40:03 +08:00
    emmm Java 不是编译行的吗? RMI 好好的。。
    noli
        8
    noli  
       2018-03-30 14:45:41 +08:00
    跟是不是编译型语言没有关系,跟有没有 API 元信息有关系。
    譬如 C#,CIL 里面自带任何函数、任何类的元信息,并且可以串行化,就可以验证 RPC 调用是契合,甚至版本是否正确。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   982 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:55 · PVG 04:55 · LAX 13:55 · JFK 16:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.