NDB API イベントのドキュメントとクラス コメントをふるいにかけた後、NdbEventOperation.hpp で次のコメントを見つけました。
/*
* Known Issues:
* - If a node failure has occured not all events will be recieved
* anymore. Drop NdbEventOperation and Create again after nodes are up
* again. Will be fixed in later versions
*/
これは、データノードに障害が発生した場合、NDB イベントが受信されないということですか?
NDB API イベント リスナー プログラムの実行中にデータ ノードを強制終了するテストを行いましたが、まだすべてのイベントを受信しています (現在、プロトタイプ作成中に 2 つのイベントしかありません)。
アップデート:
ここにいくつかの明確化があります:
たとえば、4 つのホスト (n1、n2、n3、n4) のクラスターがあり、2 つのデータ ノード (n1、n2)、1 つの管理ノード (n3)、1 つの 2 つの SQL ノード (n3、n4) があるとします。 . したがって、データ ノード (n1 など) がダウンした場合、クラスター イベントは同期的に発生するため、n1 によって処理されていたイベントが n2 によって処理されると想像できます。ですから、これらのイベントをどのように失うかわかりません。
NdbEventOperation.hpp のコメントがデータ ノード、管理ノード、または SQL ノードのいずれを指しているのか疑問に思っています。
この問題が修正されているかどうかも疑問に思っています(コメントに「後のバージョンで修正される」と書かれているため)。
NdbEventOperation.hpp のこのコメントは、MySQL Cluster の全体的な概念が可用性とイベントを中心に展開しているため、非常に悪いように見えます。クラスター内のデータ ノードがダウンした場合、一部のイベントが受信されないとは信じがたいです。