Zookeeper_PHP チュートリアルに基づいたプライマリとセカンダリの切り替え方法
zookeeper に基づくアクティブとバックアップの切り替え方法
zookeeper の ZOO_EPHEMERAL ノード (ZOO_EPHEMERAL がニーズを満たせない場合は、ZOO_SEQUENCE と組み合わせて使用することを検討できます)。この機能を使用すると、セッションが閉じられるか期限切れになると自動的に削除されます。 、複数のノード間で 2 つまたはアクティブ/スタンバイの切り替えを実現できます。実装方法:
1) プロセスの開始時に、zookeeper_init() を呼び出して初期化します:
bool、zookeeper_init を再度呼び出す必要があります、
// この時点で渡すことができる _clientid は、前のメソッドで生成された _clientid です。 Zookeeper_init()
// Zookeeper_init() は非同期呼び出しであり、非 NULL を返すことはセッションを示しているわけではないことに注意してください 確立は成功しました、
// zk_watcher のタイプが ZOO_SESSION_EVENT で、状態が ZOO_CONNECTED_STATE の場合のみ,
// これは本当にセッションが正常に確立されたことを意味するのでしょうか。
_zhandle =zookeeper_init(zk_hosts, zk_watcher, 5000, _clientid, this, 0);
if (NULL == _zhandle)
{
MYLOG_ERROR("init Zookeeper failed: %sn", zerror(errno));
return false;
}
MYLOG_INFO("init Zookeeper(%s) successn", zk_hosts);
return true;
}
2) 作業に入る前に、まずマスターに切り替えてみて、成功した後にのみ作業に入るようにしてください。マスターへの切り替え
bool ポーリングを使用しない場合は、_zk_path
を監視できます。 mooon::sys::CUtils::millisleep(1000);
// マスターでない場合は、マスターになることを試みます。変換が失敗した場合は、次の試行に進みます
if (!is_master() && !change_to_master())
continue;
do_work();
}
}
bool X::is_master() const
{
return _is_master;
}
bool 現在のマスターが誰であるかを決定するために使用されます
// _zk_path 値の例: /master/test、/master が最初に存在する必要があることに注意してください
int errcode = Zoo_create(_zhandle, _zk_path.c_str(), _myip.c_str(), _myip.size ()+1, &ZOO_OPEN_ACL_UNSAFE, ZOO_EPHEMERAL, NULL, 0);
// (-4) 接続損失 (zookeeper_init() に指定された無効なホストなど) (有効なホストではありません)
if (errcode != ZOK)
{
_is_master = false;
// スタンバイ状態時のログ出力を削減します
if (0 == log_counter++ % 600)
{
MYLOG_DEBUG("becomeマスター[%s] が失敗しました: (%d) %sn", _zk_path.c_str(), errcode, zerror(errcode));
}
return false;
}
else
{
_is_master = true;
log_counter = 0;
MYLOG_INFO("becase master[% s]n", _zk_path.c_str());
// 元のマスターが進行中のプロセスを完了できるように、しばらくスリープします
mooon::sys::CUtils ::millisleep(2000);
return true;
}
}
3) zk_watcher は、Zookeeper セッションが正常に確立されたとき、または期限切れになったときにトリガーされます。これは、タイプと状態によって区別できます
void zk_watcher(zhandle_t *zh, int type, int state, const char *path, void *context)
{
state, context, path);
//zookeeper_init が成功すると、type は ZOO_SESSION_EVENT、state は ZOO_CONNECTED_STATE になります
if ((ZOO_SESSION_EVENT == type ) && (ZOO_CONNECTED_STATE == 状態))
{
x->on_zookeeper_connected(path) ;
}
else if ((ZOO_SESSION_EVENT == タイプ) && (ZOO_EXPIRED_SESSION_STATE == 状態))
{
// Zookeeper_init() が必要再度呼び出される場合は、現在のプロセスを終了して再起動する方が簡単です
x->on_zookeeper_expired();
}
}
添付ファイル: Zookeeper ログ
デフォルトでは、Zookeeper ログは stderr に出力されますが、次を使用することもできますまた、zoo_set_debug_level() を使用して、zookeeper のログ レベルを制御することもできます。
http://www.bkjia.com/PHPjc/1115820.html
www.bkjia.com
本当
http://www.bkjia.com/PHPjc/1115820.html
技術記事
セッションが終了したり期限切れになったときの、Zookeeper ZOO_EPHEMERAL ノードに基づくマスター/バックアップ切り替え方法 (ZOO_EPHEMERAL がニーズを満たせない場合は、ZOO_SEQUENCE と組み合わせて使用することを検討できます)。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











ここ数日、Ice Universeは、サムスンの次期主力スマートフォンであると広く信じられているGalaxy S25 Ultraの詳細を着実に明らかにしている。とりわけ、リーカーはサムスンがカメラのアップグレードを1つだけ計画していると主張した

OnLeaks は、X (旧 Twitter) のフォロワーから 4,000 ドル以上を集めようとして失敗した数日後、Android Headlines と提携して Galaxy S25 Ultra のファーストルックを提供しました。コンテキストとして、h の下に埋め込まれたレンダリング イメージ

TCLは、2つの新しいスマートフォンの発表に加えて、NXTPAPER 14と呼ばれる新しいAndroidタブレットも発表しました。その巨大な画面サイズはセールスポイントの1つです。 NXTPAPER 14 は、TCL の代表的なブランドであるマット LCD パネルのバージョン 3.0 を搭載しています。

Vivo Y300 Pro は完全に公開されたばかりで、大容量バッテリーを備えた最もスリムなミッドレンジ Android スマートフォンの 1 つです。正確に言うと、このスマートフォンの厚さはわずか 7.69 mm ですが、6,500 mAh のバッテリーを搭載しています。これは最近発売されたものと同じ容量です

サムスンは、ファンエディション(FE)スマートフォンシリーズをいつアップデートするかについて、まだ何のヒントも提供していない。現時点では、Galaxy S23 FE は 2023 年 10 月初めに発表された同社の最新版のままです。

Motorola は今年数え切れないほどのデバイスをリリースしましたが、そのうち折りたたみ式デバイスは 2 つだけです。ちなみに、世界の大部分ではこのペアが Razr 50 および Razr 50 Ultra として受け入れられていますが、Motorola は北米では Razr 2024 および Razr 2 として提供しています。

ここ数日、Ice Universeは、サムスンの次期主力スマートフォンであると広く信じられているGalaxy S25 Ultraの詳細を着実に明らかにしている。とりわけ、リーカーはサムスンがカメラのアップグレードを1つだけ計画していると主張した

Redmi Note 14 Pro Plusは、昨年のRedmi Note 13 Pro Plus(Amazonで現在375ドル)の直接の後継者として正式に発表されました。予想通り、Redmi Note 14 Pro Plusは、Redmi Note 14およびRedmi Note 14 Proと並んでRedmi Note 14シリーズをリードします。李
