热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

事件驱动架构_了解事件驱动架构

事件驱动架构事件驱动的体系结构是一种软件体系结构范例,可促进事件的产生,检测,使用和响应。如何实现事件驱动的体系结构,以及何

事件驱动架构

事件驱动的体系结构是一种软件体系结构范例,可促进事件的产生,检测,使用和响应。

如何实现事件驱动的体系结构,以及何时使用它?

事件驱动的体系结构与微服务齐头并进。 发生操作时,将创建一个事件,然后将该事件用于在所有等待该事件发生的事件上做出决策。

服务不再绑定在一起,因为在发布订阅类型模型中,调用者不再同步调用被调用者。 相反,被呼叫者以最终一致的方式对事件进行操作。

因此,事件驱动的体系结构可以更可靠,因为它们不必立即对服务调用进行操作(允许服务在成功之前都能够失败),但是很难预测何时执行操作(对于同样的原因)。

事件驱动架构的一个简单示例是Amazon。 如果您曾经在忙碌的时间(例如黑色星期五)在亚马逊购物,则可以订购商品,但之后只能发送电子邮件说明您订购的商品实际上无货。

如果您以事件驱动的体系结构来考虑此过程,则它可能以下列方式工作:

客户订购该项目并发布OrderPlaced事件Stock服务订阅了该事件,但是在处理事件时,它检查了库存,现在为0 The Stock服务随后发布了OutOfStock事件电子邮件服务订阅了该事件并向客户发送电子邮件,说明该商品无库存。

事件驱动的体系结构可以将队列与发布订阅模型结合使用作为支持模型。 这是为了保证在链中某些服务无法处理事件的情况下传递事件消息。

事件驱动架构的优缺点

有几个原因为什么使用事件驱动的体系结构比其他体系结构有优势。

  • 松散耦合 —服务不需要相互依赖。 这应用了不同的因素,例如传输协议,可用性(服务在线)和正在发送的数据。 消费者仍将需要知道如何解释事件或消息,因此在这两个服务之间仍应使用严格的合同,但是合同的实现细节无关紧要。
  • 可扩展性 —由于服务不再耦合,服务1的吞吐量不再需要满足服务2的吞吐量。这可以帮助降低成本,因为服务不再需要24/7全天候在线,并且可以利用无服务器计算的无限扩展。
  • 异步性 -由于服务不再依赖于同步返回的结果,因此可以使用即发即弃模型,这可以大大加快流程。 这可能会有一个缺点,下面将对此进行概述。
  • 时间点恢复 -如果事件由队列支持或维护某种历史记录,则可以重播事件,甚至可以及时返回并恢复状态。

使用事件驱动的体系结构也有缺点。

过度设计流程 -有时从一个服务到另一个服务的简单调用就足够了。 如果流程使用事件驱动的体系结构,则通常需要更多的基础结构来支持它,这将增加成本(因为它将需要一个排队系统)

不一致 -由于流程现在依赖于最终的一致性,因此通常不支持ACID(原子性,一致性,隔离性,持久性)事务,因此重复处理或乱序事件的处理会使服务代码更加复杂,并且难以测试和调试所有情况。

事件发生变化会怎样?

想象一下一种情况,当我想添加或更改事件的合同时,例如在OrderPlaced事件中,将数量从整数更改为浮点数。

如果不期望此更改,这种情况将使订户中断。

您需要对事件的合同进行版本控制,以防止这种破坏。 一个好的经验法则通常是,对合同的任何增加都是可以的,但是要删除或更改某些内容,必须发布该事件的新版本,而订户也希望有新的事件合同。

翻译自: https://hackernoon.com/understanding-event-driven-architecture-ub1k3umo

事件驱动架构



推荐阅读
  • 都说Python处理速度慢,为何月活7亿的 Instagram依然在使用Python?
    点击“Python编程与实战”,选择“置顶公众号”第一时间获取Python技术干货!来自|简书作者|我爱学python链接|https:www.jian ... [详细]
  • 提供:ZStack云计算原创2016-12-26张鑫讲师介绍张鑫ZStack总架构师、联合创始人《系统虚拟化》主要作者,曾任职Intel开源软件技术中心 ... [详细]
  • Istio是一个用来连接、管理和保护微服务的开放平台。Istio提供一种简单的方式来为已部署的服务建 ... [详细]
  • 微服务下的几个难点问题及常见的解决方案
    原文链接:https:cloud.tencent.comdevelopernews1362051背景介绍1.1幂等性定义数学定义在数学里,幂等有 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 关于我们EMQ是一家全球领先的开源物联网基础设施软件供应商,服务新产业周期的IoT&5G、边缘计算与云计算市场,交付全球领先的开源物联网消息服务器和流处理数据 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • 统一知识图谱学习和建议:更好地理解用户偏好
    本文介绍了一种将知识图谱纳入推荐系统的方法,以提高推荐的准确性和可解释性。与现有方法不同的是,本方法考虑了知识图谱的不完整性,并在知识图谱中传输关系信息,以更好地理解用户的偏好。通过大量实验,验证了本方法在推荐任务和知识图谱完成任务上的优势。 ... [详细]
  • 服务网关与流量网关
    一、为什么需要服务网关1、什么是服务网关传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关& ... [详细]
  • 有意向可以发简历到邮箱内推.简历直达组内Leader.能做同事的话,内推奖励全给你. ... [详细]
  • TiDB | TiDB在5A级物流企业核心系统的应用与实践
    TiDB在5A级物流企业核心系统的应用与实践前言一、业务背景科捷物流概况神州金库简介二、现状与挑战神州金库现有技术体系业务挑战应对方案三、TiDB解决方案测试迁移收益问题四、说在最 ... [详细]
  • 后台自动化测试与持续部署实践
    后台自动化测试与持续部署实践https:mp.weixin.qq.comslqwGUCKZM0AvEw_xh-7BDA后台自动化测试与持续部署实践原创 腾讯程序员 腾讯技术工程 2 ... [详细]
  • [我们是谁?] ... [详细]
  • 虚拟化_深度:资源虚拟化
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了深度:资源虚拟化相关的知识,希望对你有一定的参考价值。 ... [详细]
author-avatar
xieyuhua
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有