2013-03-25 3 views
3

분산 응용 프로그램에서 피어의 자동 검색을 구현하는 데 영감을 얻으려는 시도가 ZeroMQ Realtime Exchange Protocol (ZRE)입니다.동일한 컴퓨터에있는 피어의 UDP 자동 검색

저는이 모델에 이어 Python에서 UDP를 사용하는 간단한 프로토 타입 응용 프로그램을 만들었습니다. 모든 피어가 다른 컴퓨터에있는 경우 피어를 탐지하는 데만 작동한다는 것은 회귀성이없는 제한적인 것 같습니다. 이는 검색 포트에서 소켓 바인드 작업으로 인해 발생합니다.

SO_REUSEADDR and SO_REUSEPORT을 읽으면 ZRE에 설명 된대로 UDP 브로드 캐스트 체계로이를 정확하게 수행 할 수 없다는 것을 알 수 있습니다.

여러 응용 프로그램 인스턴스 (versioN이 다를 수 있음)가 동일한 컴퓨터에서 실행될 수 있도록 분산 응용 프로그램 용 자동 검색 메커니즘을 구축해야한다면 어떻게 구축하겠습니까?

답변

0

각 서버 인스턴스를 다른 주소로 바인드 할 수 있어야합니다. 전체 서브넷 127.0.0.0/8은 로컬 호스트로 확인되어야하므로 127.0.0.1에서 수신하는 서비스 하나, 127.0.0.2에서 수신 대기하는 다른 서비스 등을 설정할 수 있습니다. 127.0.0.1에서 127.255.255.254까지의 모든 것.

# works as expected 
nc -l 127.0.0.100 3000 & 
nc -l 127.0.0.101 3000 & 

# shows error "nc: Address already in use" 
nc -l 127.0.0.1 3000 & 
nc -l 127.0.0.1 3000 & 
+0

와우, 깔끔한! 이것이 가능하다는 것을 깨닫지 못했습니다. 이것을 시도해야합니다! –