Zookeeper Javaクライアントの構築

この記事で使用されるIDEは IntelliJ IDEAであり、zookeeper-demoという名前のMavenプロジェクトを作成し、次の依存関係を導入します。Maven中央倉庫で適切なバージョンを選択でき、ネイティブAPIと Curator を導入できます。

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.11</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.apache.zookeeper</groupId>
  <artifactId>zookeeper</artifactId>
  <version>3.4.8</version>
</dependency>
<dependency>
  <groupId>org.apache.curator</groupId>
  <artifactId>curator-framework</artifactId>
  <version>4.0.0</version>
</dependency>
<dependency>
  <groupId>org.apache.curator</groupId>
  <artifactId>curator-recipes</artifactId>
  <version>4.0.0</version>
</dependency>

Mavenプロジェクトのディレクトリ構造:

クライアントにあるzookeeperのネイティブAPI

zookeeperのネイティブAPIを使用して、前のチュートリアルで構築された3つのサービスで構成されるクラスタに接続します。接続には時間がかかるため、countDownLatchを使用してブロックし、接続が成功するまで待ちます。コンソールは接続情報を出力します。

実例

...public static void main(String[] args) {
    try {
        final CountDownLatch countDownLatch=new CountDownLatch(1);
        ZooKeeper zooKeeper=
            new ZooKeeper("192.168.3.33:2181," +
                    "192.168.3.35:2181,192.168.3.37:2181",
                    4000, new Watcher() {
                @Override
                public void process(WatchedEvent event) {
                    if(Event.KeeperState.SyncConnected==event.getState()){
                        //サーバーからの応答イベントを受信すれば、接続は成功したことを意味します
                        countDownLatch.countDown();
                    }
                }
            });
        countDownLatch.await();
        //CONNECTED
        System.out.println(zooKeeper.getState());
    
    }
}
...

コンソールがconnectedを出力すれば、接続が成功したことを意味します。

ノードAPIを追加する例:

zooKeeper.create("/ceodata","0".getBytes(),ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);

ノードAPIを追加する例:

zooKeeper.create("/ceodata","0".getBytes(),ZooDefs.Ids.OPEN_ACL_UNSAFE,CreateMode.PERSISTENT);

ヒント:その他のコマンド機能については、この記事の後の章を参照してください。

同時に、サーバー端末でコマンドを実行し、設定が成功したことを表示します。

クライアントのcurator接続

Curatorは、Netflix会社によってオープンソース化されたZookeeperクライアントフレームワークのセットであり、Zookeeperクライアントにある多くの下層の詳細な開発作業を解決します。接続と再接続、Watcherの繰り返し登録、NodeExistsExceptionの例外などが含まれます。

Curatorには下記のパッケージが含まれています。

  • curator-framework:zookeeperの下層のAPIをカプセル化します。
  • curator-client:再試行戦略などのクライアント側の操作を提供します。
  • curator-recipes:Cacheイベントの監視、選挙、分散ロック、分散カウンター、分散Barrierなど、いくつかの高度な機能をカプセル化します。

シンプルな実例:

public class CuratorDemo {
 
    public static void main(String[] args) throws Exception {
        CuratorFramework curatorFramework=CuratorFrameworkFactory.
                builder().connectString("192.168.3.33:2181," +
                "192.168.3.35:2181,192.168.3.37:2181").
                sessionTimeoutMs(4000).retryPolicy(new
                ExponentialBackoffRetry(1000,3)).
                namespace("").build();
        curatorFramework.start();
        Stat stat=new Stat();
        //ノードデータを検索します
        byte[] bytes =        curatorFramework.getData().storingStatIn(stat).forPath("/ceodata");
        System.out.println(new String(bytes));
        curatorFramework.close();
    }
}

/ceodata ノード値は前のステップで設定されたため、コンソールが次の内容を出力します。

curatorに関連する参照のURL:http://curator.apache.org/。

Share

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です