2011-03-10 4 views
0

Mornink!확산 된 서비스/유닉스 시스템간에 가장 좋은 파이썬 방법은 무엇입니까?

다양한 역할을 수행하고 다른 서비스를 실행하는 여러 개의 유닉스 서버로 구성된 광범위한 시스템을 설계, 작성 및 구현해야합니다. 시스템은 방탄, 견고하고 신속해야합니다. 그래, 알아. ;) 나는이 작업에 어떻게 접근해야하는지 모르기 때문에 디자인 단계를 떠나기 전에 당신의 의견을 묻기로했다. 여기에 워크 플로 흐름에 대한 방법입니다 :

  • 사용자가이 수요가 저장되는 서비스
  • 에 대한 요구를 설정 웹 사이트 (? 데이터베이스) 및 중앙 시스템에 어떤 종류의 메시지와 상호 작용 (클러스터/클러스터)는 데이터베이스/큐의 새로운 요구에 대해 전송 중임
  • 중앙 시스템은 요청을 접수하고 완료되면 의무를 수행하기 위해 다양한 시스템 (클러스터)에 신호를 보냅니다 (요구 된 서비스 설정의 일부)
  • , 그들은 현재 서비스가 제공되고있는 중앙 시스템이나 웹 사이트에 메시지를 보냅니다.

이제 이러한 요청을 일종의 대기열에 저장하고 실행하는 현대적이고 강력하며 깨끗하고 효율적인 방법은 무엇입니까? 몇 가지 신호를 보내야합니까, 아니면 모든 하위 시스템이 새로운 데이터 대기열/db를 검사하도록해야합니까? 그 큐가 데이터베이스일까요? 메시지를 다루는 방법? 나는 단일 TCP 연결을 열어서 다른 곳에서 동작/기능을 실행하는 comands와 함께 데이터를 전송하는 방법에 대해 생각했지만 더 자세히 살펴보면 다른 좋은 방법이 있어야한다고 생각했습니다. 그래서 스프링 파이썬을 발견했습니다. 그 파이썬은 90 년대에 비판적이었습니다.

나는 그것의 매우 넓은 질문을 알고,하지만 난 정말 당신이 날 그 디자인 주위에 내 머리를 정리하고 여기에 바보 같은 : 사전에

감사를하지 도울 수 있기를 바랍니다!

답변

0

몇 가지 일반적인 아이디어 : 마스터 클라이언트 방식을 사용할 수 있습니다. 요청은 마스터에 삽입되고 데이터베이스에 저장됩니다. Master는 각 클라이언트의 상태를 알고 있습니다 (동일한 db). 요청이있을 때마다 마스터는이를 무료 클라이언트로 리디렉션합니다. 클라이언트는 작업 (완료된 경우 답변 포함)이 완료되면 다시보고하므로 마스터에서 새 작업을 수신 할 수 있습니다 (풀링의 필요성이 제거됨). 웹 서비스를 사용하여 통신 할 수 있습니다. HTTP 요청/게시는 모든 경우를 해결해야합니다. 실제로 TCP 레벨로 내려갈 필요가 없습니다.

그냥 일반적인 아이디어, 유용합니다.

0

거기에는 여러 가지 메시지 대기열 기술이 있습니다.이 기술은 상당히 잘 작동 할 수있는 Python 친화적 인 기술입니다. 내가 아는 상위 2 개는 모두 ActiveMQRabbitMQ이며 파이썬과 잘 어울립니다. 그리고 현재 ActiveMQ가 (18 개월 전에!) RabbitMQ보다 성능이 뛰어나다는 내용의 this comparison을 발견했습니다.

+0

비교 링크를 다시 채울 수 있습니까? 그것은 현재 작동하지 않습니다. – SpankMe

+0

@SpankMe - 실제로 복사/붙여 넣기 오류가 있습니다. :) 죄송합니다. 지금 업데이트되었습니다. –

+0

고마워요! 그러나, 나는 그 아이디어에 팔리지 않고있다. 대부분은 그런 해결책의 찬반/반대를 얻지 못한다. 이러한 * MQ 기술은 새로운 변수를 가져 오는 복잡성의 추가 계층을 적용합니다. 나는 단순한 무엇인가를 생각하고 있습니다. 그런 것들은 일반적으로 가장 견고하고 빠릅니다. 왜 이것이 단순한 스프링 파이썬으로 끝내지 못하는지 알지 못한다. 나는이 기술을 선택하려고 애쓴다. – SpankMe

관련 문제