2012-05-11 23 views
1

ok各メールの処理に重い処理をしています。システムでAIを作って、彼が受け取った電子メールに自動返信すると言っていますが、どこから始めたらいいのですか?電子メールの解析と処理architechture

相続人

のイムどのような思考

アーキテクチャ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. 私たちはimapとpopでメールを受け取ることができますか?私たちがただ処理しているので、パフォーマンスを選ぶ正しい方法はpop3です。 現在

    アドオン

    1. 私と同じ問題を解決するための良好なリンクやブログの記事があるを使用してイムPHPにはimap_openはありますか?
    2. 私の問題を解決するプロジェクト、アプリまたはサードパーティのリンクを教えてください。
    3. 念頭がある場合は、それらを書き留めてください。助けのための

    おかげで、アダムラマダンは

    編集し「全体像」アーキテクチャの多くの質問のように

    enter image description here

  • +1

    電子メール1000回/秒?あなたはGoogleですか? –

    +0

    @ josh.trow:私は、Googleがそれ以上のものを扱っていることを保証することができます。 – eggyal

    +0

    特定のアドレスに送信された受信メールをスクリプトが処理するようにしたいですか? – gunnx

    答えて

    2

    私の現在のアーキテクチャ、最善の解決策は、実際の一つでありますそれらは...それは依存します。デプロイメント環境を制御できますか?それは...あなたが好きな電子メールサーバーを使用することができますか?既にインストールされ、ホストされているものを使用することに制限されていますか? SMTPサービスと同じマシンでコードを実行できますか?これらの質問や他の多くのものは、(近くの)最適なアーキテクチャを考え出すべきです。

    あなたは、高性能メッセージングシステムになっているはずです、私は仮定のカップルになると私は探検する価値があると思ういくつかのアイデアを提供するつもりだ、ということを考えると

    ...

    。具体的には、RabbitMQをご覧ください。 RabbitMQは信頼性が高く、効率的であり、非同期着信イベントに基づくワークロードの分散は、(自分の意見では非常に良い)チュートリアルで具体的に議論するパターンです。

    このようなメッセージングサーバーでは、着信電子メールを受信するプロセスが1つあります。これは、SMTPプロセスの一部として、または少なくともそれに近い、特にあなたが言及した作業負荷で行われることが望ましいです。他に選択肢がない場合は、cronを使用してPOPまたはIMAP経由でメッセージを収集することについてのあなたのアイデアは今のところ機能しなければなりません。

    電子メール収集プロセスは、メッセージをRabbitMQキューにプッシュします。 (おそらく文字通り、電子メールそのものではないかもしれませんが、それは可能ですが、私は電子メールが効率的に格納されている場所への参照のように思っていました)。次に、名前付きメッセージキューに登録されている複数のワーカープロセスを実行します。 RabbitMQ(またはあなたが決めたメッセージングサービス)は、これらのメッセージをラウンドロビン方式で個々の加入者に配信します。すでにロードされている場合、ワーカープロセスはメッセージをNACKするか、独自のコントロールフローメッセージをサービスに送り返すことができます。非常に高い作業負荷(やはりあなたが提案したように)を使用すると、分散システムの全体的な健全性を監視する管理プロセスを強くお勧めします。マネージャは実行時の統計情報(システム全体の将来の成長計画、最適化、リファクタリングに非常に役立ちます)を収集し、新しいワーカープロセスをスピンアップおよびシャットダウンする機能を備えています。非常に高い作業負荷になる前に、ワーカープロセスが安定しており、メモリの断片化などがなくても長い時間を過ごすことができると仮定すると、メッセージサーバーを使用して作業を分散するだけで十分です。

    私は電子メールプロセッサー(具体的にはxmail)を作成した経験があります。あなたがプロジェクトを始めたばかりで、初期段階)。また、私は現在、RabbitMQを使用して、主要な科学計算グリッド用のマルチエージェント結果キャッシングシステムを構築しています。

    とにかく...あなたのプロジェクトに幸運を祈る!

    +0

    +1の 'それは依存する' – home

    関連する問題