如今,物联网(IoT)的应用愈发依赖于分析大量设备生成的数据,或实时更新机器学习算法。如果缺乏实时获取、处理和响应数据的能力,可能导致患者受伤、车辆事故或系统故障。
那么,企业如何能够高效而经济地构建一个能够大规模接收和响应数据的可靠平台呢?企业可以利用基于开源软件堆栈构建的数据流平台和存储系统来实现这一目标。
当前,许多开源解决方案在数千个生产环境中都表现出色。许多产品可通过商业企业获得企业级支持与咨询服务,并可能提供企业版本的解决方案。这些受支持的解决方案使企业能够在实施物联网解决方案时以较低的前期投资实现数字化转型,同时为公司提供可靠且面向未来的基础设施。
以下是一些开源解决方案的示例,这些方案构成了许多成功数字化转型企业的基础。
流数据
开源流解决方案如Apache Kafka和Apache Flink被广泛用于构建实时数据管道,以在物联网部署中的系统和应用之间传输数据。例如,在患者监控的场景中,流传输解决方案将由连接到患者的IoT传感器收集的数据传递到平台,以便对数据进行汇总、分析和存储。
如Box、LinkedIn、Netflix、Oracle和Twitter等公司均使用Kafka。Flink则被阿里巴巴、AWS、Capital One、eBay和Lyft等企业应用。然而,要使流传输解决方案能够大规模支持实时业务流程,必须与其他技术整合,包括分布式内存计算平台、容器管理解决方案,以及分析和机器学习功能。
内存计算
Apache Ignite是一个部署在商品服务器集群上的分布式内存计算平台。它可以作为现有应用程序与基于磁盘的数据库之间的内存数据网格,也可以作为新应用程序的独立内存数据库。Ignite通过池化集群的可用CPU和RAM,并将数据和计算分配到各个节点,能够在本地、公共或私有云中或混合环境中部署。Ignite支持ANSI-99 SQL和ACID事务。
Ignite能够实时处理大量数据。在所有数据保留在内存的情况下,Ignite利用MapReduce在整个分布式集群上执行大规模并行处理(MPP)。通过内存数据缓存和MPP,Ignite的应用性能可以比基于磁盘数据库的应用提升多达1000倍。此外,Ignite用户还可以通过原生Kafka集成,轻松地将流数据从IoT设备提取到内存计算集群中。
正如我在上一篇文章中提到的,Ignite可以被用于构建数字集成中心(DIH),以聚合和处理来自多个本地数据存储、基于云的数据源和流数据源的信息。作为DIH,Ignite提供高性能的数据访问层,使聚合后的数据能够实时供多个业务应用使用。Apache Ignite已经在美国航空、IBM、ING和24 Hour Fitness等公司的生产中得到应用。
集群管理
Kubernetes能够自动执行在Docker或其他容器解决方案中容器化的应用的部署与管理。容器解决方案创建了一个包含应用和虚拟化操作系统的软件包,使得这些应用可以在同一硬件上或跨虚拟化硬件运行多个完全独立的版本。Kubernetes简化了Docker容器的管理,确保跨服务器集群的一致性。
通过API,Kubernetes能够管理Apache Ignite和流媒体平台的资源,并自动扩展基于物联网内存计算的集群。更高的管理简便性显著降低了复杂性和错误,同时减少了开发时间。
分析与机器学习
流平台的最后一部分是对数据采取行动的能力。在分析用例中,Apache Spark是一个分布式计算引擎,专门用于处理和分析大量数据。Spark可以利用Apache Ignite内存计算平台快速分析通过流传输管道提取的数据。此外,Spark还可以将Ignite用作在线数据存储,使用户能够将数据追加到现有的DataFrame或RDD中,并重新运行Spark作业。Spark还简化了在分布式计算环境中为非结构化数据编写查询的过程。
在机器学习的应用中,Apache Ignite集成了完全分布式的机器学习和深度学习库,并针对大规模并行处理进行了优化。这一集成使企业能够创建持续学习的应用,其中机器学习或深度学习算法在内存计算集群的每个节点上本地运行,能够不断更新模型以适应新数据,即使是PB级的数据量也能轻松处理。
[[[IMG_1]]]
[[[IMG_2]]]
[[[IMG_3]]]
[[[IMG_4]]]
[[[IMG_5]]]
