2012-05-11 4 views
1

확인 각 이메일 처리에 많은 노력을하고 있습니다. 그가받는 이메일을 자동 회신 할 때 시스템을 AI로 만드는 것을 말하지만, 어디서부터 시작해야할지 몰라요.이메일 구문 분석 및 처리 아키텍처

을 heres

의 메신저 무엇을 생각

아키텍처 1 enter image description here

문제 :

  1. 우리가 1000 이메일/초를 말할 수 방법을 수행하는 메일 서버, exim이나 sendmail을, davecot 등 정확하게 작동합니까?

  2. parseandsavetomysql.py는 파이핑으로 1000 개의 이메일을 처리 할 수 ​​있습니까? 어떻게 작동합니까? btw 현재 잘 작동하지만, 이것에 대해 알아야합니다.

  3. 은 내 논리가 올바른 직원입니까? 또는 대기열 시스템? 나는 resque와 친구를 볼 것을 시도했다 그러나 나는 아직도 다만 그것을 얻지 않는다 우리는 회의를 잠글 수 있는다이 문제에서 말하게한다 "어이 메신저이 파일을 가공하는 것은 email1.rawemail 일에 일하지 않는다"우리는 어떻게 정확한 할 수 있는가? 또는 더 간단한 방법?

아키텍처 2

enter image description here

문제?

  • 방법 팝/STMP 서버 1000 이메일/초를받을 수 있습니다
  • 작성된

    1. ?
    2. 우리는 imap과 pop을 통해 이메일을받을 수 있습니까? 우리가 처리하고 있기 때문에 성능을 선택하는 올바른 방법은 pop3입니다. 현재

    부가

    1. 나와 같은 문제를 해결 좋은 링크 나 블로그 게시물이를 사용하여 메신저 PHP에 imap_open이있다?
    2. 내 문제를 해결하는 프로젝트, 앱 또는 타사의 링크를 알려주십시오.
    3. 마음에 든다면, 적어주세요. 도와위한

    덕분에 아담 라마단은

    편집 "큰 그림"아키텍처 많은 질문처럼

    enter image description here

    +1

    이메일 1,000 회/초? 당신은 Google입니까? –

    +0

    @ josh.trow : Google이 그 이상을 상당히 처리한다는 것을 확신 할 수 있습니다. – eggyal

    +0

    특정 주소로 보낸 들어오는 전자 메일을 스크립트가 처리하도록 하시겠습니까? – gunnx

    답변

    2

    나의 현재의 아키텍처, 가장 좋은 방법은 정말 중 하나입니다 그것들은 ... 의존합니다. 배포 환경을 제어 할 수 있습니까? 즉 ... 원하는 전자 메일 서버를 사용할 수 있습니까? 아니면 이미 설치되어 호스팅 된 전자 메일 서버를 사용할 수 있습니까? SMTP 서비스와 동일한 컴퓨터에서 코드를 실행할 수 있습니까? 이 질문들과 많은 다른 것들은 (가까운) 최적의 아키텍처를 생각해 내야한다.

    , 나는 ...

    당신은 고성능 메시징 시스템에 보일 것을 가정의 커플을 내가 탐구 가치가 있다고 생각 몇 가지 아이디어를 제공 할거야 감안할. 특히 RabbitMQ을 살펴보십시오. RabbitMQ는 안정적이고 효율적이며, 비동기 들어오는 이벤트를 기반으로하는 작업 부하의 분배는 (내 의견으로는 매우 좋은) 자습서에서 구체적으로 논의하는 패턴입니다.

    이렇게 메시징 서버를 사용하면 들어오는 전자 메일을받는 프로세스가 하나 있습니다. 이 작업은 SMTP 프로세스의 일부로 수행하거나 적어도 매우 가까이에 수행하는 것이 바람직합니다. 특히 앞서 언급 한 작업 부하를 사용하는 것이 좋습니다. 다른 선택의 여지가 없다면 cron을 사용하여 POP 또는 IMAP을 통해 메시지를 수집하는 방법에 대해 생각해보십시오.

    전자 메일 수집 프로세스는 메시지를 RabbitMQ 큐로 푸시합니다. (아마 문자 그대로 전자 메일 자체는 아니지만 가능성은 있지만 전자 메일이 효율적으로 저장되는 위치에 대한 참조처럼 생각하고 있습니다.) 그런 다음 명명 된 메시지 대기열에 가입 된 여러 작업자 프로세스를 실행합니다. RabbitMQ (또는 사용자가 결정한 메시징 서비스)는 메시지를 라운드 로빈 방식으로 개별 가입자에게 배포합니다. 이미로드 된 경우 작업자 프로세스는 메시지를 NACK하거나 자신의 제어 흐름 메시지를 다시 서비스에 보낼 수 있습니다. 매우 높은 작업량 (다시 말하지만)을 제안한 것처럼 분산 시스템의 전반적인 상태를 파악하는 관리 프로세스를 적극 권장합니다. 관리자는 런타임 통계를 수집하고 (전체 시스템의 향후 성장 계획, 최적화 및 리팩토링에 매우 유용함) 새 작업자 프로세스를 시작하고 종료 할 수 있습니다. 매우 높은 워크로드에 도달하기 전에 작업자 프로세스가 안정적이며 메모리 조각화없이 긴 시간 동안 작업 할 수 있다고 가정하면 메시지 서버를 사용하여 작업을 배포하면 충분합니다.

    전자 메일 프로세서 (특히 xmail)를 작성한 경험이 있습니다. 프로젝트를 처음 시작하고 초기 단계에 대해 많은 제어 권한을 갖고 있다면 좋습니다.). 또한 저는 현재 RabbitMQ를 사용하여 주요 과학 컴퓨팅 그리드를위한 다중 에이전트 결과 캐싱 시스템을 구축하고 있습니다.

    어쨌든 ... 행운을 빌어 요!

    +0

    +1에 대한 'it depends' – home