随着当今快速变化的业务和技术格局,开发人员、数据科学家和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聚合数据平台将全球事件流、实时数据库功能,可扩展企业存储与数据处理,分析引擎的集合,集成在一起,为新一代数据处理管道和智能应用程序提供动力。

希望这篇文章对您有用,感谢您的观看。

长按二维码 ▲

订阅「架构师小秘圈」公众号

如有启发,帮我点个在看,谢谢↓

K8s, Kafka事件溯源架构模式和用例示例相关推荐

  1. 事件溯源|日志记录-一个基础的微服务模式

    导语: 微服务架构目前是各互联网系统架构的首选,在使用微服务的过程中,调试一个分布式系统是一项具有挑战的任务, 事件溯源是一种非常好的方式来解决微服务可见性的一种手段.且看大名鼎鼎的couchbase ...

  2. 事件溯源-《复杂软件设计之道:领域驱动设计全面解析与实战》笔记 - 6

    在我的博客阅读本文 文章目录 1. 关于事件溯源 2. 基于事件溯源的聚合根设计 2.1. 用事件替代状态 2.2. 用活动替代聚合根 3. 事件溯源优点 3.1. 替代分布式事务 3.2. 事件日志 ...

  3. Newbe.Claptrap-一套以“事件溯源”和“Actor模式”作为基本理论的服务端开发框架...

    本文是关于 Newbe.Claptrap 项目主体内容的介绍,读者可以通过这篇文章,大体了解项目内容. 轮子源于需求 随着互联网应用的蓬勃发展,相关的技术理论和实现手段也在被不断创造出来.诸如 &qu ...

  4. Newbe.Claptrap - 一套以 “事件溯源” 和“Actor 模式”作为基本理论的服务端开发框架...

    本文是关于 Newbe.Claptrap 项目主体内容的介绍,读者可以通过这篇文章,大体了解项目内容. 轮子源于需求 随着互联网应用的蓬勃发展,相关的技术理论和实现手段也在被不断创造出来.诸如 &qu ...

  5. 基于事件驱动架构构建微服务第8部分:在应用程序上实现事件溯源

    原文链接:https://logcorner.com/building-microservices-through-event-driven-architecture-part8-implementi ...

  6. 基于事件驱动架构构建微服务第7部分:在仓储上实现事件溯源

    原文链接:https://logcorner.com/building-microservices-through-event-driven-architecture-part7-implementi ...

  7. java架构模式与设计模式(四)--事件风暴

    原文地址 目录 什么是事件风暴 事件风暴流程 物料准备 参与人员 寻找领域事件 寻找命令和角色 寻找领域模型和聚合 划分子域和限界上下文 常见的问题 事件的粒度? 对某个事件有歧义 一个命令产生多个连 ...

  8. java架构模式与设计模式(三)--事件风暴

    本文来自 什么是事件风暴 很多人在学习DDD的过程中,都会有一个疑问:DDD的概念看着挺多,听起来也很有用.但具体怎么落地实施到项目中? 事件风暴(Event Storming)于2013年首次被提出 ...

  9. 事件朔源模式——云计算架构常用设计模式

    背景 在分布式系统当中,处理数据的主要方法是保存数据当前的状态.例如,传统的CRUD模式种,从存储器读取数据,进行修改,并更新数据库种当前的数据状态,而此过程的实现,通常需要锁定数据的事务来进行实现. ...

最新文章

  1. Swift:print()vs println()vs NSLog()
  2. 洛谷 P2738 [USACO4.1]篱笆回路Fence Loops
  3. java基础 ArrayList集合基本方法演示
  4. java string su_JAVA基础--常用类String
  5. jsonrpc php使用,利用php怎么编写一个json rpc框架
  6. 前端大牛or架构师应该具备这些
  7. 【终终极版】linux(Ubuntu)下wineQQ的安装办法
  8. Spring-IoC注解
  9. SSD、eMMC、UFS的区别
  10. JS下载喜马拉雅非付费音频
  11. [深入研究4G/5G/6G专题-48]: 5G Link Adaption链路自适应-4-下行链路自适应DLLA-PDCCH信道
  12. android-设置/去除背景,透明度
  13. 光遇脚本弹琴_光遇自动弹琴脚本手机版
  14. (二)买基金的成本知识
  15. 使用HTML5/CSS3制作便签贴
  16. 第三方物流学习(五)
  17. stress命令安装
  18. Deep Gait Recognition综述提炼
  19. 一个验证码破解的完整演示
  20. 前端打包利器,webpack工具,app打包工具

热门文章

  1. 07-图6 旅游规划 (25分)(以此感谢zyx佬)
  2. 图论-最短路Dijkstra算法详解超详 有图解
  3. BZOJ 1589 Trick or Treat on the Farm (tarjan缩点,记忆化搜索)[Usaco 2008 Dec Gold]【BZOJ计划】
  4. 模板 - 无向图的连通性
  5. P3743 kotori的设备(二分答案,思维,线性)难度⭐⭐⭐
  6. mysql会话级表_php – MySQL会话表方法
  7. 记selenium1.0升级到selenium2.0
  8. new操作符具体干了啥
  9. Timer 和TimerTask 的定时任务入门
  10. 关于Spring boot使用心得