2015-08-28 237 views
2

我刚刚创建了一个使用Nginx和supervisord运行OCX平衡版的OCB的dockerized负载平衡版本。仅用于测试目的。负载均衡的Fiware Orion

我的问题是如果我使用这种方法,我会遇到TIMEINTERVAL订阅的麻烦吗? (我不想为每个OCB流程发送'n'个通知)。

任何帮助肯定会感激。

回答

1

当前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的功能,例如分页或过滤)

+0

谢谢@fgalan。只有一个问题:如果所有CB共享相同的mongo数据库,会发生什么(在相同的情况下)? –

+0

除了上述回答帖中描述的ONTIMEINTERVAL问题,Orion准备在共享相同Mongo数据库的多节点场景中运行。 – fgalan

+0

回答编辑,以添加有关从Orion 1.0.0中删除ONTIMEINTERVAL的额外信息 – fgalan