インターネットの継続的な発展に伴い、分散システムは現代のソフトウェア アーキテクチャの一部として無視できないものになりました。分散システムでは、システムの安定性と一貫性を確保するために、さまざまなサービスとプロセスを調整および同期する必要があります。この問題を解決するために、分散型調整サービスが誕生しました。よく知られている分散調整サービスの 1 つは Zookeeper です。この記事では、PHP を使用してオープンソースの Zookeeper 分散調整サービスを実装する方法を紹介します。
1. Zookeeper とは何ですか?
Zookeeper は分散調整サービスであり、主に分散システムにおけるさまざまな調整の問題を解決するために使用されます。ツリー構造に基づいた分散型の高可用性ネーミング サービスを提供し、分散調整、共有構成、ネーミング サービス、クラスタ管理、分散ロックなどを解決するための API の完全なセットも提供します。一連の質問。
Zookeeper の中核は分散データ ストレージ システムであり、複数のノードの共同作業をサポートし、内部選出メカニズムを通じてリーダー ノードを選択できます。 Zookeeper は、ノードのデータが変更されたときにクライアントに通知を自動的に送信できるリスニング メカニズムも提供します。
2. Zookeeper を PHP に接続するにはどうすればよいですか?
PHP 言語自体は Zookeeper をサポートしていませんが、サードパーティのプラグイン php-zookeeper を介して Zookeeper を PHP で簡単に使用できます。
php-zookeeper をインストールするには、PHP 拡張機能管理ツール PECL が必要です。インストールする前に、PECL が正しくインストールされていること、SOCKETS 拡張機能と JSON 拡張機能が有効になっていることを確認してください。
インストール手順は次のとおりです:
wget https://archive.apache.org/dist/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz tar -zxf zookeeper-3.4.6.tar.gz cd zookeeper-3.4.6/src/c
./configure make make install
pecl install zookeeper
extension=zookeeper.so
<?php $zk = new Zookeeper("localhost:2181"); $zk->create("/test", "Hello Zookeeper!"); $value = $zk->get("/test"); echo "Node value: " . $value['value'] . " "; $zk->delete("/test"); ?>
<?php $zk = new Zookeeper("localhost:2181"); $lock_path = "/test/lock"; $lock = $zk->create($lock_path . "/lock-", null, array( array('perms' => Zookeeper::PERM_ALL, 'scheme' => 'world', 'id' => 'anyone') ), Zookeeper::EPHEMERAL | Zookeeper::SEQUENCE); while (!$zk->exists($lock, null)) {} $children = $zk->getChildren($lock_path); sort($children); $lowest_node = reset($children); if ($lock == $lock_path . '/' . $lowest_node) { echo "I got the lock! "; // do something $zk->delete($lock); } else { echo "I failed getting the lock! "; } ?>
<?php $zk = new Zookeeper("localhost:2181"); function node_change_callback($event_type, $state, $path) { global $zk; $value = $zk->get($path, node_change_callback); echo "Node value changed to: " . $value['value'] . " "; } $zk->create("/test", "Hello, world"); $value = $zk->get("/test", node_change_callback); sleep(10); $zk->set("/test", "Hello, Zookeeper!"); sleep(10); $zk->delete("/test"); ?>
以上がPHP はオープンソース Zookeeper 分散調整サービスを実装しますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。