株式会社オージス総研お客様のシステムが環境の変化に対応し長期間持続していくための「百年アーキテクチャ」を私たちは目指しています。MessagePub+は、メッセージの配信を司るbrokerと、brokerにつながるclientから構成されており、データの収集や、収集したデータに基づく制御を行うシステムを簡単に構築することが可能です。以下の特長により『つなげること』を柔軟に、簡単に実現します。Endの完全到達保証MQTTには、3段階の到達保証レベル(QoS)が定義されています。brokerの実装次第です。MessagePub+では、これを実現しています。受信者がbroker1につながっており、送信者からのメッセージを受信前に切断が発生したとします。受信者は再接続しますが、broker1に再接続できるとは限りません。仮にbroker3に再接続したとしても、broker3が通信を継続し、メッセージを確実に受信者に届けることができます。任意のtopicにラベルを指定することが可能です。そのラベルに対して、publish/subscribeを行うことで、柔軟に同報などを行うことができます。ラベルは単体で利用することもできますが、論理式を用いて指定することで、その真価を発揮します。設定し、それらのライン全てを一括制御するラベルを「all_lines」として定義します。line2とline3がメンテナンスの場合は、これらのラインに「maintaining」ラベルをつけます。いうラベルを用いた論理式を作成し、publishを行うことで、メンテナンス中のライン以外のすべてのラインに対して、指示を送ることができます。高いレスポンス性とスケーラビリティ数msレベルの高い応答性能を持ちます。1台のbrokerインスタンスで、数万~数十万のセッションを処理することができます。次の表は、clinetから別のclientにメッセージを配信したときの送信時間です。QoS毎に1億件のメッセージを集計しています。msbrokerインスタンスは1台1メッセージのペイロードサイズは205Byte程度brokerは1万件/秒の頻度でメッセージを中継brokerインスタンスはマルチスレッド(スレッド数4)として稼働スケーラビリティ[マルチスレッド]次のグラフは、1台のbrokerインスタンスが1秒間でpublishを処理できる最大件数(性能限界値)を表しています。(1メッセージのペイロードサイズは205Byte程度)マルチスレッドに対応しており、brokerの動作スレッド数を指定することで性能がスケールします。Bytes[クラスタ]次のグラフに示すデータは、複数のbrokerインスタンスでクラスタを構成した場合の、クラスタが1秒間でpublishを処理した最大件数(性能限界値)を表しています。(1メッセージのペイロードサイズは205Byte程度)brokerインスタンス数を増やしていくことで性能がスケールします。Bytes詳細は性能データを参照。IoTやWebで標準的なプロトコルに対応MessagePub+は、MQTTという軽量なプロトコルを用いて実現されています。MQTTは、イベントドリブンでのアプリケーションの実現に適した、Pub/Subモデルを採用しています。topicをsubscribe(購読)しておくことで、そのtopicに対するpublish(データ送信)があったときに、そのデータを受け取ることができます。やりとり可能なデータは、任意のバイナリデータです。1bitのON/OFF情報から、画像、音声といった約256MBytesまでのデータを1回のpublishで送受信できます。WebSocketもサポートしており、MQTTをWebブラウザからも利用することができます。httpのPOSTを利用したデータのpublishや、GETを利用したデータの受信が可能です。httpを用いる場合は、MessagePub+のクライアントライブラリは不要です。クラウド環境、オンプレミス環境、どちらにも導入可能MessagePub+は、お客様の構内サーバおよびネットワークを用いて、オンプレミスに構築することが可能です。AWSなどを利用して、クラウド上にMessagePub+を構築することも可能です。安心のセキュリティサポートするすべての通信方式において、TLSによる暗号化通信をサポートします。Id)とtoken(MQTTのPassword)で認証され、不正な接続を防ぐことができます。clientがtopicに対して、publish/subscribeを行う際は、user名-topicの組み合わせでpublish権/subscribe権をそれぞれ設定可能で、権限のあるclientからのみpublish/subscribeを受け付けます。採用JSONのような柔軟性を持ちながらも、バイナリデータをサポートし、小サイズで、内容解析に必要なCPUリソースも少ないデータフォーマットである、MessagePackをサポートしています。映像と音声とメタ情報をまとめて、MessagePackにパックしてやりとりするといったことが簡単にできます。