通过地图,切片通道和网络?

时间:2014-11-29 10:33:42

标签: go channel distributed-system

通过网络分发的通道传递切片和地图结构的最佳方法是什么?我需要分发运行在几个EC2个实例上的应用程序,并想知道如何通过Go通道传达每个应用程序来实现这一点。

以下是我想要运行的工作流程:

1. Process data in one application
2. Distribute the data into 10 replica applications
3. Each 10 application does its job in a separate EC2 instance
4. Once they are all done, they send the result back to the original program
5. This is sent over the channel

请告诉我。谢谢!

1 个答案:

答案 0 :(得分:1)

如果取决于您为序列化选择的格式。

一个非常适合网络通信的是MessagePack(一种有效的二进制序列化格式。它允许您在多种语言之间交换数据,如JSON。但它更快更小)

philhofer/msgp这样的Go库可以序列化任何结构(like one with a map),包括地图和数组等composite types

但是,它使用Go1.4 go generate command。 (去1.4rc1已经出局)

从那里,像docker/libchan这样的库可以提供帮助:Libchan是一个超轻量级的网络库,它使网络服务的通信方式与goroutines使用通道进行通信的方式相同。