SlideShare a Scribd company logo
1 of 26
Kafka vs Pulsar
ヤフー株式会社 システム統括本部
栗原 望
2018/03/16
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 2
自己紹介
栗原 望
経歴:
▪ 2012/04 ヤフー株式会社に新卒入社
▪ 2012/10 ユーザーの属性情報に関連する社内向けプラットフォームの開発
▪ 2015/07 ヤフオクのBEシステム再構築
▪ 2016/10 「Pulsar」を使った社内向けメッセージングプラットフォームの開発
▪ 2017/06~ 「Pulsar」のコミッター
趣味:
▪ ぷよぷよテトリス
▪ ボードゲームいろいろ
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 3
Apache Pulsar
Yahoo! Inc.(現:Oath)で開発されたPub-Subメッセージングプラットフォーム
• 特徴
• 高速
• スケーラブル
• デュラブル
• マルチテナント
• ジオレプリケーション
• 歴史
• 2014秋 Yahoo! Inc. が開発
• 2016/09 OSSとして公開
• 2017/06 Apache Software Foundationに移管(Incubatorプロジェクト)
Kafkaとカブる部分が多いが違いは?
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 4
クライアント
Kafka • Java
• And more (third-pirty)
Pulsar • Java
• C++
• Python
• WebSocket
• Kafkaはサードパーティ製のクライアントが豊富
• PulsarはWebSocket APIで複数言語をカバー
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 5
他アプリケーションとの連携
Kafka • Storm
• Spark
• Flink
• Flume
• And more
Pulsar • Storm
• Spark
• Heron
Kafkaは様々なストリーム処理フレームワークと連携可能
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 6
アーキテクチャ
Producer Consumer
Broker 1 Broker 2 Broker 3
Bookie1
Kafka Pulsar
Producer Consumer
Broker 1 Broker 2 Broker 3
Partition
(copy)
Partition
(lead)
Partition
(copy) Bookie2 Bookie3
B
A
C
B
A
C
B
A
C
A A
B
B
C C
• Brokerがデータを保持しない
• データがBookie全体に分散するので1台あたりの
容量はネックにならない
• BrokerとBookieを独立してスケールできる
• どちらを増やす際もデータの再配置は不要
• 負荷に応じて担当Brokerが自動的に移動
• 1パーティションのデータ容量 < Brokerの容量
• トピック数 * パーティション数のディレクトリが生成
されるが、大規模な場合そこがボトルネックになる可
能性がある
• Brokerを増やす際はデータの再配置が必要
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 7
トピック構造
log-stream-for-log-a
job-queue-for-job-a
job-queue-for-job-b
service-a
job-
queue
job-a
log-
stream
job-b
log-a
log-b
プロパティ
log-stream-for-log-b
ネームスペース トピック
Kafka
Pulsar
トピック名が階層化されていない
↓
トピックごとに設定が必要
トピック名が階層化されている
↓
管理を利用者側に委任しやすい
(マルチテナントにしやすい)
Kafka管理者
Pulsar管理者
プロパティ管理者
トピックを作成
プロパティを作成
管理者として
設定
ネームスペースを作成
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 8
ベンチマーク
openmessaging-benchmark : メッセージシステムのベンチマーク標準化プロジェクト
Apache Pulsar Outperforms Apache Kafka by 2.5x on OpenMessaging Benchmark
openmessagingベンチマークテストにおいてPulsarがKafkaを上回ったとのこと
https://www.slideshare.net/merlimat/effectivelyonce-semantics-in-apache-pulsar
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Kafka to Pulsar
KafkaWrapper
• KafkaProducer / KafkaConsumerのIFでPulsarを利用するためのアダプタ(Java)
• dependencyを変更するだけで(コードは変更することなく)KafkaからPulsarへの移行が可能
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kakfa-clients</artifactId>
<version>1.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.pulsar</groupId>
<artifactId>pulsar-client-kafka</artifactId>
<version>1.22.0-incubating</version>
</dependency>
Kafka
Pulsar
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
デモ0: KafkaClient
※事前にlocalhostでKafkaを起動済み
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
デモ1: KafkaWrapperを使ったPulsarへの移行
※事前にlocalhostでPulsarを起動済み
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
最近追加された機能: Pulsar Functions
• 入力トピックからデータを受け取り、何らかの処理を行って出力トピックに書き込む
• ちょっとした前処理やイベント処理を手軽に実現できる
Source SinkProducerConsumer
Pulsar Function Worker
F(x)
def process(input):
return input + ’!’
exclamation.py
hoge hoge!
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
デモ2: Pulsar Functionsを使ったデータ加工
※事前にlocalhostでPulsarを起動済み
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
まとめ
14
まとめ
▪ Pulsar
› スケーラブルなアーキテクチャ、マルチテナントに適したトピック構造
› サードパーティ製のライブラリの多さはまだまだKafkaが勝っている
› openmessaging-benchmarkにおいてKafkaを上回るパフォーマンス
› KafkaWrapperを使えばコード修正不要でKafkaからの移行が可能
› Pulsar Functionsでお手軽前処理
▪ ドキュメント、お問い合わせ
› 英語 : https://pulsar.incubator.apache.org/docs/latest/getting-started/LocalCluster/
› 日本語 : https://pulsar.incubator.apache.org/ja/getting-started/LocalCluster/
› Slack : https://apache-pulsar.slack.com/
› メール : users@pulsar.incubator.apache.org
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
Japan Pulsar User Group
Japan Pulsar User Groupにご参加ください!
https://japan-pulsar-user-group.connpass.com/
short URL: https://yahoo.jp/T2s7Up
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
参考文献
• Comparing Pulsar and Kafka: unified queuing and streaming
• Comparing Pulsar and Kafka: how a segment-based architecture delivers better
performance, scalability, and resilience
• How to migrate Apache Kafka applications to Apache Pulsar
• Introducing Pulsar Functions
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 17
Appendix
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 18
システム構成図 ■Broker
• クライアントとのメッセージの
やり取りを担当
■Bookie
• トピックに送信されたメッセージや
それに関連するデータを保存
■ZooKeeper
• トピックの管理に必要なメタ情報を
保存
• Local ZKはクラスタ内に閉じた
情報を担当
• Global ZKは全てのクラスタで
共有すべき情報を担当
Producer Consumer
Broker 1 Broker 2 Broker 3
Bookie
1
Local
ZooKeeper
Bookie
2
Bookie
3
Pulsar クラスタ
Global
ZooKeeper
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 19
Apache BookKeeperとは?
• オープンソースの分散型ログストレージサービス
• データを複製し複数のノード(Bookie)に分散して保存 → 強い耐障害性
• ノード数を増やせば容量と速度の向上が可能 → スケーラブル
A
Bookie2 Bookie3
D
C
A
B
D
B
C
Bookie1
データの複製数は自由に変更可能
Apache BookKeeperはApache Software Foundationの
米国およびその他の国における登録商標または商標です。
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 20
BookKeeperのアーキテクチャ
• 先行書き込みログ
• ストレージに対する「操作」を先に書き込む
• 永続化ストレージへの反映は後からバックグラウンドで
• 途中で電源が落ちても「操作」を再開可能
• 容量より速度を重視したいので高速なSSDを使用
• 永続化ストレージ
• メッセージを溜めておく
• 速度より容量を重視したいので大容量なHDDを使用
先行書き込みログで速度を担保
永続化ストレージで容量を担保
先行書き込みログ
(SSD)
永続化ストレージ
(HDD)
Bookie
書き込み
キャッシュ
先行読み込み
キャッシュ
Write
Read
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 21
Pulsar導入の経緯
■背景
• Yahoo! JAPANには100程度のサービスが存在(ヤフオク、ショッピング、…)
• それぞれのサービスが個々にMQを構築すると
• 設備・運用コストが増大
• ナレッジが社内で分散
• 本来やりたいサービス開発に集中できない
→ サービス横断で利用可能な「社内プラットフォームとしてのMQ」を提供したい
■求められる要件
1. 高いパフォーマンス / スケーラビリティ
2. 堅牢なストレージ
3. 複数のサービスの同居(マルチテナント)
4. 複数のデータセンター間でのレプリケーション
→ Pulsarなら満たせる!
Producer Consumer
Producer Consumer
Producer Consumer
トピックA
トピックB
トピックC
サービスB
サービスC
サービスA
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止
22
サーバー構成
サービスB
(Java)
サービスA
(Node.js)
西
Broker
Bookie ZK
WebSocket
Proxy
東
Broker
Bookie ZK
WebSocket
Proxy
GeoReplication
サービスC
(C++)
Prometheus
+
Grafana
メトリクス収集
+
可視化
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 23
利用の流れ
ProducerサービスA Consumer
Producer Consumer
Producer Consumer
Producer Consumer
トピックA
トピックB
トピックC
トピックD
サービスB
サービスC
サービスD
• マルチテナント: 複数の利用者が1つのPulsarインスタンスを共有
• 利用者がセルフサービスでトピックを作成
• 認証認可、割当リソースの設定も可能
• Yahoo! JAPANの社内では設定用の独自UIを提供している
各サービスが利用可能な
リソースを個別に設定可能:
BacklogSize 2GB,
RetentionTime 7days, …
他のサービスのトピックへの
アクセスは認証・認可機構で
ブロック利用者がセルフサービスで
トピックを作成
設定用UI
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 24
利用事例1 - コンテンツ入稿プラットフォーム
• Yahoo! JAPANには外部のコンテンツプロバイダから様々なファイルが入稿される
• 入稿サーバへのファイル転送を検知したら入稿ログをPulsarに流す
• トピックを購読している各サービスがファイルを取得して処理する
Producer
Consumer
トピック
サービスA
Pulsar
コンテンツの入稿ログ
をPulsarに流す
ファイルを取得
Consumer
サービスB
Consumer
サービスC
入稿サーバ
コンテンツ
プロバイダ
天気情報、地図情報、
ニュース etc.
ログサーバ
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 25
利用事例2 - Yahoo!メールの検索インデックス作成
• メールの検索インデックスの生成/修正といった時間のかかるジョブを非同期に
処理するために利用
• ProducerはPulsarにジョブをキューイング
• ConsumerはPulsarからジョブを取り出して順番に処理
Producer
Consumer
Producer
トピック
ジョブを処理する
ハンドラ
メールBEサーバ
メールBEサーバ
Pulsar
リクエスト
ジョブを登録
忙しい時やジョブが
失敗した時は再登録
ジョブを
取り出して処理
Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 26
openmessaging-benchmark
openmessaging-benchmark : メッセージシステムのベンチマーク標準化プロジェクト
# 実行例:
$bin/benchmark -d driver-pulsar/pulsar.yaml workloads/1-topic-1-partition-100b.yaml
[main] INFO - ----- Starting benchmark traffic ------
[main] INFO - Pub rate 51630.7 msg/s / 4.9 Mb/s | Cons rate 51582.4 msg/s / 4.9
Mb/s | Backlog: 0.5 K | Pub Latency (ms) avg: 3.8 - 50%: 3.5 - 99%: 7.3 - 99.9%:
22.3 - Max: 55.5

More Related Content

What's hot

Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身Amazon Web Services Japan
 
リクルートのWebサービスを支える「RAFTEL」
リクルートのWebサービスを支える「RAFTEL」リクルートのWebサービスを支える「RAFTEL」
リクルートのWebサービスを支える「RAFTEL」Recruit Technologies
 
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAmazon Web Services Japan
 
Elasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライドElasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライド崇介 藤井
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティスAmazon Web Services Japan
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)NTT DATA Technology & Innovation
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門Kohei Tokunaga
 
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Noritaka Sekiyama
 
[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テストTakahiro Moteki
 
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようShinsuke Sugaya
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!Tetsutaro Watanabe
 
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13Amazon Web Services Japan
 
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -Yahoo!デベロッパーネットワーク
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門泰 増田
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)Hironobu Suzuki
 
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)Takeshi Mikami
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 

What's hot (20)

HTTP/2 入門
HTTP/2 入門HTTP/2 入門
HTTP/2 入門
 
Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身Amazon Aurora - Auroraの止まらない進化とその中身
Amazon Aurora - Auroraの止まらない進化とその中身
 
リクルートのWebサービスを支える「RAFTEL」
リクルートのWebサービスを支える「RAFTEL」リクルートのWebサービスを支える「RAFTEL」
リクルートのWebサービスを支える「RAFTEL」
 
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design PatternAWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
AWS Black Belt Online Seminar 2018 Amazon DynamoDB Advanced Design Pattern
 
Elasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライドElasticsearchを使うときの注意点 公開用スライド
Elasticsearchを使うときの注意点 公開用スライド
 
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
[Aurora事例祭り]Amazon Aurora を使いこなすためのベストプラクティス
 
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
Grafana LokiではじめるKubernetesロギングハンズオン(NTT Tech Conference #4 ハンズオン資料)
 
コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門コンテナ未経験新人が学ぶコンテナ技術入門
コンテナ未経験新人が学ぶコンテナ技術入門
 
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
Hadoop/Spark で Amazon S3 を徹底的に使いこなすワザ (Hadoop / Spark Conference Japan 2019)
 
[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト[社内勉強会]ELBとALBと数万スパイク負荷テスト
[社内勉強会]ELBとALBと数万スパイク負荷テスト
 
SolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみようSolrとElasticsearchを比べてみよう
SolrとElasticsearchを比べてみよう
 
初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!初心者向けMongoDBのキホン!
初心者向けMongoDBのキホン!
 
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #1320210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
 
KafkaとPulsar
KafkaとPulsarKafkaとPulsar
KafkaとPulsar
 
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajpAt least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
 
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -
Apache Kafkaによるログ転送とパフォーマンスチューニング - Bonfire Backend #2 -
 
PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門PlaySQLAlchemy: SQLAlchemy入門
PlaySQLAlchemy: SQLAlchemy入門
 
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
PostgreSQLのリカバリ超入門(もしくはWAL、CHECKPOINT、オンラインバックアップの仕組み)
 
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)Apache Airflow入門  (マーケティングデータ分析基盤技術勉強会)
Apache Airflow入門 (マーケティングデータ分析基盤技術勉強会)
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 

Similar to Kafka vs Pulsar @KafkaMeetup_20180316

Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904
Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904
Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904Nozomi Kurihara
 
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajpストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajpYahoo!デベロッパーネットワーク
 
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118Nozomi Kurihara
 
Kafka Summit NYCに見るストリーミングデータETLの話 #streamdatajp
Kafka Summit NYCに見るストリーミングデータETLの話 #streamdatajpKafka Summit NYCに見るストリーミングデータETLの話 #streamdatajp
Kafka Summit NYCに見るストリーミングデータETLの話 #streamdatajpYahoo!デベロッパーネットワーク
 
We Should Know About in this SocialNetwork Era 2011_1112
We Should Know About in this SocialNetwork Era 2011_1112We Should Know About in this SocialNetwork Era 2011_1112
We Should Know About in this SocialNetwork Era 2011_1112Masahito Zembutsu
 
メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007Nozomi Kurihara
 
Apache Ambari Overview -- Hadoop for Everyone
Apache Ambari Overview -- Hadoop for EveryoneApache Ambari Overview -- Hadoop for Everyone
Apache Ambari Overview -- Hadoop for EveryoneYifeng Jiang
 
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?スキーマつきストリーム データ処理基盤、 Confluent Platformとは?
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?Sotaro Kimura
 
Cloud Foundry Container-to-Container Networking
Cloud Foundry Container-to-Container NetworkingCloud Foundry Container-to-Container Networking
Cloud Foundry Container-to-Container NetworkingKazuto Kusama
 
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...さくらインターネット株式会社
 
What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318Yuhki Hanada
 
AWS re:Invent 2013 参加報告(新サービスとセッション)
AWS re:Invent 2013 参加報告(新サービスとセッション)AWS re:Invent 2013 参加報告(新サービスとセッション)
AWS re:Invent 2013 参加報告(新サービスとセッション)Akio Katayama
 
Open stack reference architecture v1 2
Open stack reference architecture v1 2Open stack reference architecture v1 2
Open stack reference architecture v1 2Dell TechCenter Japan
 
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~KLab株式会社
 
[db tech showcase Tokyo 2015] D13:PCIeフラッシュで、高可用性高性能データベースシステム?! by 株式会社HGSTジ...
[db tech showcase Tokyo 2015] D13:PCIeフラッシュで、高可用性高性能データベースシステム?! by 株式会社HGSTジ...[db tech showcase Tokyo 2015] D13:PCIeフラッシュで、高可用性高性能データベースシステム?! by 株式会社HGSTジ...
[db tech showcase Tokyo 2015] D13:PCIeフラッシュで、高可用性高性能データベースシステム?! by 株式会社HGSTジ...Insight Technology, Inc.
 

Similar to Kafka vs Pulsar @KafkaMeetup_20180316 (20)

Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904
Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904
Apache Pulsarの近況 & meetup 北京の参加報告 @PulsarMeetupJapan_20190904
 
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
Java Clientで入門する Apache Kafka #jjug_ccc #ccc_e2
 
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajpストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
ストリーム処理プラットフォームにおけるKafka導入事例 #kafkajp
 
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
ヤフー発のメッセージキュー 「Pulsar」のご紹介@jjug ccc 20171118
 
Kafka Summit NYCに見るストリーミングデータETLの話 #streamdatajp
Kafka Summit NYCに見るストリーミングデータETLの話 #streamdatajpKafka Summit NYCに見るストリーミングデータETLの話 #streamdatajp
Kafka Summit NYCに見るストリーミングデータETLの話 #streamdatajp
 
Info talk #36
Info talk #36Info talk #36
Info talk #36
 
We Should Know About in this SocialNetwork Era 2011_1112
We Should Know About in this SocialNetwork Era 2011_1112We Should Know About in this SocialNetwork Era 2011_1112
We Should Know About in this SocialNetwork Era 2011_1112
 
Couchbaseの紹介 2015/03/05
Couchbaseの紹介 2015/03/05Couchbaseの紹介 2015/03/05
Couchbaseの紹介 2015/03/05
 
メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007メッセージキュー「Pulsar」の紹介 @OSC_20171007
メッセージキュー「Pulsar」の紹介 @OSC_20171007
 
Apache Ambari Overview -- Hadoop for Everyone
Apache Ambari Overview -- Hadoop for EveryoneApache Ambari Overview -- Hadoop for Everyone
Apache Ambari Overview -- Hadoop for Everyone
 
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?スキーマつきストリーム データ処理基盤、 Confluent Platformとは?
スキーマつきストリーム データ処理基盤、 Confluent Platformとは?
 
Cloud Foundry Container-to-Container Networking
Cloud Foundry Container-to-Container NetworkingCloud Foundry Container-to-Container Networking
Cloud Foundry Container-to-Container Networking
 
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
さくらのDockerコンテナホスティング-Arukasの解説とインフラを支える技術(July Tech Festa 2016 『IoTxAIxインフラ時代...
 
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_cccSpring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
 
What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318
 
AWS re:Invent 2013 参加報告(新サービスとセッション)
AWS re:Invent 2013 参加報告(新サービスとセッション)AWS re:Invent 2013 参加報告(新サービスとセッション)
AWS re:Invent 2013 参加報告(新サービスとセッション)
 
ヤフーを支えるフラッシュストレージ
ヤフーを支えるフラッシュストレージヤフーを支えるフラッシュストレージ
ヤフーを支えるフラッシュストレージ
 
Open stack reference architecture v1 2
Open stack reference architecture v1 2Open stack reference architecture v1 2
Open stack reference architecture v1 2
 
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
Lampで作るソーシャルアプリの負荷対策~アプリとインフラの調和のテクニック~
 
[db tech showcase Tokyo 2015] D13:PCIeフラッシュで、高可用性高性能データベースシステム?! by 株式会社HGSTジ...
[db tech showcase Tokyo 2015] D13:PCIeフラッシュで、高可用性高性能データベースシステム?! by 株式会社HGSTジ...[db tech showcase Tokyo 2015] D13:PCIeフラッシュで、高可用性高性能データベースシステム?! by 株式会社HGSTジ...
[db tech showcase Tokyo 2015] D13:PCIeフラッシュで、高可用性高性能データベースシステム?! by 株式会社HGSTジ...
 

Recently uploaded

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案sugiuralab
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 

Recently uploaded (9)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
TataPixel: 畳の異方性を利用した切り替え可能なディスプレイの提案
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 

Kafka vs Pulsar @KafkaMeetup_20180316

  • 1. Kafka vs Pulsar ヤフー株式会社 システム統括本部 栗原 望 2018/03/16
  • 2. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 2 自己紹介 栗原 望 経歴: ▪ 2012/04 ヤフー株式会社に新卒入社 ▪ 2012/10 ユーザーの属性情報に関連する社内向けプラットフォームの開発 ▪ 2015/07 ヤフオクのBEシステム再構築 ▪ 2016/10 「Pulsar」を使った社内向けメッセージングプラットフォームの開発 ▪ 2017/06~ 「Pulsar」のコミッター 趣味: ▪ ぷよぷよテトリス ▪ ボードゲームいろいろ
  • 3. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 3 Apache Pulsar Yahoo! Inc.(現:Oath)で開発されたPub-Subメッセージングプラットフォーム • 特徴 • 高速 • スケーラブル • デュラブル • マルチテナント • ジオレプリケーション • 歴史 • 2014秋 Yahoo! Inc. が開発 • 2016/09 OSSとして公開 • 2017/06 Apache Software Foundationに移管(Incubatorプロジェクト) Kafkaとカブる部分が多いが違いは?
  • 4. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 4 クライアント Kafka • Java • And more (third-pirty) Pulsar • Java • C++ • Python • WebSocket • Kafkaはサードパーティ製のクライアントが豊富 • PulsarはWebSocket APIで複数言語をカバー
  • 5. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 5 他アプリケーションとの連携 Kafka • Storm • Spark • Flink • Flume • And more Pulsar • Storm • Spark • Heron Kafkaは様々なストリーム処理フレームワークと連携可能
  • 6. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 6 アーキテクチャ Producer Consumer Broker 1 Broker 2 Broker 3 Bookie1 Kafka Pulsar Producer Consumer Broker 1 Broker 2 Broker 3 Partition (copy) Partition (lead) Partition (copy) Bookie2 Bookie3 B A C B A C B A C A A B B C C • Brokerがデータを保持しない • データがBookie全体に分散するので1台あたりの 容量はネックにならない • BrokerとBookieを独立してスケールできる • どちらを増やす際もデータの再配置は不要 • 負荷に応じて担当Brokerが自動的に移動 • 1パーティションのデータ容量 < Brokerの容量 • トピック数 * パーティション数のディレクトリが生成 されるが、大規模な場合そこがボトルネックになる可 能性がある • Brokerを増やす際はデータの再配置が必要
  • 7. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 7 トピック構造 log-stream-for-log-a job-queue-for-job-a job-queue-for-job-b service-a job- queue job-a log- stream job-b log-a log-b プロパティ log-stream-for-log-b ネームスペース トピック Kafka Pulsar トピック名が階層化されていない ↓ トピックごとに設定が必要 トピック名が階層化されている ↓ 管理を利用者側に委任しやすい (マルチテナントにしやすい) Kafka管理者 Pulsar管理者 プロパティ管理者 トピックを作成 プロパティを作成 管理者として 設定 ネームスペースを作成
  • 8. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 8 ベンチマーク openmessaging-benchmark : メッセージシステムのベンチマーク標準化プロジェクト Apache Pulsar Outperforms Apache Kafka by 2.5x on OpenMessaging Benchmark openmessagingベンチマークテストにおいてPulsarがKafkaを上回ったとのこと https://www.slideshare.net/merlimat/effectivelyonce-semantics-in-apache-pulsar
  • 9. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 Kafka to Pulsar KafkaWrapper • KafkaProducer / KafkaConsumerのIFでPulsarを利用するためのアダプタ(Java) • dependencyを変更するだけで(コードは変更することなく)KafkaからPulsarへの移行が可能 <dependency> <groupId>org.apache.kafka</groupId> <artifactId>kakfa-clients</artifactId> <version>1.0.1</version> </dependency> <dependency> <groupId>org.apache.pulsar</groupId> <artifactId>pulsar-client-kafka</artifactId> <version>1.22.0-incubating</version> </dependency> Kafka Pulsar
  • 10. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 デモ0: KafkaClient ※事前にlocalhostでKafkaを起動済み
  • 11. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 デモ1: KafkaWrapperを使ったPulsarへの移行 ※事前にlocalhostでPulsarを起動済み
  • 12. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 最近追加された機能: Pulsar Functions • 入力トピックからデータを受け取り、何らかの処理を行って出力トピックに書き込む • ちょっとした前処理やイベント処理を手軽に実現できる Source SinkProducerConsumer Pulsar Function Worker F(x) def process(input): return input + ’!’ exclamation.py hoge hoge!
  • 13. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 デモ2: Pulsar Functionsを使ったデータ加工 ※事前にlocalhostでPulsarを起動済み
  • 14. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 まとめ 14 まとめ ▪ Pulsar › スケーラブルなアーキテクチャ、マルチテナントに適したトピック構造 › サードパーティ製のライブラリの多さはまだまだKafkaが勝っている › openmessaging-benchmarkにおいてKafkaを上回るパフォーマンス › KafkaWrapperを使えばコード修正不要でKafkaからの移行が可能 › Pulsar Functionsでお手軽前処理 ▪ ドキュメント、お問い合わせ › 英語 : https://pulsar.incubator.apache.org/docs/latest/getting-started/LocalCluster/ › 日本語 : https://pulsar.incubator.apache.org/ja/getting-started/LocalCluster/ › Slack : https://apache-pulsar.slack.com/ › メール : users@pulsar.incubator.apache.org
  • 15. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 Japan Pulsar User Group Japan Pulsar User Groupにご参加ください! https://japan-pulsar-user-group.connpass.com/ short URL: https://yahoo.jp/T2s7Up
  • 16. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 参考文献 • Comparing Pulsar and Kafka: unified queuing and streaming • Comparing Pulsar and Kafka: how a segment-based architecture delivers better performance, scalability, and resilience • How to migrate Apache Kafka applications to Apache Pulsar • Introducing Pulsar Functions
  • 17. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 17 Appendix
  • 18. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 18 システム構成図 ■Broker • クライアントとのメッセージの やり取りを担当 ■Bookie • トピックに送信されたメッセージや それに関連するデータを保存 ■ZooKeeper • トピックの管理に必要なメタ情報を 保存 • Local ZKはクラスタ内に閉じた 情報を担当 • Global ZKは全てのクラスタで 共有すべき情報を担当 Producer Consumer Broker 1 Broker 2 Broker 3 Bookie 1 Local ZooKeeper Bookie 2 Bookie 3 Pulsar クラスタ Global ZooKeeper
  • 19. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 19 Apache BookKeeperとは? • オープンソースの分散型ログストレージサービス • データを複製し複数のノード(Bookie)に分散して保存 → 強い耐障害性 • ノード数を増やせば容量と速度の向上が可能 → スケーラブル A Bookie2 Bookie3 D C A B D B C Bookie1 データの複製数は自由に変更可能 Apache BookKeeperはApache Software Foundationの 米国およびその他の国における登録商標または商標です。
  • 20. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 20 BookKeeperのアーキテクチャ • 先行書き込みログ • ストレージに対する「操作」を先に書き込む • 永続化ストレージへの反映は後からバックグラウンドで • 途中で電源が落ちても「操作」を再開可能 • 容量より速度を重視したいので高速なSSDを使用 • 永続化ストレージ • メッセージを溜めておく • 速度より容量を重視したいので大容量なHDDを使用 先行書き込みログで速度を担保 永続化ストレージで容量を担保 先行書き込みログ (SSD) 永続化ストレージ (HDD) Bookie 書き込み キャッシュ 先行読み込み キャッシュ Write Read
  • 21. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 21 Pulsar導入の経緯 ■背景 • Yahoo! JAPANには100程度のサービスが存在(ヤフオク、ショッピング、…) • それぞれのサービスが個々にMQを構築すると • 設備・運用コストが増大 • ナレッジが社内で分散 • 本来やりたいサービス開発に集中できない → サービス横断で利用可能な「社内プラットフォームとしてのMQ」を提供したい ■求められる要件 1. 高いパフォーマンス / スケーラビリティ 2. 堅牢なストレージ 3. 複数のサービスの同居(マルチテナント) 4. 複数のデータセンター間でのレプリケーション → Pulsarなら満たせる! Producer Consumer Producer Consumer Producer Consumer トピックA トピックB トピックC サービスB サービスC サービスA
  • 22. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 22 サーバー構成 サービスB (Java) サービスA (Node.js) 西 Broker Bookie ZK WebSocket Proxy 東 Broker Bookie ZK WebSocket Proxy GeoReplication サービスC (C++) Prometheus + Grafana メトリクス収集 + 可視化
  • 23. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 23 利用の流れ ProducerサービスA Consumer Producer Consumer Producer Consumer Producer Consumer トピックA トピックB トピックC トピックD サービスB サービスC サービスD • マルチテナント: 複数の利用者が1つのPulsarインスタンスを共有 • 利用者がセルフサービスでトピックを作成 • 認証認可、割当リソースの設定も可能 • Yahoo! JAPANの社内では設定用の独自UIを提供している 各サービスが利用可能な リソースを個別に設定可能: BacklogSize 2GB, RetentionTime 7days, … 他のサービスのトピックへの アクセスは認証・認可機構で ブロック利用者がセルフサービスで トピックを作成 設定用UI
  • 24. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 24 利用事例1 - コンテンツ入稿プラットフォーム • Yahoo! JAPANには外部のコンテンツプロバイダから様々なファイルが入稿される • 入稿サーバへのファイル転送を検知したら入稿ログをPulsarに流す • トピックを購読している各サービスがファイルを取得して処理する Producer Consumer トピック サービスA Pulsar コンテンツの入稿ログ をPulsarに流す ファイルを取得 Consumer サービスB Consumer サービスC 入稿サーバ コンテンツ プロバイダ 天気情報、地図情報、 ニュース etc. ログサーバ
  • 25. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 25 利用事例2 - Yahoo!メールの検索インデックス作成 • メールの検索インデックスの生成/修正といった時間のかかるジョブを非同期に 処理するために利用 • ProducerはPulsarにジョブをキューイング • ConsumerはPulsarからジョブを取り出して順番に処理 Producer Consumer Producer トピック ジョブを処理する ハンドラ メールBEサーバ メールBEサーバ Pulsar リクエスト ジョブを登録 忙しい時やジョブが 失敗した時は再登録 ジョブを 取り出して処理
  • 26. Copyright (C) 2018 Yahoo Japan Corporation. All Rights Reserved. 無断引用・転載禁止 26 openmessaging-benchmark openmessaging-benchmark : メッセージシステムのベンチマーク標準化プロジェクト # 実行例: $bin/benchmark -d driver-pulsar/pulsar.yaml workloads/1-topic-1-partition-100b.yaml [main] INFO - ----- Starting benchmark traffic ------ [main] INFO - Pub rate 51630.7 msg/s / 4.9 Mb/s | Cons rate 51582.4 msg/s / 4.9 Mb/s | Backlog: 0.5 K | Pub Latency (ms) avg: 3.8 - 50%: 3.5 - 99%: 7.3 - 99.9%: 22.3 - Max: 55.5

Editor's Notes

  1. 本日ご紹介するApache Pulsarの概要です。
  2. 本日の主催はJapan Pulsar User Groupになります。 今回が初めてのイベントになりますが、今後も定期的にイベントを行う予定ですので、よろしければグループへの登録をお願いします。
  3. これがYahoo! JAPANでの構成例になります。 東西にデータセンターがあり、それぞれにPulsarのクラスタを構築しています。 GeoReplicationの機能があるので一拠点に流れてきたメッセージはもう一方の拠点にも流すことができます。 またPulsarのクライアントライブラリはJava/C++/Pythonがあるのですが、それ以外の言語から使う場合はWebSocketのProxyを叩いてもらっています。 更にBrokerのメトリクス情報はPrometheusに収集され、Grafanaで可視化しています。 これによりどのサービスがどれくらいPublishしているなどを見ることができます。