用Kafka实现数字孪生的物联网架构
直播:近二十载从业老兵谈金融科技赋能的探索与实践
我们将从如下三个方面来讨论如何构建开放、且可扩展的数字孪生基础架构:
- 数字孪生与数字线程。
- 事件流、数字孪生与AI(机器学习)之间的关系。
- 使用Apache Kafka和其他物联网平台的数字孪生物联网架构。
建立数字孪生的关键要点
我们首先来了解四个基础性的要点:
- 事件流是物联网平台和其他后端应用程序/数据库的补充。
- 大多数数字孪生架构都使用机器学习(ML)和统计模型来进行仿真、预测和推荐。
- “数字孪生”一词通常是指单个资产的副本。在现实世界中,各种数字孪生比比皆是。
- “数字线程”一词涵盖了一到多个数字孪生的整个生命周期(如下图所示)。
数字孪生可以被运用到许多行业和领域,其中包括:
- 减少宕机时间
- 库存管理
- 车队管理
- 假设(what-if)模拟
- 运营计划
- 服务化
- 产品开发
- 卫生保健
- 客户体验
实际上,数字孪生不仅为各个行业带来了自动化,而且增加了不同业务的价值和创新。
事件流、数字孪生与AI(机器学习)之间的关系
开发者需要通过机器学习,并运用数字孪生,来进行准确的预测。这两者存在着互补的关系。下图展示了不同的数字孪生如何利用统计方法和分析的模型:
该示例包括了基于物理模型来模拟的各种假设情景,以及基于数据模型来估计剩余使用寿命(Remaining Useful Life,RUL)。可见,数字孪生和机器学习有着以下共同点:
- 能够持续学习、监控与行动。
- 良好的数据源是成功的关键。
- 数据集越多越好。
- 实时性、可扩展性和可靠性是关键的需求。
使用Apache Kafka来实现数字孪生,机器学习和事件流
Apache Kafka开源生态系统为机器学习提供了基础架构。下图展示了Kafka针对机器学习的架构。该架构为模型的训练、部署、评分和监视,提供了开放、可扩展、以及可靠性的实时处理。
以下是数字孪生在实际应用过程中的五大常见特征:
连接性
- 各类实物资产、企业软件与客户。
- 通过双向通信,以获取命令和控制。
同态化(Homogenization)
- 解耦和标准化。
- 信息虚拟化。
- 能与多个代理共享,且不受物理位置或时间的限制。
- 成本更低,且能够轻松地开展测试、开发和预测。
可重新编程与智能化
- 通过调整和改善特征,以开发出产品的新版本。
数字跟踪
- 能够实现时光倒流(回溯),并通过分析历史事件,以诊断问题。
模块化
- 能够对产品和生产模块进行设计和定制。
- 调整不同的模型和机器模块。
为了实现上述特征,我们可以选用不同的物联网平台。根据物联网分析研究(IoT Analytics Research)的统计:截止到2019年,市场上存在着600多个物联网平台(请参见:https://iot-analytics.com/iot-platform-companies-landscape-2020/)。与此同时,它们中的许多工具和解决方案都能够结合在一起,共同发挥作用。
下面,我们来讨论几种典型的物联网平台:
- 以Siemens S7和Modbus为首的工业物联网(IIoT)相关协议,以及与诸如OPC-UA之类标准的深度集成:它们往往并非某个单一的产品(通常是各种OEM的不同代码库)。虽然价格不菲,但是它们开放特定的接口,而且其可扩展性也十分有限。此类平台的典型代表包括:西门子MindSphere、思科Kinetic、GE Digital和Predix。
- 云提供商的物联网产品:它们提供了完备的物联网管理工具,能够与其他云服务(如:存储、分析等)实现良好的集成。不过,它们往往被云提供商的平台所绑定,且无法支持混合与边缘计算。另外,它们不但扩展性有限,而且售价也不菲。此类平台的典型代表包括:AWS、GCP、Azure和Alibaba等。
- 基于开放标准(如:MQTT)、且开源的物联网平台:它们能够开放核心的业务模型,且与基础架构无关。不过,它们在针对旧协议和专有协议的连接方面,可能不太成熟。此类平台的典型代表包括:Eclipse IoT、Apache PLC4X、Node-RED等开源框架、以及符合MQTT等标准的HiveMQ相关产品。
使用Apache Kafka和其他物联网平台的数字孪生架构
下面,我们根据数字孪生的上述五大特征,来讨论Kafka针对实时消息传递、集成与处理关键任务事件流等方面的作用:
- 连接性:Kafka Connect可以针对IoT接口、大数据解决方案、以及云服务,提供免费且实时的大规模连接。
- 同态化:Kafka实现了生产者和消费者之间真正的解耦。模式(schema)管理和实施可利用JSON Schema、Avro、Profobuf等不同技术,来实现数据的感知和标准化。
- 可重新编程与智能化:作为微服务架构的实际标准,Kafka支持:关注点分离(Separation of concerns),域驱动设计(domain-driven design,DDD,请参见:https://www.confluent.io/blog/microservices-apache-kafka-domain-driven-design/),部署新的已解耦应用,实施版本控制,A/B测试与发布。
- 数字跟踪:作为分布式提交日志,Kafka会按需将事件永久地追加、存储到您的时间点(永久保留时间可 = -1)。这非常适合为数字孪生构建数字跟踪。
- 模块化:Kafka基础架构本身就是模块化、且可扩展的,其中包括:Kafka brokers、Connect、Schema Registry、REST Proxy等组件、以及使用Java、Scala、Python、Go、.NET、以及C++等不同语言的客户端应用。通过这种模块化,您可以轻松地在边缘、混合或全局场景中,构建合适的数字孪生架构,并能够将Kafka组件与任何其他物联网方案结合起来。
下面是五种适用于数字孪生的物联网架构。您可以根据它们的优缺点,在自己的整体企业架构、项目情况、以及其他方面,做出合理的选择。
方案1:数字孪生Monolith
直接使用物联网平台来集成和构建数字孪生,无需其他数据库或其他组件。
方案2:将数字孪生作为外部数据库
物联网平台与其端点集成,数字孪生的数据被存储在诸如:MongoDB、Elastic、InfluxDB或Cloud Storage之类的外部数据库中。此类数据库仅用于存储,处理,以及仪表板分析等任务。
同时,Tableau、Qlik或Power BI之类的商业智能(BI)工具也可以使用数据库的SQL接口,来实现交互式的查询和报告。
方案3:Kafka作为数字孪生和企业其余部分的主干
物联网平台仍然与其端点集成。Kafka作为中央事件流平台,提供与其他组件之间的解耦。此处中央层是开放、可扩展且可靠的。而此处的数据库同样被用于数字孪生的存储、以及仪表板分析。其他应用也会以实时、批处理、请求-响应通信等方式,使用来自Kafka的部分数据。
方案4:Kafka作为物联网平台
作为中央事件流平台,Kafka可为物联网端点和其他应用提供关键任务的实时架构和集成层。在此方案中,数字孪生并未用到上述方案中提到的数据库,而是使用了Azure IoT Twin Twins之类的云端物联网服务。
场景5:Kafka作为物联网平台
Kafka直接被用于实现数字孪生,而并不涉及到其他组件或数据库。同时,其他消费者会直接使用原始数据和数字孪生的数据。
该方案的主要问题在于Kafka是否可以替换数据库、以及如何查询到数据(请参见:https://www.kai-waehner.de/blog/2020/03/12/can-apache-kafka-replace-database-acid-storage-transactions-sql-nosql-data-lake/)。在实际应用中,由于Kafka可以被用作数据库,因此它不会替代诸如:Oracle、MongoDB或Elasticsearch等其他数据库。