2014-11-29 5 views
2

네트워크를 통해 배포되는 채널을 통해 조각 및지도 구조를 전달하는 가장 좋은 방법은 무엇입니까? 여러 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

이 형식은 직렬화를 위해 선택한 형식에 따라 다릅니다.

하나에 적합 네트워크를 통한 통신입니다 MessagePack (효율적인 바이너리 직렬화 형식입니다. 그것은 당신이 JSON과 같은 여러 언어들 사이에서 데이터를 교환 할 수 있습니다. 그러나 더 빨리 그리고 더 작은) philhofer/msgp 같은

갈 라이브러리 지도 및 배열과 같은 composite types을 비롯한 모든 구조체를 직렬화 할 수 있습니다 (like one with a map).

그러나 Go1.4 go generate command이 사용됩니다. (1.4rc1이 이미 나왔습니다)

docker/libchan과 같은 라이브러리가 있습니다. Libchan는 goroutines이 채널을 사용하여 통신하는 것과 같은 방식으로 네트워크 서비스를 통신 할 수있는 초경량 네트워킹 라이브러리입니다.

+0

감사! 내가 혼란 스러울 것 같아요. 직렬화 란 무엇을 의미합니까? 네트워크 통신을 통해 필요한 것이 있습니까? –

+1

@ cvxv31431asdas 예, 구조체의 데이터 인코딩/디코딩. 직렬화는 구조체 데이터를 전달하고 디코딩 할 수있는 문자열로 변환하는 데 도움이됩니다. – VonC

+0

오, 그렇다면 네트워크를 통해 데이터를 전송해야한다면 데이터를 인코딩해야합니다. –