Submit Search
Upload
ストリーム処理勉強会 大規模mqttを支える技術
•
7 likes
•
5,972 views
Keigo Suda
Follow
ストリーム処理勉強会 大規模mqttを支える技術
Read less
Read more
Internet
Report
Share
Report
Share
1 of 30
Download now
Download to read offline
Recommended
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
Amazon Web Services Japan
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
Amazon Web Services Japan
30分でわかるマイクロサービスアーキテクチャ 第2版
30分でわかるマイクロサービスアーキテクチャ 第2版
Naoki (Neo) SATO
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
Ito Takayuki
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Web Services Japan
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
Recommended
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
20210127 今日から始めるイベントドリブンアーキテクチャ AWS Expert Online #13
Amazon Web Services Japan
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
Kohei Tokunaga
Infrastructure as Code (IaC) 談義 2022
Infrastructure as Code (IaC) 談義 2022
Amazon Web Services Japan
30分でわかるマイクロサービスアーキテクチャ 第2版
30分でわかるマイクロサービスアーキテクチャ 第2版
Naoki (Neo) SATO
BuildKitによる高速でセキュアなイメージビルド
BuildKitによる高速でセキュアなイメージビルド
Akihiro Suda
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
CircleCIのinfrastructureを支えるTerraformのCI/CDパイプラインの改善
Ito Takayuki
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Game Tech Night #25 ゲーム業界向け機械学習最新状況アップデート
Amazon Web Services Japan
本当は恐ろしい分散システムの話
本当は恐ろしい分散システムの話
Kumazaki Hiroki
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
K Kinzal
WayOfNoTrouble.pptx
WayOfNoTrouble.pptx
Daisuke Yamazaki
Unified JVM Logging
Unified JVM Logging
Yuji Kubota
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
2023-03-23_Spiral.AI
2023-03-23_Spiral.AI
SasakiYuichi1
JIRA / Confluence の必須プラグインはこれだ
JIRA / Confluence の必須プラグインはこれだ
Narichika Kajihara
Guide To AGPL
Guide To AGPL
Mikiya Okuno
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
Mavenの真実とウソ
Mavenの真実とウソ
Yoshitaka Kawashima
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
Shinji Takao
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
KafkaとPulsar
KafkaとPulsar
Yahoo!デベロッパーネットワーク
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
Seiya Mizuno
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
IoTタグで遊んでみよう
IoTタグで遊んでみよう
Yukimitsu Izawa
Introduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQ
Dmitriy Samovskiy
More Related Content
What's hot
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
Amazon Web Services Japan
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
増田 亨
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
K Kinzal
WayOfNoTrouble.pptx
WayOfNoTrouble.pptx
Daisuke Yamazaki
Unified JVM Logging
Unified JVM Logging
Yuji Kubota
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
Takafumi ONAKA
2023-03-23_Spiral.AI
2023-03-23_Spiral.AI
SasakiYuichi1
JIRA / Confluence の必須プラグインはこれだ
JIRA / Confluence の必須プラグインはこれだ
Narichika Kajihara
Guide To AGPL
Guide To AGPL
Mikiya Okuno
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Kumazaki Hiroki
Mavenの真実とウソ
Mavenの真実とウソ
Yoshitaka Kawashima
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
Shinji Takao
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
mosa siru
KafkaとPulsar
KafkaとPulsar
Yahoo!デベロッパーネットワーク
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Yahoo!デベロッパーネットワーク
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Amazon Web Services Japan
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
Seiya Mizuno
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
Masahito Zembutsu
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
Yahoo!デベロッパーネットワーク
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
NTT Communications Technology Development
What's hot
(20)
マルチテナント化で知っておきたいデータベースのこと
マルチテナント化で知っておきたいデータベースのこと
マイクロサービス 4つの分割アプローチ
マイクロサービス 4つの分割アプローチ
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
ChatGPTをシステムに組み込むためのプロンプト技法 #chatgptjp
WayOfNoTrouble.pptx
WayOfNoTrouble.pptx
Unified JVM Logging
Unified JVM Logging
エンジニアの個人ブランディングと技術組織
エンジニアの個人ブランディングと技術組織
2023-03-23_Spiral.AI
2023-03-23_Spiral.AI
JIRA / Confluence の必須プラグインはこれだ
JIRA / Confluence の必須プラグインはこれだ
Guide To AGPL
Guide To AGPL
分散システムについて語らせてくれ
分散システムについて語らせてくれ
Mavenの真実とウソ
Mavenの真実とウソ
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
GraalVMのJavaネイティブビルド機能でどの程度起動が速くなるのか?~サーバレス基盤上での評価~ / How fast does GraalVM's...
開発速度が速い #とは(LayerX社内資料)
開発速度が速い #とは(LayerX社内資料)
KafkaとPulsar
KafkaとPulsar
ヤフー社内でやってるMySQLチューニングセミナー大公開
ヤフー社内でやってるMySQLチューニングセミナー大公開
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Kinesis + Elasticsearchでつくるさいきょうのログ分析基盤
Apache Avro vs Protocol Buffers
Apache Avro vs Protocol Buffers
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
At least onceってぶっちゃけ問題の先送りだったよね #kafkajp
分散トレーシング技術について(Open tracingやjaeger)
分散トレーシング技術について(Open tracingやjaeger)
Viewers also liked
IoTタグで遊んでみよう
IoTタグで遊んでみよう
Yukimitsu Izawa
Introduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQ
Dmitriy Samovskiy
Mqttで始めるIoT
Mqttで始めるIoT
Shintaro Hosoai
MQTTでオフィスハック with RasPi
MQTTでオフィスハック with RasPi
Masahiko Kubara
WebとIoTとMake
WebとIoTとMake
Hirotaka Niisato
OpenBlocks IoTで温湿度を可視化してみた
OpenBlocks IoTで温湿度を可視化してみた
Hideki Yanagihara
動かしながら学ぶMQTT
動かしながら学ぶMQTT
Eiji Yokota
Mqttの通信を見てみよう
Mqttの通信を見てみよう
Suemasu Takashi
Raspberry pi internet of things
Raspberry pi internet of things
catmoney
ワンコインでIot入門 第二章
ワンコインでIot入門 第二章
Makoto Takahashi
20150726 IoTってなに?ニフティクラウドmqttでやったこと
20150726 IoTってなに?ニフティクラウドmqttでやったこと
Daichi Morifuji
IoT時代を支えるプロトコルMQTT技術詳解
IoT時代を支えるプロトコルMQTT技術詳解
Naoto MATSUMOTO
デバイスからクラウドへ ~組み込みエンジニアと IoT
デバイスからクラウドへ ~組み込みエンジニアと IoT
Shin-ya Koga
MQTTとAMQPと.NET
MQTTとAMQPと.NET
terurou
Viewers also liked
(14)
IoTタグで遊んでみよう
IoTタグで遊んでみよう
Introduction to AMQP Messaging with RabbitMQ
Introduction to AMQP Messaging with RabbitMQ
Mqttで始めるIoT
Mqttで始めるIoT
MQTTでオフィスハック with RasPi
MQTTでオフィスハック with RasPi
WebとIoTとMake
WebとIoTとMake
OpenBlocks IoTで温湿度を可視化してみた
OpenBlocks IoTで温湿度を可視化してみた
動かしながら学ぶMQTT
動かしながら学ぶMQTT
Mqttの通信を見てみよう
Mqttの通信を見てみよう
Raspberry pi internet of things
Raspberry pi internet of things
ワンコインでIot入門 第二章
ワンコインでIot入門 第二章
20150726 IoTってなに?ニフティクラウドmqttでやったこと
20150726 IoTってなに?ニフティクラウドmqttでやったこと
IoT時代を支えるプロトコルMQTT技術詳解
IoT時代を支えるプロトコルMQTT技術詳解
デバイスからクラウドへ ~組み込みエンジニアと IoT
デバイスからクラウドへ ~組み込みエンジニアと IoT
MQTTとAMQPと.NET
MQTTとAMQPと.NET
Similar to ストリーム処理勉強会 大規模mqttを支える技術
20181019日経xTECH EXPO講演 | 今からでも遅くない!事例に学ぶIoT導入のための技術ポイント実践講座
20181019日経xTECH EXPO講演 | 今からでも遅くない!事例に学ぶIoT導入のための技術ポイント実践講座
SORACOM,INC
北海道Io tあるじゃん1 ネクステック
北海道Io tあるじゃん1 ネクステック
Norikatsu Oishi
AI_IoTを活用する企業のあり方
AI_IoTを活用する企業のあり方
Osaka University
IETF94 IoT関連WG報告
IETF94 IoT関連WG報告
Shoichi Sakane
要求開発アライアンス 9月定例会議
要求開発アライアンス 9月定例会議
Atsushi Takayasu
20180119_5_IoT Update_20180119
20180119_5_IoT Update_20180119
IoTビジネス共創ラボ
IoTデバイスデータ収集の難しい点
IoTデバイスデータ収集の難しい点
Tetsutaro Watanabe
ラズパイでIoTをやってみよう! | なぜ今IoTなのか?
ラズパイでIoTをやってみよう! | なぜ今IoTなのか?
SORACOM,INC
先駆者に学ぶ MLOpsの実際
先駆者に学ぶ MLOpsの実際
Tetsutaro Watanabe
センサーネットワークコンソーシアム(山口さん作成)
センサーネットワークコンソーシアム(山口さん作成)
CRI Japan, Inc.
IoT通信プラットフォーム「SORACOM」概要セミナー 〜IoTに必要な通信をセキュアに組み込むには〜
IoT通信プラットフォーム「SORACOM」概要セミナー 〜IoTに必要な通信をセキュアに組み込むには〜
SORACOM,INC
IoT系標準化の動き(メモ、2016年) (in Japanese)
IoT系標準化の動き(メモ、2016年) (in Japanese)
Toshihiko Yamakami
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
Tier_IV
IOT and Lean Manifacturing
IOT and Lean Manifacturing
Osaka University
hbstudy#88 5G+MEC時代のシステム設計
hbstudy#88 5G+MEC時代のシステム設計
VirtualTech Japan Inc.
151026 東工大授業「ロボット技術」資料
151026 東工大授業「ロボット技術」資料
Noriaki Ando
Azure IoT 最前線!~ Microsoft Ignite 2019での発表と直近アップデート総まとめ ~
Azure IoT 最前線!~ Microsoft Ignite 2019での発表と直近アップデート総まとめ ~
IoTビジネス共創ラボ
Sangyo2009 05
Sangyo2009 05
Akao Koichi
IoT/M2M展基調講演 - 「IoTビジネスの新潮流」 by SORACOM玉川 (Japan IT week 2017)
IoT/M2M展基調講演 - 「IoTビジネスの新潮流」 by SORACOM玉川 (Japan IT week 2017)
SORACOM,INC
Lt4 aws@loft #11 aws io-t for smart building
Lt4 aws@loft #11 aws io-t for smart building
Amazon Web Services Japan
Similar to ストリーム処理勉強会 大規模mqttを支える技術
(20)
20181019日経xTECH EXPO講演 | 今からでも遅くない!事例に学ぶIoT導入のための技術ポイント実践講座
20181019日経xTECH EXPO講演 | 今からでも遅くない!事例に学ぶIoT導入のための技術ポイント実践講座
北海道Io tあるじゃん1 ネクステック
北海道Io tあるじゃん1 ネクステック
AI_IoTを活用する企業のあり方
AI_IoTを活用する企業のあり方
IETF94 IoT関連WG報告
IETF94 IoT関連WG報告
要求開発アライアンス 9月定例会議
要求開発アライアンス 9月定例会議
20180119_5_IoT Update_20180119
20180119_5_IoT Update_20180119
IoTデバイスデータ収集の難しい点
IoTデバイスデータ収集の難しい点
ラズパイでIoTをやってみよう! | なぜ今IoTなのか?
ラズパイでIoTをやってみよう! | なぜ今IoTなのか?
先駆者に学ぶ MLOpsの実際
先駆者に学ぶ MLOpsの実際
センサーネットワークコンソーシアム(山口さん作成)
センサーネットワークコンソーシアム(山口さん作成)
IoT通信プラットフォーム「SORACOM」概要セミナー 〜IoTに必要な通信をセキュアに組み込むには〜
IoT通信プラットフォーム「SORACOM」概要セミナー 〜IoTに必要な通信をセキュアに組み込むには〜
IoT系標準化の動き(メモ、2016年) (in Japanese)
IoT系標準化の動き(メモ、2016年) (in Japanese)
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
Tier Ⅳ Tech Meetup #2 - 自動運転を作るのはCloudシステムの集合体?? 活用技術を大解剖 -
IOT and Lean Manifacturing
IOT and Lean Manifacturing
hbstudy#88 5G+MEC時代のシステム設計
hbstudy#88 5G+MEC時代のシステム設計
151026 東工大授業「ロボット技術」資料
151026 東工大授業「ロボット技術」資料
Azure IoT 最前線!~ Microsoft Ignite 2019での発表と直近アップデート総まとめ ~
Azure IoT 最前線!~ Microsoft Ignite 2019での発表と直近アップデート総まとめ ~
Sangyo2009 05
Sangyo2009 05
IoT/M2M展基調講演 - 「IoTビジネスの新潮流」 by SORACOM玉川 (Japan IT week 2017)
IoT/M2M展基調講演 - 「IoTビジネスの新潮流」 by SORACOM玉川 (Japan IT week 2017)
Lt4 aws@loft #11 aws io-t for smart building
Lt4 aws@loft #11 aws io-t for smart building
More from Keigo Suda
20171105 go con2017_lt
20171105 go con2017_lt
Keigo Suda
スマートファクトリーを支えるIoTインフラをつくった話
スマートファクトリーを支えるIoTインフラをつくった話
Keigo Suda
Kafka logをオブジェクトストレージに連携する方法まとめ
Kafka logをオブジェクトストレージに連携する方法まとめ
Keigo Suda
Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)
Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)
Keigo Suda
基幹業務もHadoop(EMR)で!!のその後
基幹業務もHadoop(EMR)で!!のその後
Keigo Suda
Awsでつくるapache kafkaといろんな悩み
Awsでつくるapache kafkaといろんな悩み
Keigo Suda
Lt 私の○○遍歴教えるね これまで愛したキーボードたち
Lt 私の○○遍歴教えるね これまで愛したキーボードたち
Keigo Suda
基幹業務もHadoopで!! -ローソンにおける店舗発注業務へのHadoop + Hive導入と その取り組みについて-
基幹業務もHadoopで!! -ローソンにおける店舗発注業務へのHadoop + Hive導入と その取り組みについて-
Keigo Suda
Apache drillを業務利用してみる(までの道のり)
Apache drillを業務利用してみる(までの道のり)
Keigo Suda
More from Keigo Suda
(9)
20171105 go con2017_lt
20171105 go con2017_lt
スマートファクトリーを支えるIoTインフラをつくった話
スマートファクトリーを支えるIoTインフラをつくった話
Kafka logをオブジェクトストレージに連携する方法まとめ
Kafka logをオブジェクトストレージに連携する方法まとめ
Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)
Apache Kafka & Kafka Connectを に使ったデータ連携パターン(改めETLの実装)
基幹業務もHadoop(EMR)で!!のその後
基幹業務もHadoop(EMR)で!!のその後
Awsでつくるapache kafkaといろんな悩み
Awsでつくるapache kafkaといろんな悩み
Lt 私の○○遍歴教えるね これまで愛したキーボードたち
Lt 私の○○遍歴教えるね これまで愛したキーボードたち
基幹業務もHadoopで!! -ローソンにおける店舗発注業務へのHadoop + Hive導入と その取り組みについて-
基幹業務もHadoopで!! -ローソンにおける店舗発注業務へのHadoop + Hive導入と その取り組みについて-
Apache drillを業務利用してみる(までの道のり)
Apache drillを業務利用してみる(までの道のり)
ストリーム処理勉強会 大規模mqttを支える技術
1.
⼤規模MQTTを⽀える技術(のための相談) ストリームデータ処理技術勉強会 2017/8/4 Future Architect Inc, Keigo
Suda
2.
どういった構成で何がポイントとなったか ü どういった課題があったか ü どのように対応したか ü
MQTTにプロトコル仕様などは話しません 物流IoTのメッセージングの話
3.
* Technology Innovation
Group * ビッグデータユニット リーダー * 最近の専⾨ -> ストリーム処理のあれこれ 須⽥桂伍 (すだ けいご) @keigodasu
4.
もくじ l 全体の概要 l メッセージングの話 l
MQTTプロダクト選定の話 l これからの課題
5.
全体の概要
6.
全体の概要 l 物流系のIoTなシステム l トラックなど⾞両等から位置情報やイベント情報を収集するための仕組み l
クラウド側(AWS)からデバイスに対する制御処理もあり l 数⼗万デバイスからの連携
7.
システムの全体像 ローデータ配置先 ストリーム 集計・広範囲スキャン アーカイブデータ配置先 時系列データ 上り受付&プロトコル変換 全システム共通バス ジオデータ サービスAPI 下り制御処理 サービス間接続 MQTTS MQTTS MQTTS MQTTS フィールド側
クラウド側
8.
システムの全体像 ローデータ配置先 ストリーム 集計・広範囲スキャン アーカイブデータ配置先 時系列データ 上り受付&プロトコル変換 全システム共通バス ジオデータ サービスAPI 下り制御処理 サービス間接続 MQTTS MQTTS MQTTS MQTTS フィールド側
クラウド側 これから話すところ(メッセージング)
9.
メッセージングの話
10.
メッセージング部分の詳細 イベント/コマンドデータ受付 センサデータ受付 バイナリデータ格納ストレージ ブリッジアプリ ブリッジアプリ MQTT MQTT HTTPS HTTPS HTTPS MQTTS MQTTS メッセージバス ストリームエンジン ブローカーにMQTTからHTTPSへ変換し連 携するブリッジアプリケーションを配置 直近の連携されたメッセージデータを永続化MQTTS 時系列データ⽣成 ジオデータ⽣成 通知データ⽣成 利⽤形態/メンテナンス単位に ストリームアプリケーションはデプロイ センサストリーム イベントストリーム センサデータの連携 イベント/コマンドデータの連携 バイナリデータの連携 センサデータ イベントデータ コマンドデータ デバイスから定常的に発⽣するデータ デバイスの状態変化などイベントをトリガーに発⽣するデータ デバイスからのクラウド側へ要求を出す際に発⽣するデータ
11.
イベント/コマンドデータ受付 センサデータ受付 定常的に発⽣するセンサデータは、都度最新のデータ を取得する、時間をおいた再送で情報を補填可能で あるため、性能を重視しQoS=0(at most once) で連携 バイナリデータ格納ストレージ ブリッジアプリ ブリッジアプリ センサデータの連携 イベント/コマンドデータの連携 バイナリデータの連携 状態の変化などイベントをトリガーに発⽣するイベント データは、当該イベントに基づいてクラウド側での判断 及び制御処理が⾏わるため、確実性を重視し QoS=1(at
least once)で連携 画像などの⼀つのサイズが⼤きいバイナリデータは、 バッファリングを⾏いながら連携する必要があるため HTTP(S)でプロトコルの機能を利⽤し連携 MQTT MQTT HTTPS HTTPS HTTPS MQTT MQTT MQTT QoS=0 QoS=1 QoS=1 データ種毎に応じた到達保証 l 連携されるデータの種類や、処理特性に応じてメッセージ到達保証を調整 l ⼊り⼝から分けてしまう⽅が扱いやすい(エラー時の切り分けとか)
12.
クラウドからのフィールド制御 l 基本はQoS=1(at least
once)で連携し、アプリケーション側でのハンドリング l プロトコルで到達保証はほどほどに フィールドトリガー フェールドからのイベントデータ/コマンドデータをもとに、 クラウド側で判断処理が⾏われ、その結果をもとに フェールドへの制御処理が⾏われるパターン。 クラウドトリガー MQTT MQTTMQTT publish publish subscribe subscribe MQTT HTTP subscribe publish MQTT HTTP 1. イベントもしくはコマンドデータが発⽣ 2. データ内容に応じた処理を実施 3. 処理結果もしくは次アクションを⽣成4. 処理結果をより取得し次アクションへ 2. プラットフォームより通知を作成3. 通知内容をプラットフォームより取得 4. 処理結果をもとにした次アクションへ (例:オブジェクトストレージからのダウンロード) 1. プラットフォームより通知処理が必要な処理が発⽣ (例:エッジからのバイナリダウンロード処理) クラウド側からエッジへ通知処理が⾏われ、その内容を もとにデバイスが次アクションを実⾏するパターン。 QoS=1 QoS=1 QoS=1 QoS=1 QoS=1 QoS=1 MQTT
13.
MQTT→Kinesisへのブリッジアプリケーション l ブリッジアプリはMQTTトピックをサブスクライブし、Kinesis Producer Library(以下KPL)を利⽤してKinesiへProduce処理を実施 Subscriber
KPL ブリッジアプリケーション MQTT HTTPS Subscribe Produce Topic
14.
ブリッジのシーケンス Subscirber KPLMQTTブローカー Kinesis Subscirber
KPLMQTTブローカー Kinesis データをSubscribe KPLへメッセージをPut KPLへメッセージをPut KPLへメッセージをPut データをSubscribe データをSubscribe メッセージをバッファリング メッセージに集約してKinesisへProduce ブリッジアプリケーション
15.
どのようにスケーラビリティを確保する? l MQTTブローカーにはクラスタリング機能を備えているものも多いが、あくまで内部 ルーティング,フォワード機能であることが多い l Apache
Kafkaと同じノリで処理性能をスケールできない(できるものもある?) MQTTブローカー#2 Publisher MQTTブローカー#3MQTTブローカー#1 topic/a Topic/b Topic/c Topic/aにPublish forward
16.
じゃあ・・・ l トピックをシャーディングする?(some-topic/1, some-topic/2
・・・) l クライアント側でシャーディングを意識する必要あり。。。 l クライアント側はロジックをあまり持たせたくない(不特定多数なので変更時の対応・・・)
17.
ストレートレスに並べていく ブリッジアプリ MQTTブローカー MQTTブローカー MQTTブローカー 同⼀名の トピック トピック 同⼀キュー名で全ブローカーにキューを作成 どのノードにもパブリッシュできるようにする ローカルのキューのみをサブスクライブし、 KinesisへメッセージをProduce オートスケーリング時はトピックキュー情報を取得し、 同⼀の構成に初期化後参加する 構成情報管理 MQTT 全システム共通バス ブリッジアプリトピック ブリッジアプリトピック
18.
オートスケール時のステップ 1. EC2起動 2.
初期化 3. スケールアウト 4. スケールイン 1 2 1 2 1 2 負荷状況をもとにアラームが発⽕し、 オートスケーリング(スケールアウト)が発動 EC2が新たに起動し、Lifecycle hook発⽕ 1 2 MQTTブローカー上に存在するキュー情報を取得 取得したキュー情報をもとに同⼀のキューを作成 1 キュー作成後、ELBにアタッチされ処理を開始 1 2 負荷状況をもとにアラームが発⽕し、 オートスケーリング(スケールイン)が発動 EC2がELBから外され、Lifecycle hookが発⽕ 3 Lifecycle hookでキュー内の未処理データを 全てKafkaへProduce後、Terminate 2 1 1 3
19.
MQTTプロダクト選定
20.
プロダクト選定にあたっての⽐較ポイント l ⽐較の際によく取り上げらえるポイント l 対応しているMQTTバージョン l
サポートされているQoSレベル l SSL/TLS対応 l Retain対応 l Will対応 l WebSocket対応 l クラスタリング機能 etc
21.
実際のところ(今回の場合) l よく違いがでるのはサポートするQoSレベルとクラスタリング可能か、それ以外はだいたいサポートされて いることが多い(と思う)。 l Exactly
Onceの保証はそもそも難しい。(メッセージング/ストリーム処理でいつも話題にあがるあれ) l 前述したようにデータ種や処理に応じてメッセージ到達保証はどのみち妥協しなくちゃいけない。 l となると、QoSは0,1さえサポートされていれば⼗分で、クラスタリング可能かどうかは前述したとおり重 要ではなかった。(リトライ/冪等/アプリで重複排除・・・)
22.
選定候補 l 実績、情報が多いものから優先的に選択(ただでさえ情報少ないのに・・・) l スクラッチも考えたが、ただでさえ情報が少ないなか冒険かと思い⼀旦除外 vs
23.
負荷実施条件を記載 l メッセージサイズ 1KB l
クライアント数 1,000 l リクエスト数 10req/sec(1クライアントあたり) l Retainはなし l Gatling + MQTTプラグイン+ ECSでクライアント数を調整(すごい便利!!) MQTT MQTT MQTT MQTT MQTT
24.
実施結果 ブローカー インスタンスタイプ QoS=0 QoS=1 CPU
Ave 99th CPU Ave 99th c4.large (2 vCPU) 70% 0msec 1msec 70% 100msec 639msec c4.xlarge (4 vCPU) 20% 0msec 1msec 20% 4msec 4msec c4.xlarge (2 vCPU) 100% 終わらず 打ち切り 終わらず 打ち切り 100% 終わらず 打ち切り 終わらず 打ち切り c4.xlarge (4 vCPU) 100% 0msec 1msec 100% 999msec 4,753msec
25.
それぞれの特徴(QoS=0の時) Mosquitto(c4.large) RabbitMQ(c4.large) 処理がはけきれず途中で打ち切り
26.
RabbitMQのMQTTプラグイン l MQTTプラグインは、RabbitMQのExchange/Queueの仕組みの上で動く l Exchangeでの配送⽅法はTopic l
この機構が原因?調査しきれず。。。
27.
いろいろプロダクトいじってみてのつらみ l ノウハウ少ない。。(本当にこれでいいのか常に不安) l チューニングポイントのあたりをつけるところから⼿探りでスタート l
詳細な事例も少ないので構成パターンの検討も⼿探りでスタート l パラメータが少ない。。 l いざパラメーターチューニングをはじめだすと設定できる箇所が少ない l ⼿持ちが少なすぎて性能が頭打ちになった時に毎回詰んだ気持ちになる
28.
課題とまとめ
29.
結構⼼配。。。 l 暖気なしELBがどれぐらい安定してリクエスト受け切れるか。。。 l ELBが暖気なし状態でさばける具合の探りが必要 l
IoTってアクセスピーク特性ってあるようなないような
30.
ありがとうございました!!
Download now