我知道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
它也非常快,每秒钟
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的同一个人写的。
两者都很好,具体取决于您的用例。该博客对性能进行了很好的比较。