DolphinDB中流数据的订阅和发布是怎么实现的?

DolphinDB中流数据的订阅和发布的实现原理是怎么样的?
现在我已经在一个节点上实现了流数据的订阅功能,向发布表写入数据后,可以看到订阅表中计算结果保存,但是我在这个数据节点上执行:
getStreamingStat().subConns
看不到任何连接的信息,请问为什么订阅的subport没看到连接,这个subport是干什么的?

请先 登录 后评论

1 个回答

Jax Wu

1.DolphinDB采用经典的订阅发布模式。每当有新的流数据写入时,发布方会通知所有的订阅方处理新的流数据。所以这个subport端口会监听发布节点的消息。

2.信息发布节点必须配置maxPubConnections参数>0,表示信息发布节点最多可连接多少订阅节点。

3.信息订阅节点必须配置subPort参数,设置了subport参数,这个节点才能发起订阅。如果有多个信息订阅节点,必须为每个订阅节点都配置不同的subPort。

4.可以节点上通过getStreamingStat函数来获取流数据发布和订阅相关信息:

getStreamingStat().pubTables //发布表
getStreamingStat().pubConns //发布链接情况
getStreamingStat().subWorkers //查询订阅状态
getStreamingStat().subConns   //订阅链接数 

5.如果发布和订阅在同一个节点上,推送是直接通过内存完成的,所以执行getStreamingStat().subConns不会看到订阅链接数。

6.如果发布和订阅不在同一个节点上,推送是用TCP完成的,此时执行getStreamingStat().subConns可以看到本节点的订阅链接数。

7.如果发布端和订阅端在不同的节点,订阅端要先向发布端发起subscribeTable的调用,这个时候发布端就可以知道订阅端的地址。

8.客户端通过api的方式进行订阅,也需要设置客户端的监听端口。

请先 登录 后评论