通过网络分发的通道传递切片和地图结构的最佳方法是什么?我需要分发运行在几个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
请告诉我。谢谢!
答案 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使用通道进行通信的方式相同。