Akka或Golang支持分布式并发的替代方案



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

如果要在分布式程序中使用GO的频道概念,也许请查看GO电路框架。

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

无需在此处重新发明轮子...生产者/消费者应用程序通常是使用消息队列构建的。

使用这种方法,您应该尝试将问题分解为小(理想情况下是愿意的)任务,构建一个可以加入这些任务的应用程序,然后拥有另一个可以脱离这些任务并执行这些任务的工人应用程序。缩放很容易:只需添加更多的工人即可。

那里有很多排队的解决方案,因为写的一个很好的解决方案请看一下NSQ。

迟到了两年,但如果其他人正在寻找。https://github.com/asynkronit/gam

gam(Go Actor模型)都支持像演员一样的Akka,也支持像Virtual Grains这样的Orleans。Orleans(如虚拟晶粒)通过Protobuf代码生成支持,为您提供键入的消息和类型的谷物类型。看https://github.com/asynkronit/gam/blob/dev/examples/cluster/member/main.gohttps://github.com/asynkronit/gam/blob/dev/examples/cluster/shared/protos.proto

它也非常快,每秒钟

100万 远程消息

akka基于Actor模型。为此,我邀请您测试一个不错的GO框架:https://github.com/asynkronit/protoactor-go

据说它具有出色的性能,因为它声称在节点之间通过:

每秒200万条消息

虽然GO已经使用CSP实现,但原始分子添加:

  • 脱钩并发
  • 默认分配
  • 容错

仅用于记录NAT是分布式系统的高性能解决方案。它是开源的,并在MIT许可下。"核心NATS服务器充当构建分布式应用程序的中枢神经系统。"它具有GO,C#,Java,Ruby,Python,Node.js等的官方客户。

提供了更多信息。

这样一个旧的问题,但我会检查DAPR和原始骨架。

dapr更灵活,但可以采用边缘模式。

protocactor更像是Akka是由制作Akka.net的同一个人写的。

两者都很好,具体取决于您的用例。该博客对性能进行了很好的比较。

最新更新