DiaryException このページをアンテナに追加 RSSフィード Twitter

2016-11-05(土)

[]yahoo/Pulsar (standalone) 用のDockerfileを作った

PulsarYahooが作ったPub/Subシステムマルチテナント環境運用されることを前提にした設計、大量のトピック・パーティションがある時Kafkaよりパフォーマンスに優れる、などの特徴がある。

先日、Pulsar勉強会に参加して、そこそこに魅力が伝わってきたので、Dockerコンテナでサクッと試せるよう、Dockerfileを書いた。ついでにJavaクライアントも書いた。

使い方

Brokerの起動

まずDockerコンテナでPulsar Brokerを立ち上げる(standaloneモードだと同時にZookeeperやBookKeeperも立ち上がる)。

$ docker run -d \
        -p 8080:8080 -p 6650:6650 \
        --env BROKER_HOST=192.168.99.100 \
        laclefyoshi/pulsar-docker-standalone

ポート8080はBrokerのHTTPエンドポイントポートポート6650はBrokerのサービスポートで、クライアントHTTPエンドポイント(8080)からBroker情報を受け取り、実際にデータをやり取りするのはサービス(6650)を使う。クライアントが使うのはこの2つの通信経路だけ。

環境変数 BROKER_HOST はクライアントから見て、どのホストにBrokerがあるのかを指定するためのもの。Brokerとクライアントが同じマシンにあるのなら 127.0.0.1 でも可。

Javaクライアントの準備

no titleclient-example に入り、Mavenビルドする。

$ git clone https://github.com/laclefyoshi/pulsar-docker.git
$ cd pulsar-docker/client-example/
$ mvn clean package
$ ls target/
classes/
generated-sources/
maven-archiver/
maven-status/
original-pulsar-client-example-1.0-SNAPSHOT.jar
pulsar-client-example-1.0-SNAPSHOT.jar

トピックなどの設定は、standaloneモードで用意されているデフォルトのものハードコーディングされている。

Concumerの起動

Brokerからメッセージを受け取るクライアントとしてConsumerを立ち上げる。BrokerのHTTPエンドポイント引数指定する。

$ java -cp target/pulsar-client-example-1.0-SNAPSHOT.jar \
       org.saekiyoshiyasu.PulsarConsumer http://192.168.99.100:8080
Producerの起動

Consumerとは別のターミナルで、Brokerへメッセージ送信するクライアントとしてProducerを立ち上げる。Consumerと同様、BrokerのHTTPエンドポイント引数指定する。

$ java -cp target/pulsar-client-example-1.0-SNAPSHOT.jar \
       org.saekiyoshiyasu.PulsarProducer http://192.168.99.100:8080
$
Consumerでのメッセージ受け取り

起動したままのConsumerは、Producer送信したメッセージを受け取り、内容を出力する。

Received message: Hello 0
Received message: Hello 1
Received message: Hello 2
Received message: Hello 3
Received message: Hello 4
Received message: Hello 5
Received message: Hello 6
Received message: Hello 7
Received message: Hello 8
Received message: Hello 9

standaloneモードじゃないclusterモード

Pulsarのドキュメントによると、clusterモードでの起動には以下の手順が必要のよう。

  1. Zookeeperの設定&起動
  2. Global Zookeeperの設定&起動
  3. クラスタメタデータ更新
  4. BookKeeperの設定&起動
  5. Brokerの設定&起動
  6. Service Discoveryの設定&起動
  7. テナント設定

一筋縄ではいかなかったので、今後の課題とする。

2005 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2006 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2007 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2008 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2009 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2010 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2011 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2012 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2013 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2014 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2015 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2016 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |
2017 | 01 | 02 | 03 | 04 | 05 | 06 | 07 | 08 | 09 | 10 | 11 | 12 |