2016-05-18 19 views
0

分散トランザクションの経験をお寄せください。どのようなフレームワーク(java)を使用することをお勧めしますか?分散トランザクションのベストプラクティス(java)

+0

私は、フィールド上の経験を持っていないが、私はあなたには、いくつかの要件を与えることを示唆しています。意見に基づく質問はここでは大歓迎ではなく、通常は閉鎖されます。 – UDKOX

+0

特定の質問もお勧めします。 Javaでトランザクションを実行する方法を記述した書籍があります。たとえば、Springを使用すると、プログラムでトランザクションを作成しようとする場合と大きく異なる場合があります – borjab

答えて

2

プラクティスをお勧めしますナラヤナプロジェクトにQAとして働いとしては、これまでの理論の背後にあります。分散トランザクション(2PC)へのアプローチのうちの1つだけが、さまざまなライブラリとフレームワークを選択できます。他のものは自分で実装する必要があります。残念なことに2PCは最先端のアルゴリズムでもありませんので、パーティションの許容範囲とパフォーマンスを犠牲にして、開発の利便性とスピードを上げてください。

分散トランザクションの領域で他の主要なアルゴリズムを見てみましょう。それらのすべてを使用すると、複数のデータソースにまたがるトランザクションを実行できます。

2フェーズアルゴリズム(2PC)

2PCが最も発達したアルゴリズムであるコミット。 X/Open XA標準の中心は、汎用の2PCベースの分散トランザクション処理をモデル化し、クライアント、コーディネーター、およびリソース間の相互作用を形式化します。 XAは、ベンダーがソリューションを他のすべてのソリューションと統合するのではなく、標準に準拠して、自由に統合できるようにします。 JTAは、X/Open XAモデルに対するJavaインターフェイスです。

2PCのいくつかの問題は、コーディネータが単一障害点であるという事実から生じます。ネットワークパーティションが存在し、コーディネーターがクライアントおよびリソース以外のパーティションに存在する場合、システムは使用不可能になり、システムも使用できなくなります。

アルゴリズムのもう1つの問題は、ブロックする性質です。リソースが合意メッセージをコーディネータに送信すると、コミットまたはロールバックが受信されるまでブロックされます。その結果、システムは使用するハードウェアの可能性をすべて利用することができません。

パーコレーターの取引

パーコレーターの取引は、シリアライズ楽観的トランザクションを分散されています。それらはGoogleによってLarge-scale Incremental Processing Using Distributed Transactions and Notifications論文に紹介され、後にAmazonのTransaction Library for DynamoDBCockroachDBデータベースに実装されました。 2PCパーコレーターの取引とは異なり

:ネットワーク分割し、トランザクションを実行するクライアントが存在するとき、彼らは仕事とトランザクションの影響を受けたリソースが同じパーティションであることが起こるので

  1. がコーディネーターを必要としません彼らは、非ブロッキングと優れたクラスタ

それはパーコレーターの取引は、クライアント側で実装することができることを非常に便利ですのハードウェアを利用しているので、ロックフリーのアルゴリズムに似

  • 利用技術。唯一の要件は、データソースが線形化可能であり、比較と設定の操作を提供する必要があることです。欠点は、競争の場合、並行トランザクションがお互いを中止できることです。

    Visualization of the Percolator's transactionをご覧になると、その動作を理解できます。

    RAMP取引

    RAMPのトランザクションがコミット分離レベル分散トランザクションを読んでいます。それらはPeter BailisによってScalable Atomic Visibility with RAMP Transactions論文に紹介されました。彼らはかなり新しいので、データベースにはまだ入っていませんが、Cassandraがサポートするかもしれないrumorsがあります。また、彼らは、複製やクロスシャードの取引のためのCRDT & RAMPのためのPaxosを使用していますアポロデータベース上で作業しているFacebookのreported

    だけでなく2PC、RAMPの取引は、コーディネーターのようなサーバを必要としますが何の可用性への影響がないように、それらとは異なり、このようなサーバの数に制限はありません。 RAMPは、非ブロックアプローチを使用し、リラックスした分離レベルは、それが競合の問題を回避し、詳細については、ペーパーを参照してください信じられないほどのパフォーマンスを達成するのに役立つだけでパーコレーターの取引のように

    。不可分操作と比較-とセットの操作:

    RAMPも同じパーコレーターの取引などのストレージへの要件があります。

    あなたは、彼らがどのように機能するかを理解するためにVisualization of the RAMP transactionに見てみることができます。

  • 関連する問題