Stream Configurations Action の制御方法につきまして

16 views
Skip to first unread message

木下裕貴

unread,
Sep 15, 2023, 3:51:42 AM9/15/23
to EDGEMATRIX Stream Toolkit Forum
大変お世話になっております。

AMBLの木下です。

題記の通り、Actionの制御方法につきまして、ご教示いただけると幸いです。

■前提
弊社では特定のオブジェクトを検知し、その結果を外部へ通知(https, SNMP, LINE Action等で)するアプリを作成しています。
検知結果は、確実に1度だけ相手に通知するという要求があります。(タイムアウト等は設計の上)

・この時、対象が弊社サーバー等カスタマイズ可能であれば、適度なIntervalを設定、垂れ流しで通信→サーバーでまとめる等の処置が可能です。

・しかし、例えばLINEをターゲットとした場合、垂れ流し通信してしまうと、大量の通知により、本来の目的の通知が見逃される可能性があります。
 また、仮にサーバーを挟むにしても、サーバー側のコストが高くなるため、できればこの方法は避けたいという思いがあります。

・この対策として例えば、アクションを1回(送信リクエストを1回)としてしまうと、通信失敗やIntervalの間に飲まれて通知そのものができなくなるケースが考えられます。

■質問
① Actionの結果をCallbackは取得できますか? もしくは代替手段はありますか?
② Actionの仕様として、リクエストが成功するまでリトライするような仕様ですか?
   (つまり、Callbackは一度Action Ruleを満たせば、成功するまでバックグラウンドで管理されますか?)
   それとも指定されたIntervalで1度だけ実施するような仕様でしょうか?

お忙しいところ恐縮ですが、ご回答いただければ幸いです。

ts...@edgematrix.com

unread,
Sep 18, 2023, 5:49:00 PM9/18/23
to EDGEMATRIX Stream Toolkit Forum
いつもお世話になっております。

> 検知結果は、確実に1度だけ相手に通知するという要求があります。(タイムアウト等は設計の上)

例えば、以下のサンプルで言うと、3のOFFは確実に一度だけ出す必要があるものですが、
このようにイベントで設計してもらうのが基本になります。

アクションのintervalは、同じイベントが連続する場合にアクション実行を調整する目的のため、
この用途ではそのまま使えません。

> ・この対策として例えば、アクションを1回(送信リクエストを1回)としてしまうと、通信失敗やIntervalの間に飲まれて通知そのものができなくなるケースが考えられます。

ご指摘の通り、通信失敗の場合は、1回の送信を満たせないことがありえます。

> ① Actionの結果をCallbackは取得できますか? もしくは代替手段はありますか?

例えば、HTTPSアクションで、HTTPレスポンスを返してあげる、ということですよね?
現状の仕様では、アクションの実行結果をアプリケーションに返すことはできません。

ただし、アクションを管理しているデバイスエージェントからアプリケーションcallbackへの経路は存在しており、
「外部イベント連携」と呼ぶ仕組みが該当し、例えばデバイスコンソールのマウス操作やPTZの移動、を通知することができます。
プラットフォームサービスの開発が必要ですが、ここに、アクションの実行結果を含めることが一番の近道です。

例えばHTTPSアクションに絞って仕様を明確にしてやってみるということであれば、
プロダクションのpocリポジトリで検証することは可能ですので、
案件のスケジュール含め、ご相談ください。

> ② Actionの仕様として、リクエストが成功するまでリトライするような仕様ですか?

いえ、イベントの大きさやアクション実行頻度が事前にプラットフォームでは想定できませんので、
fail fastの設計になっています。

通信不良から電源断やストリーム再起動(何らかの障害により)に至るようなケースまで想定すると、
ここまでをプラットフォームサービスでカバーした方が良いですが、
永続化ストレージ(簡易データベース)で管理する必要が出てきますね。
ハードウェア的に、ランダムI/Oによって寿命が短くなること、PCIバスの輻輳により各種障害が発生しやすくなることなど、
注意が必要なところがあり、案件によって大きく変動する要素があります。
これについても、HTTPSアクションに絞って、初回リクエストが失敗したもののみ記録してリトライ、
記録するイベント数も上限を設け、それを超えたらストリームを停止する、などルールを決めれば、十分トライ可能です。

2023年9月15日金曜日 16:51:42 UTC+9 yuki.kin...@ambl.co.jp:

木下裕貴

unread,
Sep 20, 2023, 4:02:07 AM9/20/23
to EDGEMATRIX Stream Toolkit Forum, ts...@edgematrix.com
いつもお世話になっております。
詳細なご回答ありがとうございます。大変参考になりました。

今回は提示いただいたサンプルの設計にのっとって対応するということになりました。
もし、確実にHttpのアクションが必要等であれば相談させていただければと思います。


2023年9月19日火曜日 6:49:00 UTC+9 ts...@edgematrix.com:
Reply all
Reply to author
Forward
0 new messages