我剛剛創建了一個使用Nginx和supervisord運行OCX平衡版的OCB的dockerized負載平衡版本。僅用於測試目的。負載均衡的Fiware Orion
我的問題是如果我使用這種方法,我會遇到TIMEINTERVAL訂閱的麻煩嗎? (我不想爲每個OCB流程發送'n'個通知)。
任何幫助肯定會感激。
我剛剛創建了一個使用Nginx和supervisord運行OCX平衡版的OCB的dockerized負載平衡版本。僅用於測試目的。負載均衡的Fiware Orion
我的問題是如果我使用這種方法,我會遇到TIMEINTERVAL訂閱的麻煩嗎? (我不想爲每個OCB流程發送'n'個通知)。
任何幫助肯定會感激。
當前Orion版本(0.23.0)的工作原理如下:在創建時,ONTIMEINTERVAL subscribeContext由LB調度到其中一個CB節點,從而創建一個permantent線程負責發送通知消息通知頻率。
然而,有兩種類型的問題:
如果客戶想取消訂閱發送unsubscribeContext,該請求可以由CB 不管理訂閱來recived。因此,該操作可能導致預訂從數據庫中刪除,但通知繼續發送。
讓我們考慮在給定時刻CB1管理訂閱S1和S2和CB2管理S3和S4。讓我們考慮CB2失敗並重啓。 CB2將在開始時「看到」四個訂閱(S1,S2,S3和S4),從而創建4個線程,最終結果是S3和S4通知被複制(由CB1和CB2同時發送) 。
因此,在HA和/或水平縮放方案中不鼓勵使用ONTIMEINTERVAL訂閱。但是,請注意,基於ONTIMEINTERVAL的所有用例都可以在通知接收器處以相同頻率運行基於queryContext的輪詢,而「反向」,因此它不會成爲一個大問題。
編輯:ONTIMEINTERVAL訂閱were removed in Orion 1.0.0。 ONTIMEINTERVAL訂閱有幾個問題(如上述答案中所述)。實際上,它們並不是真正需要的,因爲基於ONTIMEINTERVAL通知的任何用例都可以轉換爲等效用例,其中受體以相同頻率運行queryContext(並利用queryContext的功能,例如分頁或過濾)
謝謝@fgalan。只有一個問題:如果所有CB共享相同的mongo數據庫,會發生什麼(在相同的情況下)? –
除了上述回答帖中描述的ONTIMEINTERVAL問題,Orion準備在共享相同Mongo數據庫的多節點場景中運行。 – fgalan
回答編輯,以添加有關從Orion 1.0.0中刪除ONTIMEINTERVAL的額外信息 – fgalan