2016-10-21 2 views
0

Vert.x을 사용할 때는 스레드 관리에주의해야합니다. Vert.x에 대해 완전히 새로운 Orbit 클라이언트를 구현하고 싶지 않습니다. Vert.x 클러스터와 Orbit 클러스터를 통신하는 적절한 방법은 무엇입니까? Orbit 클러스터가있는 Vert.x tcp 이벤트 버스 브리지를 사용하는 것이 좋습니다.Vert.x 클러스터와 Orbit 클러스터를 통신하는 적절한 방법은 무엇입니까?

+0

사용 사례는 무엇입니까? Vertex와 통합하려는 기존 궤도 코드베이스가 있습니까? –

+0

기존 궤도 코드베이스가 없습니다. 많은 장치가 vert.x에 연결되며 각 장치에는 자체 verticle (및 state)이 있습니다. 이러한 장치는 항상 실행되는 것은 아니지만 일부 백그라운드 서비스를 구독합니다. 따라서 가상 액터 패턴은 라이프 사이클 및 액터 분배를 관리하는 대신 제 시나리오에 더 적합하다고 생각합니다. Verticle to Orbit 가상 배우 구독은 내가 적절한 방법으로 달성해야하는 것입니다. verticle에서 Orbit 클라이언트를 사용하면 vert.x 스레드를 차단할 수 있습니다. 나는이 기술 스택에 전문가가 아니지만 학습에 많은 관심이 있습니다. 어떤 도움을 주셔서 감사합니다. –

+0

그러나 Vertx Hazelcast 클러스터를 사용할 수 있습니다. EventBus를 통해 작업자 verticle (백그라운드 서비스)로 메시지를 보냅니다. –

답변

1

여기에 가장 좋은 대답은 없습니다. 두 옵션 모두 장단점이 있습니다.

tcp 이벤트 버스 브리지를 사용하면 여러 시스템간에 가장 빠른 통합을 제공 할 수 있지만 단일 실패 지점을 도입하는 단점이 있습니다. 브리지를 실행하는 노드가 충돌하거나 네트워크가 끊어지면 격리 될 것이라고 가정합니다.

양자 택일로 (그리고 조금 더 복잡함) 궤도를 기반으로 클러스터 관리자를 구현하는 것입니다. 하나는 인터페이스 ClusterManager을보고 시작해야 거기에서 궤도 구현을 제공합니다. 런타임시 전체 클러스터 관리자가 SPI이므로 (vertx 측면에서) 구현 jar을 바꿀 수 있으며 코드를 변경하지 않아도됩니다. 자세한 내용은 here을 참조하십시오. 단점은 달성하기가 더 복잡 할 것이지만 더 잘 통합 될 것이라는 점입니다.

관련 문제