まず、.net/c#のZookeeperに関する以下の2つの記事が配布ロックについて述べました。
ハイパーリンクのログインが見えます。
ハイパーリンクのログインが見えます。
実際、上記の2つの記事は間違っています! 完全に誤解を招くプログラミング開発者たちです!
に関してはZookeeperのインストールチュートリアル:
Zookeeper分散ロックの実装原理は簡単に説明されています:
1: ロッカーの下にすべての子ノードを取得
2: すべてのサブノードがソートされている。ここに2つの状況がある
ノードのシリアル番号が最も小さい場合、クライアントはロックを取得したとみなします。 自分のやり方でやっていいですよ! もしあなたのノードが最小シリアル番号でなければ、最小のノードを受信しているノードは、あなたより小さい前のノードではありません!! ここはよく聞いてください! (なぜなら、前のノードがタイムアウトしてロックを解除する可能性があるからです!) )
3: Zookeeperの通知を待ち、その後2の操作を繰り返してすべてのノードを呼び出し、ソートし、自分が最小ノードかどうかを判断します............
原理が分かったら、記事の上位2つの導入がなぜ間違っているのか見てみましょう。
記事の順番の例を見ると正しいと感じますし、走った後の結果も正しいです! しかし、何度かテストしてみると、記事のコードが完全に間違っていることがわかるでしょう!!!
だから原理を知った上で、自分たちで書こう! とにかく、インターネット上でコードに陥ったのはこれが初めてではありません!
こちらが正しいGIFです:
通話コード:
使用されているZooKeeperNet.dllバージョンは3.4.6.1です
最後にソースコードを添付します:
観光客の皆さん、この投稿の隠された内容を見たい方は、どうぞ 答える
|