如何连接分布式 Go 应用程序?

Posted

技术标签:

【中文标题】如何连接分布式 Go 应用程序?【英文标题】:How to connect distributed Go apps? 【发布时间】:2017-01-23 15:55:22 【问题描述】:

我有两个 Go 应用程序在不同的机器上运行。 我希望他们以原生快速的方式相互交流。

我怎样才能做得更好?我使用 Erlang 并发现它在那里的实现方式非常方便。

Go 应用程序之间的首选通信方式是什么?

【问题讨论】:

你可以使用像 RabbitMQ 这样的队列。 Google 还发布了一个名为 gRPC 的项目,您可能会喜欢。 "net/rpc","net/rpc/jsonrpc",gRPC,纯 HTTP,通过消息队列异步,任你选择。 您可以创建简单的 api 用于在您的应用程序之间进行对话。 【参考方案1】:

net/rpc - 开箱即用且快速

gRPC - 快速且通用(imo 是要走的路)

net/rpc/jsonrpc - 当您需要人类可读的消息或想要集成时很好 使用客户端 js 代码

plain HTTP - go 程序之间的通信过度杀伤力,您必须自己计划路由和数据编码,这是不必要的努力

消息队列 - 有点慢的方法,但您可以从它们提供的高级路由和持久性中受益

【讨论】:

以上是关于如何连接分布式 Go 应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

GO语言操作Kafka

一天一门编程语言Go 语言程序设计极简教程

8.Go语言高并发与微服务实战 --- 分布式配置中心

如何在 Go 中创建 WebSocket 应用程序

浅试Hyperledger Fabric go 小项目之应用应用代码

client-go连接kubernetes集群-create