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

2018-03-29 23:13:37 +08:00
 wangwangleilei

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

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

2289 次点击
所在节点    程序员
8 条回复
exch4nge
2018-03-30 07:33:06 +08:00
??? 不管哪个语言不得写调用 rpc 接口的代码吗? 区别是

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

顺路问下“把 go 环境放到容器中浪费,生产环境一定不会这么做”这个是怎么考虑的。。你这样把一堆微服务全给打死了
wangwangleilei
2018-03-30 10:22:56 +08:00
@Immortal 线上发布的是可执行程序,要 go 的环境做什么
Immortal
2018-03-30 11:04:44 +08:00
@wangwangleilei 额 是我看错了 我以为你的意思是“ go 程序不需要放在容器中”,抱歉
zhangysh1995
2018-03-30 12:40:03 +08:00
emmm Java 不是编译行的吗? RMI 好好的。。
noli
2018-03-30 14:45:41 +08:00
跟是不是编译型语言没有关系,跟有没有 API 元信息有关系。
譬如 C#,CIL 里面自带任何函数、任何类的元信息,并且可以串行化,就可以验证 RPC 调用是契合,甚至版本是否正确。

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

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

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

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

© 2021 V2EX