akka或golang的类似替代方案支持分布式并发?

时间:2014-02-01 04:42:13

标签: go distributed-computing

我知道golang在内置支持方面非常擅长并发,但在我看来它们并不是分布式的,所以框架/库允许我们在分布式环境中编写生产者/消费者应用程序。 / p>

5 个答案:

答案 0 :(得分:24)

如果您想在分布式程序中使用Go的通道概念,可以查看Go Circuit框架。

它提供了一个运行多进程程序的框架(可能分布在多台机器上),允许您使用通道在这些进程之间进行通信。

答案 1 :(得分:10)

这里不需要重新发明轮子......生产者/消费者应用程序通常使用消息队列构建。

使用这种方法,您应该尝试将问题分解为小的(理想情况下是幂等的)任务,构建可以排队这些任务的应用程序,然后使用另一个可以将这些任务出列并执行它们的工作程序。扩展很简单:只需添加更多工作人员。

那里有许多排队解决方案,一个用Go写的非常好的解决方案,看看NSQ

答案 2 :(得分:6)

迟到两年但是如果有人在寻找。 https://github.com/AsynkronIT/gam

GAM(Go Actor Model)支持像演员一样的Akka,以及像Virtual Grains这样的奥尔良女士。 通过Protobuf代码生成支持像Orleans这样的Orleans女士,为您提供键入的消息和类型化的谷物类型。 看到 https://github.com/AsynkronIT/gam/blob/dev/examples/cluster/member/main.go https://github.com/AsynkronIT/gam/blob/dev/examples/cluster/shared/protos.proto

它也非常快,每秒1 mil +远程消息。

答案 3 :(得分:2)

仅为记录NATS是分布式系统的高性能解决方案。它是开源的并且在MIT许可下。 “核心NATS服务器充当了构建分布式应用程序的中枢神经系统。”它有Go,C#,Java,Ruby,Python,Node.js的官方clients以及社区提供的更多内容。

答案 4 :(得分:1)

Akka基于Actor模型。为此,我邀请您进行测试:https://github.com/AsynkronIT/protoactor-go

据称它具有很好的性能,因为它声称在节点之间传递:

  

每秒200万条消息

虽然Go已经使用CSP实现,但Protoactor补充道:

  • Decoupled Concurrency
  • 默认分发
  • 容错