Подтвердить что ты не робот

Akka или аналогичная альтернатива для golang для поддержки распределенных concurrency?

Я знаю, что golang очень хорош в concurrency с его встроенной поддержкой, но мне кажется, что они не распространяются, поэтому какова будет структура/библиотека, чтобы мы могли писать приложения производителей/потребителей в распределенной среде.

4b9b3361

Ответ 1

Если вы хотите использовать концепции канала Go в распределенной программе, возможно, ознакомьтесь с рамкой Go Circuit.

Он обеспечивает платформу для запуска многопроцессорных программ (возможно, распространяется на несколько компьютеров), позволяя вам использовать каналы для связи между этими процессами.

Ответ 2

Нет необходимости изобретать колесо здесь... производитель/потребительские приложения обычно строятся с использованием очереди сообщений.

При таком подходе вы должны попытаться разбить свою проблему на небольшие (и идеально идемпотентные) задачи, создать приложение, которое может вставить в очередь эти задачи, а затем иметь другое рабочее приложение, которое может деактивировать эти задачи и выполнить их. Масштабирование легко: просто добавьте больше работников.

Есть много решений для массового обслуживания, потому что очень хороший, написанный в Go, взгляните на NSQ.

Ответ 3

Два года поздно, но если кто-то еще смотрит. https://github.com/AsynkronIT/gam

GAM (Go Actor Model) поддерживает как акковских актеров, так и г-жа Орлеан, как виртуальные зерна. Ms Orleans, такие как Virtual Grains, поддерживаются с помощью генерации кода Protobuf, чтобы дать вам типизированные сообщения и типизированные типы зерна. Видеть 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 мил + удаленные сообщения в секунду.

Ответ 4

Только для записи NATS - это высокопроизводительное решение для распределенных систем. Он с открытым исходным кодом и под MIT. "Основной сервер NATS действует как центральная нервная система для создания распределенных приложений". и у него есть официальные клиенты для Go, С#, Java, Ruby, Python, Node.js и многое другое, предоставляемые сообществом.