6

erlang のメモリ内キャッシュ システムに関する提案が必要です。

  1. キャッシュ アイテムはキー値ベースのストレージです。key は通常 ASCII 文字列です。value は erlang の型で、number / list / tuple / などがあります。
  2. キャッシュ項目はどのノードでも設定できます。
  3. キャッシュ アイテムは、どのノードでも取得できます。
  4. キャッシュアイテムは、異なるサーバー上であってもすべてのノードで共有されます
  5. ダーティ リードが許可されているため、ロックやトランザクションによってパフォーマンスが低下することは望ましくありません。
  6. 完全に分散されており、集中型のマシンやサービスはありません。
  7. 良い成果
  8. 簡単なインストールと展開、構成とメンテナンス

最初の選択は記憶喪失症のようですが経験がありません。それは私の要件を満たしていますか?どのようにパフォーマンスを期待できますか?

別のオプションですがmemcached -- 、memcachedデーモンが別のOSプロセスからのものであるため、余分なシリアライゼーション/デシリアライゼーションが実行されるため、パフォーマンスはmnesiaよりも低いと思います。

4

1 に答える 1

12

はい。Mnesiaあなたの要件を満たしています。ただ、おっしゃる通り道具は使う人が深く理解してこそ良いものです。で mnesia を使用しており、distributed authentication systemこれまでのところ問題は発生していません。mnesia をキャッシュとして使用する場合、memcached よりも優れています。理由の 1 つは、「Memcached は、メモリ スワップ アウトの問題などにより、書き込み内容をいつでも読み取ることができることを保証できません」(こちらを参照)。

ただし、これは、分散システムが Erlang 上に構築されることを意味します。実際、あなたの場合、mnesia はほとんどの NoSQL キャッシュ ソリューションより優れています。Eventually consistent. クラスター全体でネットワークの可用性を確保できる限り、Mnesia は一貫しています。分散キャッシュ システムの場合、異なるノードから同じキーに対して異なる値を読み取る状況は望ましくないため、ここでは mnesia の一貫性が役立ちます。

考慮すべきことは、分散システム用に集中メモリ キャッシュを使用できるということです。これは次のように機能しRABBITMQます。サーバーが実行されており、各クラスター ノードで AMQP クライアントからアクセスできます。システムは AMQP インターフェイスを介して対話します。キャッシュは一元化されているため、キャッシュの書き込みと読み取りを担当するプロセス/システムによって一貫性が保証されます。他のシステムは、キーのリクエストをAMQP message bus、キャッシュを担当するシステムがこのメッセージを受信し、値で応答します。銀行システム、ERP システム、パブリック オンライン サービスとの統合を含む最近のシステムに を

使用しました。Message bus Architecture using RABBITMQ私たちが構築したものは、これらすべてを融合させる責任があり、使用してよかったと思っていRABBITMQます。詳細は多数ありますが、私たちが行ったことは、メッセージ形式とシステム識別メカニズムを考え出すことです。すべてのシステムには、メッセージ バスからの書き込みおよび読み取り用の RABBITMQ クライアントが必要です。次に、読み取りを作成しますQueueこれにより、他のシステムが要求をそのキューに書き込むことができます。RABBITMQ 内の名前は、それを所有するシステムと同じです。その後、バス上を通過するメッセージを暗号化する必要があります。最終的に、システムは長距離にわたって、または州を越えて結合されますが、効率的なネットワークを使用すると、RABBITMQ がこれらのシステムを結合する速度が信じられないほど速くなります。とにかく、RABBITMQ もクラスター化することがMnesiaできます。それが RABBITMQ にどのような力を与えているかをお伝えしなければなりません (これは、記憶喪失がいかに優れているかを示しています)。

もう1つのことは、慣れるまで、いくつかのプログラムを読み、多くのプログラムを作成する必要があるということです。

于 2013-05-24T06:16:44.793 に答える