Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904

250 Views

September 28, 20

スライド概要

https://japan-pulsar-user-group.connpass.com/event/141000/

profile-image

2023年10月からSpeaker Deckに移行しました。最新情報はこちらをご覧ください。 https://speakerdeck.com/lycorptech_jp

シェア

またはPlayer版

埋め込む »CMSなどでJSが使えない場合

(ダウンロード不可)

関連スライド

各ページのテキスト
1.

YAHOO! JAPAN Apache Pulsarの近況 & meetup 北京の参加報告 ヤフー株式会社 システム統括本部 酒井 宏行 栗原 望 2019/09/04

2.

Apache Pulsarの近況 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 2

3.

自己紹介 酒井 宏行 経歴: - 2007/04 新卒入社 - 2007/06 Yahoo! JAPAN ID全般(ID登録、登録情報、ID連携など) - 2015/07 ヤフオクのBEシステム - 2016/10 「Apache Pulsar」を使った社内向けメッセージングプラットフォーム 最近: - 子育て - スポーツ観戦 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 3

4.

Apache Pulsar Yahoo! Inc. (現 : Verizon Media) で開発されたPub-Subメッセージングプラットフォーム • 特徴 • 高速 • スケーラブル • デュラブル • マルチテナント • ジオレプリケーション PULSAR Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 4

5.

Apache Pulsar Yahoo! Inc. (現 : Verizon Media) で開発されたPub-Subメッセージングプラットフォーム Producer Consumer Broker 1 Broker 2 Broker 3 Configuration Store (Global ZK) Local ZK Bookie 1 Bookie 2 Bookie 3 Pulsar Cluster ■3つのコンポーネント • Broker - serving node • Bookie - storage node • Zookeeper - store metadata and configuration • 各コンポーネントを独立してスケール可能 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 5

6.

Apache Pulsar Yahoo! Inc. (現 : Verizon Media) で開発されたPub-Subメッセージングプラットフォーム • Users • Verizon media (Yahoo! Inc.) • Comcast • Streamlio • Tencent • Zhaopin • China Mobile • Yahoo! JAPAN • etc Companies using or contributing to Apache Pulsar http://pulsar.apache.org/ Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 6

7.

Apache Pulsar Yahoo! Inc. (現 : Verizon Media) で開発されたPub-Subメッセージングプラットフォーム • Releases (計37回) • 2016/09 v1.14 (OSSとして公開) • 2018/05 v2.0 • 2018/10 v2.2 (TLP昇格後の初リリース) • 2019/07 v2.4 • Github • stars: 4,046 • Commits: 3,712 • Contributors: 156 PULSAR Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 7

8.

Star数の推移 Star数(OSS化後の経過日数) Pulsarの起点(OSS公開): 2016/09/07 kafkaの起点(OSS公開): 2011/01/11 ☆2019/08 4,000件突破 -Pulsar -Kafka Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 8

9.

Contributor数の推移 contributor数(OSS化後の経過日数) Pulsarの起点(OSS公開): 2016/09/07 kafkaの起点(OSS公開): 2011/01/11 -Pulsar -Kafka Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 9

10.

Apache Pulsar Yahoo! Inc. (現 : Verizon Media) で開発されたPub-Subメッセージングプラットフォーム • Conferences • 2018/09 ApacheCon North America (2talks) • 12 Apache Pulsar Meetup 上海 • 12 KubeCon North America (booth) • 2019/03 Apache Pulsar × Apache Flink Meetup 杭州 • 05 KubeCon Europe (booth) • 06 KubeCon China (booth) • 06 Apache Pulsar Meetup Palo alto • 08 Apache Pulsar Meetup 北京 • 09 ApacheCon North America (5talks) • 11 KubeCon North America (CFP提出済) • And more PULSAR Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 10

11.

新機能 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 11

12.

Pulsar-2.0、2.1 • Pulsar Functions • Schema registry • Topic compaction • 2.0 • Release: 2018/05 • Pull requests: 423件 • 2.1 • Release: 2018/08 • Pull requests: 378件 • Pulsar IO - connector framework • Tired Storage • Go client(Based on C++ client library) Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 12

13.

Pulsar Functions • V2.0からサポート • 入力トピックからデータを受け取り、何らかの処理を行って出力トピックに書き込む • ちょっとした前処理やイベント処理を手軽に実現できる Pulsar Function Worker Source Consumer F(x) Producer Sink hoge hoge! def process(input): return input + '!' exclamation.py Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 13

14.

Pulsar-2.2 ~ • V2.2 • Pulsar SQL • Dead Letter Topic • V2.3 • Authentication plugin(token based) • Releases • 2018/10 v2.2 • 2019/02 v2.3 • 2019/07 v2.4 • V2.4 • Key_shared • Replicated subscriptions • Negative ack • Authentication plugin(SASL) • 開発中 • Pure Go client • Node.js client • Pulsar Manager Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 14

15.

Pulsar SQL • V2.2からサポート • Pulsar Connector for Presto • SQLクエリでメッセージ取得可能 presto> select * from my_topic; Latest Reader Late Reader event stream ... 63 62 61 60 ... 43 42 41 40 ... 23 22 21 20 ... 4 3 2 1 Apache Pulsar Presto Coordinator Presto Worker Presto Worker Presto Worker Presto Worker http://pulsar.apache.org/ Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 15

16.

Dead Letter Topic • V2.2からサポート • 指定回数処理できなかったメッセージをdead letter topicに移動 consumer =pulsarClient.newConsumer(Schema.BYTES) .topic("persistent://my-tenant/my-ns/default-topic") .ackTimeout(10, TimeUnit.SECONDS) .subscriptionName("sub1") .deadLetterPolicy(DeadLetterPolicy.builder() .maxRedeliverCount(3) .deadLetterTopic("persistent://my-tenant/my-ns/dead-letter-topic") .build()) .subscribe(); Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 16

17.

Authentication plugins(token based, SASL) • それぞれV2.2、v2.4からサポート • Client - Broker間の認証用プラグイン • 2つの認証プラグインが追加 • 今までは実質TLSクライアント認証のプラグインのみ Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 17

18.

Key_shared • V2.4からサポート • 4つ目のsubscription type(既存: exclusive、shared、failover) • メッセージの順序を(指定したkey単位で)維持しつつ、複数consumerで 処理可能 consumer =pulsarClient.newConsumer(Schema.BYTES) .topic("persistent://my-tenant/my-ns/default-topic") .subscriptionName("sub1") .subscriptionType(SubscriptionType.Key_Shared) .subscribe(); Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 18

19.

Key_shared Shared Producer 1 Pulsar topic/partition Subscription C Consumer C-1 Producer 2 m4 m3 m2 m1 m0 m0 m3 m1 m4 m2 Consumer C-2 Consumer C-3 http://pulsar.apache.org/ Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 19

20.

Key_shared Key_Shared Producer 1 Pulsar topic Subscription D Consumer D-1 Producer 2 <k4,v4> <k2,v3> <k3,v2> <k2,v1> <k1,v0> <k1,v0> <k1,v4> <k3,v2> <k2,v3> <k2,v1> Consumer D-2 Consumer D-3 http://pulsar.apache.org/ Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 20

21.

Replicated Subscriptions • V2.4からサポート • クラスタ間でsubscriptionの購読位置(cursor)を同期 • Consumerがクラスタをスムーズに切り替え可能 consumer =pulsarClient.newConsumer(Schema.BYTES) .topic("persistent://my-tenant/my-ns/topic-1") .subscriptionName("Sub-A") .replicateSubscriptionState(true) .subscribe(); Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 21

22.

Replicated Subscriptions V2.3以前 データセンターA データセンターB topic-1 4 3 1 Sub-A Sub-A メッセージを消費したので cursorが移動 Consumer 2 1 1 1 2 3 4 Sub-A 重複が発生 同期されない Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 22

23.

Replicated Subscriptions V2.4以降 データセンターA データセンターB topic-1 4 3 1 Sub-A Sub-A メッセージを消費したので cursorが移動 Consumer 2 1 3 1 2 3 4 Sub-A Sub-A 前クラスタでの購読位置 から購読開始 他クラスタと同期 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 23

24.

Negative ack • V2.4からサポート • Negative ackされたメッセージは再送される • 受信メッセージの処理に失敗した場合に利用 try { Message msg = consumer.receive(); // Do something } catch (Exception e) { // Failed to process message consumer.negativeAcknowledge(msg); } Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 24

25.

Clients Pulsar • Java • C++ • Python • Go • Node.js • WebSocket Kafka • Java • And more (third-pirty) • Pulsarは「WebSocket APIで複数言語をカバー」から、 「各言語のライブラリを充実」に • Kafkaはサードパーティ製のクライアントが豊富 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 25

26.

Pure Go client • 開発中 • https://github.com/apache/pulsar-client-go • Not based on the C++ client library • Go 1.11+ • 2019/03 initial commit • 1年前にC++ client baseのlibraryをリリース Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 26

27.
[beta]
Node.js client
• 開発中
• https://github.com/apache/pulsar-client-node
• Based on C++ client library
• Node 10+
• 2019/03 initial commit
// Create a client
const client = new Pulsar.Client({
serviceUrl: 'pulsar://localhost:6650',
});
// Create a producer
const producer = await client.createProducer({
topic: 'persistent://public/default/my-topic',
});
// Send a message
await producer.send({ data: Buffer.from('Hello World!') });
Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 27
28.

Pulsar Manager • 開発中 • Vue.js + Java • Web UIからテナントなどの作成、stats閲覧、各種設定が可能 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 28

29.

Pulsar Manager Management Clusters Tenants Namespaces Topics Apache Pulsar Management dev Admin + New Tenant Tenant Namespaces Allowed Clusters Admin Roles Actions anonymous 1 dev-ssk1 global Edit Delete asda 0 dev-ssk1 pulsar.test.test_service Edit Delete benchmark 1 dev-ssk1 dev-ssk2 global pulsar.role.test Edit Delete tenant1 1 dev-ssk1 dev-ssk2 pulsar.role.admin Edit Delete functest 0 dev-ssk1 dev-ssk2 global pulsar.role.admin Edit Delete hogefuga 0 role1 role2 Edit Delete Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 29

30.

Pulsar Manager Management Clusters Tenants Namespaces Topics Apache Pulsar Management / Tenants / Tenant Details dev Admin Tenant sample-tenant NAMESPACES CONFIGURATION Clusters Allowed Clusters dev-cluster1 Permissions Admin Roles admin.role1 + New Role Danger Zone Delete Tenant Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 30

31.

まとめ ■ Apache Pulsar › 機能追加など活発に開発が行われている › カンファレンスへの開催 / 参加も活発 › 順調にstar数、contributor数も推移 ■ ドキュメント、お問い合わせ › ドキュメント: https://pulsar.apache.org › Slack : https://apache-pulsar.slack.com › メール: [email protected] PULSAR Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 31

32.

Pulsar Meetup 北京の参加報告 Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 32

33.

自己紹介 栗原 望 経歴: 2012/04 ヤフー株式会社に新卒入社 2012/10 ユーザーの属性情報に関連する社内向けプラットフォームの開発 2015/07 ヤフオクのBEシステム再構築 2016/10 「Pulsar」を使った社内向けメッセージングプラットフォームの開発 2017/06〜 「Pulsar」のコミッター 趣味: ぷよぷよ ボードゲームいろいろ Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 33

34.

Pulsar Meetup 北京 (2019/08/17) • https://www.huodongxing.com/event/1502359221000 • 参加者: 50名くらい Apache Pulsar Meetup Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 34

35.

Meetups in China PULSAR Pulsar Meetups (China) • 2018.10 - Pulsar Meetup Beijing • 2018.12 - Pulsar Meetup Shanghai • 2019.03 - Pulsar Meetup Hangzhou • 2019.06 - Pulsar Meetup Shenzhen • 2019.08 - Pulsar Meetup Beijing • ... Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 35

36.

Users in China • 中国ではMQを使っている企業が多い • eコマースが発達し、流れるトランザクションの量が膨大 • 以前はRabbitMQを使っているところが多かった • 最近はより高いスケーラビリティを求めてKafkaやPulsarが使われている PULSAR Pulsar Community (China) Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 36

37.

KoP (Kafka on Pulsar) • https://github.com/apache/pulsar/wiki/PIP-42%3A-KoP---Kafka-on-Pulsar • Pulsarの上にKafka Protocol Handlerを載せた • Kafka Clientが直接Pulsarに接続できるように PULSAR KoP Overview PULSAR Demo1: P-Producer -> K-Consumer Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 37

38.

Zhaopin in Pulsar community • Pulsarメンバーは2人(!) • PulsarをEvent処理に使っている: https://www.slideshare.net/hustlmsp/how-zhaopin-built-its-event-center-using-apache-pulsar • 1日あたり平均数百億メッセージ • Key_Sharedサブスクリプションなどで貢献 PULSAR Apache Pulsar in zhaopin.com PULSAR Key-based message batcher Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 38

39.

Apache Pulsar at Tencent TEG: use cases and best practices • Tencentでの利用例 • 課金周りでPulsarを使っている: 一貫性、可用性、ストレージ容量、レイテンシ • 8 clusters, 600+ topics PULSAR • 为什么选择 Pulsar Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 39

40.

まとめ 中国のPulsarコミュニティは予想よりかなり大きかった • Tencentなど大企業もPulsarを使っている • Contributorも数名来ていた Kafkaは中国でも強い • Kafkaユーザーに簡単に移行してもらうためのKoP(Kafka on Pulsar) (料理が美味しかった!) Copyright (C) 2019 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 40

41.

YAHOO! JAPAN