Neuron==>ekuiper==>TDengine数据链路怎么实现?

看了一些资料,咨询一下,上述的数据链路,如何部署开源软件到两台ubuntu虚拟机,实现数据通信?

初步拟了一种设计,下面三步看是否可行:
1.Neuron部署在第一台虚拟机,选择ekuiper插件。

2.ekuiper部署在第二台虚拟机(同时部署了emqx),ekuiper接收Neuron发送的数据。这里有两个问题请前辈澄清:
a.ekuiper跟emqx能否做到无缝衔接?
b.ekuiper能否通过相应的配置,接到后端的TDengine? 目前初步设计是200mS采样200个点的量级,将来再考虑增大点位数。

3.TDengine一般是否部署在第二台虚拟机内,跟emqx,ekuiper安装在一起?这是否有参考资料。谢谢。
我们下一步是要把TDengine中的数据完整读出,再考虑在第二台虚拟机的宿主机中,应用程序处理,这样设计是否可行,合理?

当然,ekuiper也可以部署在第一台虚拟机,跟Neuron开源软件一起。

请教一下,一般是怎么部署上述的Neuron,eKuiper,以及TDengine比较合理。

目前我看到一篇参考资料,用了docker compose 实现了在一台虚拟机中,同时运行Neuron和eKuiper两个容器,以及它们之间的通信;
但是现在我在虚拟机中安装了Neuron demo;不知道是否也同时能在虚拟机中安装eKuiper开源软件? 还是能以docker的方式运行在第一台虚拟机中合适?
我先提出问题,然后自己一步一步解决。谢谢。

1 个赞

所有这些组件都可以通过网络通信,也都支持二进制或者 docker 部署,所以随意放都可以。我们大部分架构会区分边和云。Neuron + eKuiper 部署在边端,EMQX + 数据库部署在云端。

谢谢,目前确实把Neuron和eKuiper部署在一起,ekuiperManager跟emqx一起。
接下来的问题是,如果是安装TDengine,如果也是以docker部署(与ekuiperManager部署一起),能否接收到另外一台虚拟机中,同样以docker部署的eKuiper送过来的数据流? 是否需要docker compose呢?

现在我们有这么一项应用,不知怎么部署分配比较合适。
第一步:Neuron+eKuiper部署在第一台虚拟机当服务器;emqx 部署在第二台服务器,同时还有eKuiperManage,这样就能实现eKuiper配置,调试。这可以MQTT协议发布订阅。

第二步:由于要调试时序数据,选定了TDengine,那服务器端也是部署在第二台服务器,跟emqx一起,是不是。那一般是通过eKuiper往TDengine插数据,还是emqx往TDengine写数据?

第三步:要安装TDengine的客户端,一般是否可以选择专门用于显示的第三台服务器? 同时在这第三台服务器上还可以取到TDengine中的数据,自行编程写算法功能?

看了一些资料,各有不同的方案,因此特意请教具体的部署设计。谢谢。
这里或许有多个Neuron和ekuiper,不同的数据通道接到emqx服务器;emqx也可能组建集群,安装TDengine。

TDengine虽然是称时序数据库,但是看了其资料,发现跟MySQL,在客户端安装,以及程序读取数据库内的数据,都有相近之处,都可以暂时安装在windows上,那上面提到的第三台服务器就用宿主机代替,这至少可以调试完成一条数据链路。

但是上述的第二步,还是不知如何设计,一般向TDengine服务器写入数据,是通过什么方案实现?

用 eKuiper 和 EMQX 都可以写入啊。看你的 TD 定位是在哪里,是给云端应用访问还是边缘

有三个问题请教:谢谢解答。
一:目前的ekuiper的sink中,也就是数据的流向,MQTT的一路是比较成熟,但是现在还留存一个问题,其MQTT向向服务器的发布频率一直是1秒一次,如果希望这MQTT的发布速率能跟Neuron采样指令间隔相同,能否做到?
二:如果是sink打算指向是MySQL,能否做到;我看了介绍,目前暂时还没看到。
三:如果sink打算指向emqx,那选项配置什么?
上述情况下,如果有多个Neuron,是不是得有多个ekuiper插件? 那确保不同Neuron之间的数据同步性呢?
我接着往下调试,请前辈

TDengine是在云端。

  1. 没有1秒一次的限制,你这个是哪来的。流计算就是事件驱动,意思是收到一条数据马上处理一条数据,再马上输出。
  2. Sink 选择 SQL,需要安装插件。文档搜索 SQL sink
  3. EMQX 是一种 MQTT broker,当然选择 MQTT sink
  4. eKuiper 可以连多个 neuron,配置多个流指向不同的neuron就行了。不同的neuron之间的数据没有关系,"同步"需要自己做逻辑,例如 合并单流多设备数据 | eKuiper 文档

谢谢您。
目前不管是neuron以MQTT协议发布到borker,还是通过ekuiper以MQTT协议发布到broker,始终在emqx上,看到的都是一秒一次数据,并没有随着Neuron的采样时间间隔改变而改变。

neuron版本是什么,配置的采样时间间隔是多少,neuron这边修改采样时间会有一定的延迟才会生效

下载的neuron版本是2.5.3,demo版本。以主机轮询发出指令,指令间隔设置成0ms(50ms),以及Modbus TCP数据源是设置成立即响应,也就是0ms延迟。

结果是发现,1.南向设备的接收数据速率有限制,如果是设置一次传输8个字节,那疫苗也就是24个字节,相当于300ms才有一个数据包。如果指令间隔降低,那传输的效率就更低了。
2.不管是配置成Neuron直接发布mqtt,还是nueron数据经过ekuiper配置,发布mqtt,其发布频率是固定的,也就是一秒一次。这无视南向设备的发送指令间隔。