8

우리는 많은 변환 작업을 수행하는 데 집중적 인 계산 집중 서비스를 제공합니다. 그것의 계산 상 많은 바운드 (CPU 바운드) 프로세스. 기본적으로 Thrift를 통해 처리 서비스에 메시지를 보내는 메시지 브로커가 있습니다.사육사 및 둔기를 사용하여로드 균형 조정 서비스

이제 메시지 처리를 위해 다른 알 고리를 실행하는 여러 처리 서비스가 있습니다. 이러한 메시지는 하나 이상의 처리 알 고리에 전달됩니다. 메시지 볼륨은 가변적이므로 처리 알 고리가 필요합니다 (예 : XYZ가 포함 된 많은 메시지를 가져 와서 알 고 1로 보내거나 그렇지 않으면 알 고 2로 전송).

수평 확장이 가능한 것으로 확장하고 싶습니다. 그래서 우리는 프로세싱 알 고리를 실행하는 여러 노드를 가지고 있습니다. 이제 메시징로드에 따라 Thrift 요청을 다른 서버에 보내야합니다 (모든 서비스가 Algo1에서 3까지의 각 처리 인스턴스를 실행한다고 가정). 예를 들어 우리가 Algo 1에서 처리하려는 많은 수의 메시지를 얻었고 algo 1을 실행하는 두 개의 서버가 있고 세 번째 서버가 다른 두 개의 algos (Algo 2 & 3)에 대한 요청을 처리한다고 가정 해보십시오.

그래서 시스템은 다음과 같습니다

Client ----Request-------| 
       -----------|-------------------- 
       | Coord & Load Balancer Service | ... like zookeeper 
       -------------------------------- 
         <--|--> 
         | Route messages to servers... 
    Server1:    Server2:   Server 3: 
Algo1 instance  Algo1 instance  Algo2 instance 
              Algo3 instance  

모든 프로세스는 자바로 작성됩니다.

이렇게 쉽게 Zookeeper를 사용하여 설정하는 것이 좋습니다. 알 고스를 추가하거나 변경하면 사육사를 사용하여 사물의 구성 측면 (예 : 서버가 알 고 업데이트 또는 추가 사항을 수신하여 구성대로 제공)을 손쉽게 처리 할 수 ​​있지만 부하 분산 측면을 어떻게 관리 할 수 ​​있습니까?

건배!

+0

안녕하세요, 귀하가이 질문을 해결 했습니까? 그걸 어떻게 했니? 지금 같은 질문 (확장 가능한자가 유지할 수있는 쓰래드 서비스 배치)을 연구하고 있으며 어떤 경험이나 조언도 얻을 수 있습니다 .-) –

+0

@Sergey Vasilyev, 우리는 비슷한 방식으로 최고 ZooKeeper 솔루션을 구현했습니다. Norbert가 일을하는 방식 (많은 기능이 적음). 약간의 여가 시간이 지나면 Norbert를 구현하는 것을 고려해 볼 수 있습니다. 매우 멋진 프로젝트입니다. IMO는 우리가 한 일을하지 않습니다. Jonas의 답변을 아래에서보십시오. 아직도 우리 임 플란 트에 대한 더 많은 정보를 원한다면 알려주세요. – NightWolf

+0

예, Norbert와 비슷하지만, 파이썬과 PHP (이미)를 사용하고 있으며 앞으로 Java/C/C++를 사용할 예정입니다 (가장 가까운 또는 멀리 - 아직 결정하지 않았습니다). 이것이 바로 Thrift를 RPC 솔루션으로 선택한 이유입니다. 그리고 남은 유일한 것은로드 밸런싱과 클러스터 관리입니다. ZooKeeper는이 기능이 좋지만 특정 아키텍처 솔루션을 찾고 있습니다. 그 그림에서 볼 수 있듯이 Norbert는 제가 찾고있는 기본 개념입니다. 그래서, 좋은가요? 안정적입니까? 관리가 용이합니까? 아니면 어떻게 해결 했는가? 내 jabber는 "[email protected]"이고 Skype는 "nolar.info"입니다. 고마워요 :) –

답변

6

여러분은 아마도 LinkedIn의 Norbert와 같은 것을 원할 것입니다. http://sna-projects.com/norbert/ 그들은 클라이언트와 서버 간의 지속적인 피어 투 피어 통신을 사용하고 서비스 레지스트리 및 대역 외 시그널링에 동물원을 사용합니다. 멋진 멋진 것들. 로드가 많은 동안 요청을 처리하는 데 도움이 될 수있는 다른 처리 노드를 가동 할 수 있습니다./조나스

+0

아주 좋습니다. 우리는 이런 식으로 뭔가를 구현해 냈습니다. 우리가 몇 달 전에 이것을 알지 못했던 수치심. 감사! – NightWolf