2013-03-19 14 views
6

휠을 다시 발명하기 전에 이러한 요구 사항을 충족하는 오픈 소스 프로젝트에 대한 포인터를 찾고 있습니다. erlang을위한 영구, 분산, 작업자 큐 찾기

  • 하지만 이동하거나 너무 많은 짐이없는 경우 C가 가능하다 얼랑
    구현 (예 :. 종속 관계의 왜곡 미로가) 예 (얼랑에서
  • 엔드 포인트 또는 클라이언트 : 내가 얼랑 코드를 원하는
  • 작업을 노드에 배포하고 일부 erlang 함수를 호출하여 작업을 수행합니다.
  • 어떻게 든
  • 작업 또는 마스터 노드, 단일 장애 지점을 지속
  • 이되는 바닥
  • 작업에 작업을 포기하지 않고, 백업받을 수 있습니다 작업의 대기열을 관리하는 균일 한 구조 (. : 다음 다른 사람을 시작하고 그들을 가리켜 하나 개의 노드를 시작 예)

STRO 수행 한 번 이상은

  • Riak 또는 카우치베이스 주식회사 등의 운영 프로필 괜찮습니다 가벼운 것을 선호합니다. 내가 처음부터 이것을 재현하는 것만큼이나 배우기에 오래 걸릴 것 같은 얼링 (erlang)에는 많은 과장된 엔터프라이즈 급 솔루션이 있습니다 (사실, 저는이 질문에 대한 해결책을 기본적으로 설계했습니다. 다른 문제는 여기에 stackoverflow. 내가 설명한 것을 구축 할 수 있지만, 이것은 erlang이 설계된 작업의 중간에있는 요구 중 하나와 같다.) - ejabbered - 기타 메시징 프레임 워크 - rabitmq - 이론적으로는이 작업을 수행하지만 웹 사이트에 갈 때마다 추상적 인 바다에 빠져 들었습니다. 모든 것을 할 준비가 된 것 같습니다. 나는 그것이 어떤 종류의 끈기가 있는지조차 알 수 없다.

    편집 추가 : 락커를 사용하는 분산 잠금 장치의 슬라이드 데크입니다. 이 문제의 핵심 부분을 해결하는 것 같다 http://www.slideshare.net/knutnesheim/locker-distributed-consistent-locking

    또한 편집 (하나가 자신의 롤하고자하는 경우.) : 난 정말 RabbitMQ보다 더 가볍고 뭔가를 찾고 있어요. 나는 그것이 내가 원하는 것을 할 수 있다는 것을 알고 있지만, 그것을 배우는 데 드는 비용은 나 자신이하는 비용과 비교할 만하다. 최종적으로는 커스텀 솔루션이 내가 정말로 필요로하는 것에 더 가깝게 될 것이다.

  • 답변

    1

    우리는 이와 같은 작업에 RabbitMQ를 사용합니다. RabbitMQ Exchange 큐 바인딩 모델은 유연한 구성을 지원합니다. Exchange에 게시하면 바인딩을 통해 메시지가 대기열에 도착합니다. 하나 이상의 작업자 프로세스가 대기열에 가입 할 수 있습니다. 대기열과 교환은 지속적 일 수 있습니다. 어떤 사람들은 RabbitMQ를 완전히 이해하는 데 약 반년이 걸린다 고 말합니다.

    +0

    RabbitMQ는 월보다 훨씬 길다는 것을 충분히 이해하기 위해서는 처음부터 완전히 이해할 수있는 자체 솔루션을 만드는 데 걸릴 것이라고 생각합니다. 내 생각에 그것은 RabbitMQ에 대한 나의 관심사이다. 그것은 모든 것을 수행하며 "엔터프라이즈 급"이지만 가파른 학습 곡선을 가지고 있습니다. 그것이 내가 필요한 것을 할 수 있다는 것을 알기에 좋은데, 나는 더 많은 조사를 통해 내가 어떻게해야 지속 할 수 있는지 알아낼 수 있을지, 내 필요를 위해 그것을 설정한다. – nirvana

    +1

    RabbitMQ를 사용해보십시오. 당신은 자신의 솔루션보다 훨씬 더 많은 것을 얻을 수 있습니다. – Tilman

    +1

    RabbitMQ 학습은 자신의 롤링보다 훨씬 적어야합니다. 주요 부품 -> Exchanges Bind to Queues. 메시지는 Exchanges에 게시되며 바인딩 된 큐로 넘어갑니다. 큐는 사용자가 메시지를받는 곳입니다. RabbitMQ 라이브러리를 사용하는 많은 예제가 있습니다. – Travis

    5

    우리는 모든 응용 프로그램을 완전한 세트로 묶는 데 RABBITMQ를 사용합니다. 전체 설치 내에서 시스템이 대기열을 작성하는 중앙 RABBITMQ 서버 (영구적인지 또는 일시적인지 여부)가 있습니다. RABBITMQ 가용성 덕분에 우리의 전체 유통 시스템이 그 위에 실행됩니다. 서로 다른 기술을 사용하여 구축 된 시스템은 RABBITMQ를 통해 다른 시스템과 작업을주고받습니다.

    우리는 시스템이 서로 통신하는 JSON 또는 XML 형식의 메시지 형식을 생각해 냈습니다. 너무 빠릅니다.그러나 여기에는 많은 세부 사항이 있지만, RABBITMQ 클라이언트에 OTP 애플리케이션을 작성하여 erlang 프로그래머의 모든 AMQP 항목을 추상화해야했습니다. 모든 프로그래머가 APi라고 알고 있는데, System A에게 요청을 보내고 있는데, 메시지 형식 M을 준비하고 API : zeenode_amqp:req(SystemA,Message)을 호출합니다. 시스템은 synchronous 또는 asynchronous 요청을 보낼 수 있습니다.

    RABBITMQ는 대기열 처리 시스템에 매우 적합합니다. 실제로 우리 설정에서 RABBITMQ pushes은 클라이언트에서 RABBITMQ를 치자 마자 곧바로 서버에 메시지를 보냅니다. 신중하게 설계된 대기열 및 교환의 명명 규칙을 사용하고 다양한 AMQP 유스 케이스 모델을 신중하게 이해함으로써 완벽하게 적합합니다.

    Erlang Queue ModulePoolboy과 함께 Gproc과 같은 프로세스 사전을 사용하여 직접 롤 수 있다고 생각합니다. 어쨌든, 나는 RABBITMQ를 권하고 싶습니다. 저에게 알려주세요. 도서관을 몇 군데 보낼 수 있습니다. 그래서 도서관을 연구하고 그들이 당신을 위해 일하는 지 확인하십시오. 일단 좋은 RABBITMQ 설정을하고 사이트의 문서를 따라 잘 구성한 다음 Erlang amqp 클라이언트를 설치하면 대기열과 교환을 동적으로 생성 할 수 있습니다 (영구적이든 아니든간에, 당신이하는 일에 달려 있습니다.) 가용성 보장이 가능하도록 RABBITMQ 서버를 클러스터링 할 수도 있습니다.

    +1

    알아 두어야 할 사항 RabbitMQ는 JSOn과 함께 작동하며 지속됩니다. RabbitMQ 라이브러리에 대한 제안 사항이 있으시면 고맙게 생각합니다. 나는 RabbitMQ 웹 사이트에서 토끼와 다른 토끼를 알고 있습니다. 내 문제의 일부는 RabbitMQ가 매우 다양한 옵션을 제공한다는 것입니다. 예를 들어 세 가지 클러스터링 전략과 옳은 것을 알기가 어렵습니다. 나는 더 많은 문서를 읽을 수 있다고 생각한다. 사람들이 이런 종류의 직업을 위해 그것을 사용하고 있다는 것을 듣기에 기쁘다. 그것은 내 관심사의 일부이기도하다. – nirvana