Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fiware Orion发布/订阅协议_Fiware_Fiware Orion - Fatal编程技术网

Fiware Orion发布/订阅协议

Fiware Orion发布/订阅协议,fiware,fiware-orion,Fiware,Fiware Orion,Orion PUB/SUB中使用的协议是什么 例如,NATS使用如下内容: 该机制在Orion中如何在协议级别上工作 我猜使用了以下一些机制:通过保持打开的HTTP连接将消息推送到订阅者。到底是哪一个 比尔 DraskoOrion NGSI API是REST,以HTTP作为应用程序协议(其序列以TCP/IP作为传输/网络协议)。Orion也可以在HTTPS模式下工作,使用-HTTPS(只要使用-cert和-key) 过去,我们支持基于CoAP的NGSI API(按顺序是基于UDP的)。但是,该代

Orion PUB/SUB中使用的协议是什么

例如,NATS使用如下内容:

该机制在Orion中如何在协议级别上工作

我猜使用了以下一些机制:通过保持打开的HTTP连接将消息推送到订阅者。到底是哪一个

比尔


Drasko

Orion NGSI API是REST,以HTTP作为应用程序协议(其序列以TCP/IP作为传输/网络协议)。Orion也可以在HTTPS模式下工作,使用
-HTTPS
(只要使用
-cert
-key

过去,我们支持基于CoAP的NGSI API(按顺序是基于UDP的)。但是,该代码不再被覆盖(尽管仍然可用)

最后,我们正在为NGSIv2开发websocket传输(我们目前正在使用的NGSI API的新版本),但它还处于非常早期的实验状态。

@fgalan

确切地说,NGSI指定了基于HTTP的发布/订阅协议,这是不寻常的,而且可能没有效率

为了能够从服务器端将消息推送回HTTP订户,您必须使用以下技巧:

  • 长轮询
  • 间隔轮询
  • 事件源
  • HTTP多部分/混合
  • HTTP分块传输
这会阻止关闭HTTP连接,以便服务器可以在数据到达后将其推送到订阅服务器(请注意,这不会阻止从客户端为您要执行的每个发布/订阅重新打开HTTP连接,这也是资源消耗)。您可以在此处阅读更多关于此的信息:

这正是我要问的——你在Orion中使用的是哪种方法,你能告诉我代码吗

由于HTTP的这些问题,在发布/订阅中使用HTTP是非常不寻常的。据我所知,没有成功的解决方案可以做到这一点,所有其他的解决方案都使用一些其他指定的RT消息传递协议—RabbitMQ(AQMP)、Redis、NATS、Kafka、MQTT—如果您希望它高效,您需要一个适合发布/订阅的协议

说到这里,您是否曾经将发布/订阅队列与其他解决方案进行过基准测试?我真的很想在这些分析中看到猎户座:,与经过战场验证的软件并肩作战。我想看看延迟和吞吐量

我可以理解为什么需要WS,但我不知道您将如何将它们与NGSI规范相一致——您今天的规范要求通过HTTP(通过REST调用)发布/订阅。你要改变规格吗

致以最良好的祝愿


Drasko

好吧,Orion HTTP通知最初是为服务器到服务器通信而设计的。事实上,它们允许猎户座使用天鹅座或其他机制连接FIWARE“数据链”中的其他组件

对于服务器到客户端的通知,一种替代方法是在Orion和Web客户端之间使用Websocket网关。这一点已经实施了很多次


我们现在所做的是为Orion通知添加除HTTP之外的“本机”Websocket通道。这些websocket通道可用于服务器对服务器通信或服务器浏览器通信。这并不意味着我们将改变NGSI,这意味着我们将添加另一个通知通道,并修改API以使开发人员能够标记他们想要使用Web套接字通道

我非常理解使用HTTP REST NGSI。然而,HTTP连接的问题是它们是单向的,不能将数据从服务器推送到客户端。这是众所周知的问题,多年来一直困扰着开发浏览器应用程序的人们。我们如何解决这个问题?Websocket(在最后一段中提到)将是这个问题的解决方案。您可以在githbu上监控此问题,了解此(尚未)实验性功能的进展情况:是的,适用于浏览器。但不适用于系统间发布/订阅。此外,NGSI明确声明仅适用于发布/订阅的HTTP REST端点-您是否要将规范更改为使用WS?我已经在上面发布了更详细的问题,请详细说明我在那里发布的问题。为了遵循“SOF风格”,我认为这个解释应该转移到上面的问题帖子。然后,我可以在新的问题文本中完成我的答案。我不知道我必须为此做些什么。。。这个软件并不是开发论坛的最佳选择(它更像是用户列表)-我们需要开发者的邮件列表(Google群组可以)和Github(或Freenode IRC)上的Gitter频道。记住,我们也有与开发无关的主题。最后,Orion使用哪一个:长轮询、间隔轮询、EventSource、,HTTP多部分/混合传输还是HTTP分块传输?在代码中的何处可以看到此信息?代码已打开,可在中找到。您可能最感兴趣的部分是rest/库。我认为通过HTTP的服务器发布/订阅通信效率低下,没有多大意义。我也在问——Orion在我列举的方法中使用了哪一种方法来实现服务器推送HttpRegardingWS——它不通过http API端点——您需要WS://。我认为NGSI明确要求休息?