分散ロックのさまざまなオプションを評価しようとしています。私が選んだオプションのいくつかは、Zookeeper、MySQL、Cassandraです。カサンドラで分散ロックとしてのCassandra
、私が考えていたことは、テーブルを作成して、以下のようなクエリを存在しない場合、ロック
create table if not exists app.locks (
key text,
primary KEY (key)
);
が続いacquireLockプロセスの一環として、私は挿入を実行することができると言います。 acquireLock insertはtrueを返す場合にのみプロセスを返します。他のスレッドがしようとすると、それを取得できるように、ロックを解除
INSERT INTO app.locks (key) VALUES ('KEY_1') IF NOT EXISTS;
は、このキーのデータを削除することができます。
私が選んだすべてのオプションでいくつかのパフォーマンステストを行っていました。その結果、ZookeeperとMySQLは、Cassandraの結果がかなり矛盾していて、すべてのテストでエラーがほとんどないことを示すエラーは表示されません。ほとんどの時代のエラーは "でした。一貫性で書込み問合せ中のCassandraタイムアウトQUORUM"
質問ここでは、Cassandraは分散ロックの意味ですか?このロックを取得しようとしている同時スレッドの数が超過した場合、スケールできますか?
エキスパートからの思いを楽しみにしています。前もって感謝します。
あなたは、分散ロックがhazelcastを見て必要がある場合は、次のhttp://docs.hazelcast.org/docs/latest /マニュアル/ html-single /#ロック – Mandraenke