smallnest / rpcx

Best microservices framework in Go, like alibaba Dubbo, but with more features, Scale easily. Try it. Test it. If you feel it's better, use it! 𝐉𝐚𝐯𝐚有𝐝𝐮𝐛𝐛𝐨, 𝐆𝐨𝐥𝐚𝐧𝐠有𝐫𝐩𝐜𝐱! build for cloud!
https://rpcx.io
Other
8.1k stars 1.17k forks source link

provide cross-language clients #93

Closed smallnest closed 7 years ago

smallnest commented 7 years ago

有些公司可能正在使用 Weibo Motan 做开发。rpcx可以提供相关的插件,将自己的服务注册在Motan支持的Registry上, Motan java client可以和rpcx实现的服务交互 (通过JSON或者protobuf格式)。

这个feature不保证实现。目前我在做一些调研,主要看有没有强烈的需求和实现难度。

visolleon commented 7 years ago

希望尽早提供跨语言支持,毕竟目前做GO的开发人员不多,很多都在游戏界;很多公司因为研发的历史原因不能很快地将现有所有的平台修改成Go,虽然RPCX性能不错,但最终可能因为这些原因导致放弃的;所以提供跨语言还是非常有必要的。

smallnest commented 7 years ago

谢谢。

我正在调研Motan的调研,并且有了初步的结果,希望能尽早的和Motan集成。

另外一种方案是直接提供一个Java的客户端。

visolleon commented 7 years ago

希望能尽快支持Java、C#和PHP、NodeJS等的客户端支持,我这边正在寻找合适的RPC框架,目前觉得Thrift比较合适,不过我比较偏爱Go,所以希望RPCX这个框架能迅速发展。

smallnest commented 7 years ago

考虑到各种跨平台的功能,倾向于用gRPC实现一个agent,各种语言通过gRPC发送给agent, agent通过rpcx发送给rpcx service。

agent部署在客户端本机上。

clientA --------AgentA-
                             |
......          AgentX | ---------> RPCX Services
                             |
clientZ--------AhentZ |

从性能上来讲,clientX 与AgentX之间通过gRPC在本地通讯,性能没有问题。 Agent和rpcx services之间通过rpcx通讯,性能也没有问题。些许的性能损耗主要花在中间代理上面。

Agent相当于一个中间代理人。上游支持各种语言,下游与rpcx通讯。 架构简单,跨平台(win/linux/mac)和语言。

walnut-tom commented 7 years ago

增加agent会增加运维成本

smallnest commented 7 years ago

没错,但这也是最快实现跨语言的方式之一。 我增加了一个试验性的项目: https://github.com/smallnest/rpcx-agent

smallnest commented 7 years ago

相关的讨论移至 https://github.com/smallnest/rpcx-agent