LoginSignup
6
2

More than 5 years have passed since last update.

Azure EventHub ( +Azure EventHub vs AWS Kinesis)

Last updated at Posted at 2016-12-27

Azure EventHubsとは

Microsoftが挙げているポートフォリオの一つに、Service Busというものがあります。
これは、アプリケーションとAzureサービスの間で信頼性の高いメッセージングサービスを
提供するというもの。
EventHubsは、何百万ものアプリケーション・デバイスから送信されるメッセージを受け付ける
ことのできる、パブリッシュ/サブスクライブサービス。

何がうれしいのか?

  • 1秒間あたり数百万規模のメッセージを受け付けることができる。

  • デバイスから送信されるログを集約するWebサーバを構築するのにくらべて、
    安く、楽に、高可用性(スケール)、高信頼性(認証)、高耐障害性(バッファリング)な環境を構築することができる。

  • 受け付けたメッセージをリアルタイムに処理を行うことに適している。

    • ETL, リアルタイムウィンドウ集計のためのストリームとして。

EventHubsとKinesisの機能比較

Azure EventHubs Amazon Kinesis
Consumer EventConsumer Record
Streamの単位 Partition(Partition key) Shard ( partition Key)
offset Sequence number Sequence number
ストリームPUT 1MB, 1000レコード 1MB, 1000レコード
ストリームGET 2MB 2MB
ストリーム受信 PUSH PULL
プロトコル AMQP, HTTPS TCP,HTTPS
開発ツール EventProcessorHostクラス Kinesis Client Library

共通の特徴

  • クライアントから投入されたeventデータは、ストリーム内で複数のパーティションを設定でき、1パーティションに対して1つのConsumerが処理を行うことで並列処理が可能。

  • パーティション同士でのeventデータの処理順序は保障されない。

  • 必ず、同じプロセッサーに処理させたい。投入されたeventデータごとの処理順序を保障したい場合は、パーティションキーを利用してパーティションを指定し投入する。

  • eventデータは最大7日間分が保持される。シーケンスナンバーを指定することで特定のメッセージを取得することができる。逆に保持されたeventデータを即時消すことはできない。

EventHubsの利点

  • Amazon Kinesisと比べてEventHubsの良いなと思った点。

    • AMQPプロトコルなので、デバイスから直接AMQPプロトコルでEventHubsにデータを投入することができる。Kinesisの場合は、SDKをデバイスに組み込んだり、Brokerを組み込むなどしないといけない。
    • SQLクエリによる集計(Stream Analytics)が利用できる。(まだ、AWSはサービスが一般に公開されていない)

所感

  • Stream AnalyticsのSQLを少し触ってみて

    • 複数EventHubsからメッセージの統合、整形、分離が便利そうだと感じた。
    • ストリームに格納されているデータを削除できない。
    • データの遅延などを図るためにある程度の負荷をかけたあと、データを削除する手段がないので開発時面倒だった・・・。
  • ストリーム内のパーティションのスプリットが大変。

    • 自動でスケールする仕組みがないので手で実装する必要がある。
6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2