Kubernetes,Kafka事件采购架构模式和用例示例

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

集装箱

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

资源

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

Kubernetes

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

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

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

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

  • API服务器解析YAML配置并将配置存储在etcd键值存储中。
  • etcd存储并复制当前配置和集群的运行状态。
  • 调度程序调度工作节点上的pod。
  • 控制器管理器管理非终止控制循环的状态,例如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中客户档案的更新以及向潜在客户自动投放活动时,可以将潜在客户事件添加到流中。

医疗事件采购示例

现在,让我们来看看Liaison Technologies为医疗保健信息网络如何在医疗保健中实施流优先架构。来自医院,供应商和实验室的数据流入ALLOY Health Platform。MapR-ES解决了HIPAA合规性的数据沿袭问题,因为流成为每个数据变化的无限,不可变日志的记录系统。多语言持久性解决了存储多种数据格式的问题。通过将数据实时流式传输到MapR-DB HBase API / MapR-DB JSON API,图形和搜索数据库,可以针对不同的用例(例如人口健康查询和患者)提供,探索和分析物化视图匹配。

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

UnitedHealthcareOptum实验室正在对索赔事件使用预测分析,以减少欺诈浪费和医疗保健支付的滥用。

  • Optum Labs正在使用来自超过3000万患者的多种来源的预测分析:

零售活动采购示例

一家大型零售商希望提高季节敏捷性和库存纪律,以便对需求变化作出反应并减少降价。

数据来自销售点交易,库存状态和定价,竞争情报,社交媒体,天气和客户(擦洗个人身份识别),允许集中分析与改善业务相关的相关性和模式。大数据算法分析店内和在线购物,Twitter趋势,本地体育赛事和天气购买模式,以构建创新应用程序,个性化客户体验,同时提高物流效率。分析销售点交易以基于哪些产品一起购买或在另一产品之前购买而提供产品推荐或折扣。

结论

几种不同技术转变的汇合极大地改变了应用程序的构建方式。事件驱动的微服务,容器,Kubernetes和机器学习数据管道的组合正在加速下一代智能应用程序的开发,这些应用程序正在利用现代计算基础设施的现代计算范例。MapR融合数据平台将全球事件流,实时数据库功能和可扩展的企业存储与一系列数据处理和分析引擎相集成,为新一代数据处理流水线和智能应用提供支持。

原文标题《Kubernetes, Kafka Event Sourcing Architecture Patterns, and Use Case Examples》

作者: Carol McDonald

译者:February

不代表云加社区观点,更多详情请查看原文链接

原文链接:https://dzone.com/articles/kubernetes-kafka-event-sourcing-architecture-patte

原文作者:Carol McDonald

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏互联网高可用架构

互联网性能与容量评估的方法论和典型案例5 性能评估参考标准

4714
来自专栏程序人生

Docker hackathon, teamspark 及团队协作软件设计上的思考

这个周末我参加了docker hackathon,一个旨在为docker 2015大会暖场的编程马拉松。大赛在旧金山Mission St.上的万豪举行,硕大的餐...

3193
来自专栏乐沙弥的世界

DBA 的那些事

      说起DBA,全称是Database Administrator,不是Doctor of Business Administration,千万不要误解...

1210
来自专栏ArrayZoneYour的专栏

如何偷懒地用 PHP 搭建一个班级网站

一名网站开发的萌新,在大一上半学期,就想做一个我们班级专属的网站,方便同学们(方便我这个学委偷懒)。下面放出我的网站信息架构、技术组合和从一个小白成长到现在一个...

2.6K0
来自专栏大数据文摘

企业安全管理的“六脉神剑”

1855
来自专栏罗超频道

Chrome支持Android应用,浏览器正在成为操作系统?

Google 日前已决定将ARC开放给所有开发者,并且ARC在Chrome OS和Chrome浏览器中均可以运行。ARC全称是App Runtime for C...

3244
来自专栏杨建荣的学习笔记

自动化平台开发的几点总结

最近花了些时间在琢磨自动化平台开发的事情,所以每天都会抽出几个小时来写一写,大方向的开发任务算是逐步有了眉目。如果客观来说,这部分的工作算是完成了20%左右。前...

3578
来自专栏Debian社区

Debian 成为主流 Linux 操作系统的七个原因

Debian也许是历史最悠久的发行版之一,但很显然,它仍可以教其他发行版好几招。要是没有Debian,Linux领域的境况会大不一样,会黯然失色好多。Debia...

702
来自专栏CreateAMind

从GITLAB误删除数据库想到的

酷 壳 – CoolShell http://coolshell.cn/articles/17680.html

1754
来自专栏即时通讯技术

扫盲贴:认识MQTT通信协议

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输)是IBM开发的一个即时通讯协议,有可能成为物联网的重要组成部...

3043

扫码关注云+社区