K8s, Kafka事件溯源架构模式和用例示例

随着当今快速变化的业务和技术格局,开发人员、数据科学家和IT运营部门正在共同构建具有新技术和动态架构的智能应用程序,因为它们具有灵活性,交付速度和可维护性。本文我将介绍有助于技术架构进化的技术:容器、Kubernetes和Kafka API。然后,我们将研究一些Kafka事件溯源架构模式和用例示例。



容器

容器简化了从开发到部署的过程,而不必担心可移植性或可复制性。开发人员可以将应用程序及其执行应用程序所需的所有依赖项、库和配置文件打包到容器映像中。容器是镜像的可运行实例。可以从镜像服务器拉取镜像,并将其部署安装到容器运行时的任何位置:您的笔记本电脑、本地服务器或云端。

与虚拟机相比,容器具有同等级的资源和隔离优势,但重量较轻,因为容器虚拟化了操作系统而不是硬件。容器更轻便、更高效,占用的空间更少,使用的系统资源更少,并且可以在几秒钟内完成旋转。


Kubernetes

Kubernetes提供了一个配置,自动化和管理平台:

  • 容器的智能和均衡调度
  • 容器的创建,删除和移动
  • 易于扩展容器
  • 监测和自我修复能力

Kubernetes集群由至少一个管理集群的主节点和多个工作节点组成,其中容器化应用程序使用pods运行。pod是一个或多个容器的逻辑分组,这些容器被安排在一起并共享资源。pods允许多个容器在主机上运行并共享资源,例如存储、网络和容器运行时信息。


主节点以这种方式管理集群:

  • API服务器解析YAML配置并将配置存储在etcd键值存储中。
  • etcd存储并复制集群的当前配置和运行状态。
  • 调度程序在工作节点上调度pods。
  • 控制器管理器管理非终止控制循环的状态,例如pod副本。

这个微服务体系架构风格,是一种将应用程序开发,作为一套围绕特定的业务功能,内置小而独立部署的服务的方法。微服务方法与容器和Kubernetes非常一致。通过跨多个节点部署服务,您可以获得模块化、广泛的并行性和高效的扩展。微服务模块化有助于独立更新/部署,并有助于避免单点故障,这有助于防止大规模停机。

MapR Data Fabric包括一个本机集成的Kubernetes卷驱动程序,用于提供持久存储卷,以便访问位于本地、跨云和边缘的任何数据。有状态应用程序现在可以很轻松地部署在生产用例、机器学习管道和多租户用例的容器中。


事件驱动的微服务

大多数业务数据是作为一系列事件或事件流生成的;例如,Web或移动app交互、传感器数据、银行交易和医疗设备都会持续生成事件。

微服务通常具有事件驱动架构,使用仅附加事件流,例如Kafka或MapR事件流(提供Kafka API)。


使用MapR-ES(或Kafka),事件被分组为称为“主题”的事件的逻辑集合,主题被分区以进行并行处理。您可以将分区的主题想象成事件日志、新事件附加到末尾,以及像队列一样,事件按接收顺序传递。



与队列不同,事件在传递后不会被删除;它们保留在分区上,可供其他使用者使用。


旧的消息将根据流的生存时间设置自动删除;如果设置为0,则永远不会删除它们。


阅读时不会从主题中删除邮件,主题可以有多个不同的使用者。这允许不同的使用者因为不同的目的处理相同的消息。流水线操作也是可能的,使用者可以丰富一个事件并将其发布到另一个主题。


MapR-ES提供可扩展的高性能消息传递,可在适合的硬件上每秒轻松地传递数百万条消息。发布/订阅Kafka API提供了分离的通信,使得在不中断现有流程的情况下轻松添加新的侦听器或新发布者。

当您将这些消息传递功能与简单的微服务概念相结合时,您可以极大提高构建、部署和维护复杂数据管道的灵活性。管道是通过简单地将多个微服务链接在一起来构建的,每个微服务监听一些数据的请求,执行其指定的任务,并选择性地将自己的消息发布到主题。


流是数据系统

事件源是一种软件架构模式,其中应用程序的状态由一系列事件确定,每个事件都记录在一个仅附加的事件存储或流中。例如,假设每个“事件”都是对数据库中某个条目的增量更新。在这种情况下,特定条目的状态只是与该条目相关的事件的累积。在下面的示例中,流将持久化存储所有存款和取款事件的队列,并且数据库表会保留当前帐户余额。


那么其中哪一个流或数据库是一个更好的记录系统?流中的事件可用于重建数据库中的当前帐户余额,但不能反过来。数据库复制实际上是由生产者将更改写入更改日志,以及消费者在本地应用更改。


银行单片应用程序微服务化

银行经常使用大型机应用程序,这些应用程序运行起来很昂贵,难以更新,也很难完全替换。让我们看一下如何将事件驱动的微服务逐步添加到单一的银行应用程序中,该应用程序包括支付交易和用于欺诈检测,报表和促销电子邮件的批处理作业。

在下面显示的设计中,来自单片数据库提交日志的支付事务将发布到流,该流设置为永远不会丢弃数据。不可变事件存储(流)成为记录系统,事件由基于用例的不同数据管道处理。事件数据管道汇集到多语言持久性和不同的数据存储技术,每个技术提供不同的物化视图 - MapR-DB HBase和MapR-DB JSON文档,图形和搜索数据库 - 以便微服务始终具有最新的以最合适的格式查看其数据。使用不同的模型进行读取而不是写入是Command Query Responsibility Separation模式。


事件存储通过重新运行流中的事件来提供重建状态。这是事件溯源模式。可以重新处理事件以创建新的索引、缓存或数据视图。


消费者只需从最旧的消息中读取最新消息即可创建新的数据视图。


随着支付交易现在以事件流的形式出现,Spark Machine Learning和Streaming 的实时欺诈检测可以比以前更容易添加,如下面的数据流所示:


流中事件的保留时间很长,因此可以添加更多的分析和功能。例如,卡位置历史的物化视图可以以数据格式(如Parquet)存储,这提供了非常有效的查询。

通过添加事件和微服务

来改进体系结构

有了更多的事件源,可以添加流处理和机器学习来提供新的功能。跨广泛交互的机器学习技术(包括点击流、点击率、呼叫中心报告、客户偏好和购买数据)可用于提供诸如财务建议、预测、警报和相关产品等见解。例如,结合购买历史的网络点击流分析可用于将共享行为亲和力的客户分组成组以便更好地定向广告。当客户单击目标产品时,可以将潜在客户事件添加到流中,从而触发对MapR-DB中客户配置文件的更新以及对潜在客户的自动化活动。


医疗活动溯源示例

现在,让我们看看如何通过国家健康信息网络的联络技术在医疗保健中实现流优先体系架构。来自医院、供应商和实验室的数据流入ALLOY Health Platform。MapR-ES解决了HIPAA的数据沿袭问题,因为流通过成为每个数据更改的无限、不可变的日志而成为记录系统。PolyGlot持久性解决了存储多种数据格式的问题。

通过将数据实时流式传输到MapR-DB HBase API / MapR-DB JSON API,图形和搜索数据库,可以针对不同的用例(例如人口健康查询和患者)提供,探索和分析物化视图匹配。


其他医疗保健流处理和机器学习数据管道示例包括:

UnitedHealthcare和Optum实验室正在对索赔事件进行预测性分析,以减少欺诈浪费和滥用医疗费用。

Optum Labs正在从3000多万患者的多个来源使用预测分析:

  • 为医生提供及时、可操作的情报,以帮助诊断患者病情的准确性。
  • 帮助治疗与结果的匹配。
  • 预测有疾病或再入院风险的患者。


零售活动溯源示例

一家大型零售商希望提高季节灵活性和库存消减,以应对需求变化和降低单价。

数据收集自销售点交易、库存状态和定价、竞争情报、社交媒体、天气和客户(清除个人身份识别),允许集中分析与改进业务相关的关联性和模式。大数据算法分析店内和在线购买、社交媒体趋势、当地体育赛事和不同天气下购买模式,以构建个性化客户体验的创新应用程序,同时提高物流效率。对销售点交易进行分析,以提供产品建议或折扣,根据这些建议或折扣,产品是在一起购买的或在另一个产品之前购买的。预测分析是用来了解哪些产品在特定的日子在特定的商店销售更多,以减少积压,并保持对需求量最大的产品的适当库存,从而帮助优化供应链。


结论

几个不同技术变化的融合已经显著地改变了应用程序的构建方式。事件驱动的微服务、容器、k8s和机器学习数据管道的结合正在加速下一代智能应用程序的开发,这些应用程序利用现代计算基础设施支持的现代计算范例。MapR聚合数据平台将全球事件流、实时数据库功能,可扩展企业存储与数据处理,分析引擎的集合,集成在一起,为新一代数据处理管道和智能应用程序提供动力。

end:如果你觉得本文对你有帮助的话,记得点赞转发,你的支持就是我更新动力。

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();