Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.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
Apache kafka 如何将OPC-UA数据与卡夫卡连接?_Apache Kafka_Iot_Opc Ua_Milo - Fatal编程技术网

Apache kafka 如何将OPC-UA数据与卡夫卡连接?

Apache kafka 如何将OPC-UA数据与卡夫卡连接?,apache-kafka,iot,opc-ua,milo,Apache Kafka,Iot,Opc Ua,Milo,我想把opc ua数据映射到卡夫卡主题中。例如,confluent没有特定的连接器 我将使用eclipse/milo() OPC是您的服务器,通过OPC的节点,您就拥有了数据。当您拥有数据时,您可以选择对数据执行任何操作。您可以编写一个处理程序类或服务来处理从OPC服务器获取的数据。您必须编写一个基本类,其中包含一个您最喜欢的方法,以将获取的数据放入Kafka或Redis或任何东西中基本上你需要kafka的java客户端,并将其与Milo OPC一起包含在你的项目中,使用Milo节点读取数据。r

我想把opc ua数据映射到卡夫卡主题中。例如,confluent没有特定的连接器


我将使用eclipse/milo()

OPC是您的服务器,通过OPC的节点,您就拥有了数据。当您拥有数据时,您可以选择对数据执行任何操作。您可以编写一个处理程序类或服务来处理从OPC服务器获取的数据。您必须编写一个基本类,其中包含一个您最喜欢的方法,以将获取的数据放入Kafka或Redis或任何东西中基本上你需要kafka的java客户端,并将其与Milo OPC一起包含在你的项目中,使用Milo
节点读取数据。readValue().get()
并使用kafka的java客户端将其放在kafka上。

我曾经处理过这个问题。那是一个POC工作。 以下是我对此的看法

Kafka有两个用于与外部系统通信的API,即Kafka客户端API和Kafka连接器。Kafka API简单且功能强大,但您需要实现解决方案,以便能够提供容错能力,并在需要时将工作分发给工作人员。Kafka Connect功能强大,旨在支持解决此问题的解决方案,使开发人员更容易喜欢它

OPC服务器不能作为集群工作。它像冗余对一样工作。无法在OPC服务器产品中分配负载

那么,我们真的需要kafka connect集群将数据从OPC发送到kafka吗? 因为kafka connect设计为作为微服务工作,以便能够分配负载,并作为集群工作。但是,OPC服务器只在一台机器上工作,如果数据适合于一台机器,则不需要创建单独的集群来发送数据

  • 可以这么说,但这是一个HA(高可用性)解决方案。然后我说您的OPC服务器上有SPOF(单点故障)。因此,如果您解决了这个问题,就不必担心卡夫卡连接的可用性。我将解释下面的解决方案
您正在创建额外的组件,您需要为此目的进行管理,而在我们的案例中,这并不是真正必要的

我的解决办法很简单。我使用Kafka客户端API。它在安装了OPC服务器的机器上充当代理。这就简化了问题

我决定让那个代理人在这个过程中工作。因为,我的目的是尽可能快地将数据发送到卡夫卡,我需要一个快速且轻量级的解决方案

进程间通信会产生开销,我们的代理将在安装了OPC服务器的同一台机器上工作。OPC消息很小,程序也很轻量级,我不想为此造成开销,决定采用进程内的方式。 所以,为了能够首先实现这一点,我寻找了OPC客户端API

我看到OPC UA基金会提供了一个官方客户端API,并用C语言编写。你可以找到它。我还知道JavaAPI是Kafka客户端中最强大的API。因此,我寻找另一个用Java编写的OPC客户端API(正如我所说的,这是因为我想在过程中使用该解决方案)。然后我找到了米洛。但它在早期还没有在生产环境中进行测试,我决定使用用C#编写的官方标准API

因此,我使用OPC UA标准库和卡夫卡C#Client库。集成非常简单,但您需要考虑一些问题,例如您的程序可能会因某些原因崩溃,如果您不能容忍数据丢失,则需要实现一个解决方案,以将数据持久保存在嵌入式数据库中,例如(因为它已经用c#编写,并与我们的程序一起工作)

在该解决方案中,为了能够实现HA和消除SPOF,您可以在3台机器上安装一台3 OPC服务器,并在这些机器上安装此代理软件,然后您就可以使用高可用性和容错解决方案进行生产

PS:我们本来打算与KepServerEX合作——我们决定支持KepServerEX,并且有很多驱动程序支持——它只适用于windows机器。

您可以使用它。它连接到1-n OPC UA服务器,您可以通过GraphQL或MQTT访问OPC UA标记,还可以添加记录器,将OPC UA值记录到Apache Kafka