😍 2022-09-01 15:43:30 – 巴黎/法国。
客户喜欢在事件发生时了解它们。 当客户订购一双新鞋并收到购买已发货的通知时,在它到达之前获取最新的发货状态更新可以改善整体客户体验。
大卫·迪鲁夫
David 是开发者的倡导者 流 在 DataStax。 在他的职业生涯中,他从事过企业销售、开发人员宣传和开源支持工作。 他是肯塔基州路易斯维尔被马和波旁威士忌包围的父亲和丈夫。
订单更新是在事件驱动架构 (EDA) 中触发响应的事件。 EDA 是一种对状态变化(事件)做出反应并使用解耦架构转发这些事件的软件设计。
这种解耦架构可以使用多种设计模式,例如发布-订阅 (pub-sub) 模式,其中生产者发布事件,订阅者监控事件,但两者都不依赖于另一个。
Le 流 事件和事件溯源是组织为其 EDA 提供动力的两种方式。
同 流 事件,系统之间的连续数据流,数据表示使用发布-订阅模式广播的事件的新状态。 另一方面,事件溯源将每个新事件存储在添加日志中。 这是包含事件和上下文的时间顺序的事实来源。
事件溯源和 流 事件通常在 EDA 中并排使用,但区分两者很重要,因为它们的工作方式非常不同。 虽然事件流促进了系统之间更易于访问的通信,但事件溯源通过将新事件存储在仅附加日志中来提供事件历史记录。
在这里,我们将讨论事件协调的两种方法,并为每种方法提供一些用例。
流 事件:解耦您的服务
Le 流 events 使用 pub-sub 方法来允许系统之间更容易访问的通信。 在发布-订阅架构模型中,消费者订阅主题或事件,生产者发布这些主题以供消费者消费。 pub-sub 设计将发布者和订阅者系统解耦,从而可以轻松地单独扩展每个系统。
发布者和订阅者系统通过消息代理(例如 Apache Pulsar)进行通信。 当状态改变或事件发生时,生产者将数据(数据源包括 Web 应用程序、社交媒体和物联网设备)发送到代理,然后代理将事件链接到订阅者,订阅者再消费该事件。
Le 流 事件跟踪涉及来自应用程序、数据库、传感器和物联网设备等来源的连续数据流。 事件流使用流处理,在生成过程中处理和解析数据。 这种快速处理转化为更快的结果,这对于行动时间窗口有限的公司很有价值,就像任何实时应用程序一样。
Le 流 的事件为公司提供了几个优势; 这里有几个:
改善客户体验
广播和处理事件为组织提供了丰富客户体验的机会。 例如,订购晚餐的客户可以获得即时状态更新,让他们知道送货车辆何时正在前往他们的位置或已经到达。 这种增加的客户体验转化为更多的信任、更好的评论和更高的收入。
风险缓解
PayPal 和其他金融技术应用程序等应用程序可以使用事件广播来提供在线欺诈检测,从而通过实时监控提高安全性。 欺诈算法使用预测分析来测试事件(购买或交易)的情况,以检测与规范的偏差(异常值)。 如果系统检测到异常或异常事件,它会停止交易或阻止卡完成交易。
降低运营成本
通过分析事件流,工业工具可以记录性能和健康指标以评估设备健康状况。 此功能允许组织在完全故障之前对机器执行预测性维护,这需要更多的维修成本。 例如,在制造业中,组织可以使用 Pulsar 源来聚合和处理机器参数数据,例如温度或压力。 工程师可以设置机器的最高温度并设置警报,如果超过该温度就会发出警报。 机器操作员可以在更昂贵的问题出现之前进行检查和维护。
如何 流 使用的事件?
Le 流 对于流式传输大量数据并依赖于快速、可操作的洞察力的企业和应用程序而言,这一点至关重要。 这些应用包括电子商务、金融商务和物联网设备。
金融交易应用程序使用 流 发布客户希望立即采取行动的紧急事件。 例如,用户可以订阅发送特定事件(例如股票价格变化)更新的后端服务,以实现快速决策。
Le 流 在处理支付和其他交易(并阻止欺诈交易)的金融系统中也有风险和欺诈检测应用程序。 定义的欺诈算法可以通过在生成数据后立即分析数据来阻止可疑交易。
事件溯源:一个简洁的故事
事件溯源将数据作为事件存储在附加日志中。 该过程在事件对象中捕获应用程序状态的每一个变化,并将这些事件对象按时间顺序存储为日志。 通过事件溯源,事件存储将业务实体的状态编译为序列中的事件,并且状态变化(例如新订单或订单取消)会将最后一个状态添加到事件列表中。
为了使事件搜索有效地工作并消耗最少的资源,每个事件对象应该只包含必要的细节。 这最大限度地减少了存储空间,并防止在数据处理中使用宝贵的资源,从而导致不可操作的见解。
事件存储编译事件和业务上下文; 将长流添加到事件日志会快速消耗数据库存储。 只保留必要的事件上下文作为事件对象的一部分,可以释放存储空间以添加多个事件日志,从而生成可操作的见解。
在这种情况下,组织可以选择使用“快照”来帮助优化性能。 快照用于存储实体的当前状态。 了解当前状态可能只涉及拉取快照并重新创建时间线以了解最新状态。
让我们来说明这一点。 假设我们有一个电子商务商店最近商品的数据库:
大多数数据库只存储当前状态。 如果我们要报告我们是如何达到股票最终价值 91 的,那么我们如何到达那里就无法确定或明确。 事件溯源在日志中记录每个状态更改,从而可以跟踪事件历史以进行根本原因分析和审计。
上图说明了对事件的搜索,并显示了三个事件,每个事件都有日期、数量和数据库项目类型。 在这种情况下,我们可以追踪我们是如何得出最终数量 91 的。
医疗保健组织是监管最严格的行业之一,其法规不断变化以保护客户信息。 他们需要一种灵活的存储解决方案,可以根据不断增长的数据需求进行扩展,同时保持从遗留系统到新技术的轻松迁移。
通过使用事件存储作为单一事实来源,医疗保健系统可以依靠事件日志的不可变状态来了解其数据的真实状态,并使用数据处理实时流进行有价值的预测。 零售和电子商务企业可以通过分析可持续的大型活动商店来更好地了解他们的客户,这有助于他们创造更个性化的客户体验。
之间的差异 流 事件和事件溯源
之间有一些相似之处 流 事件和事件溯源。 一方面,每种事件协调方法都使用解耦的微服务架构,这有助于提高可扩展性和性能。
尽管事件存储和流在状态持久性方面有所不同,但它们对于为应用程序提供当前事件状态以用于分析和业务决策至关重要。 此外,这两种事件协调方法都具有持久的存储能力,尽管事件存储通常提供比事件流更长的扩展存储。
在这里,让我们深入探讨两者之间的一些关键区别 流 事件和事件溯源。
优化
Le 流 通过将发布者与订阅者解耦并促进数百万高性能消息的发布,对于动态数据之间更易于访问的通信是最佳选择。 另一方面,事件溯源通过将实体的每个新状态存储在仅附加日志中来帮助建立事件历史记录。
数据移动
对于事件查找,数据是静止的,因为事件是不可变的。 但是,事件流涉及始终在传输中的数据,在数据库、传感器和应用程序等多个存储系统之间传递。
包
Le 流 事件和事件溯源有助于协调事件驱动架构中的事件。 尽管它们的用途和价值不同,但它们可以很好地协同工作,以帮助创建持久且高性能的应用程序。
Le 流 事件使用解耦的发布-订阅模型从各种来源流式传输数据,这有助于推动业务决策。 不幸的是,尽管事件广播工具可能具有持久存储,但它们并非旨在长时间存储消息,因为持久存储功能仅持续足够长的时间以使其具有容错性和弹性。
事件溯源可以被视为一个子集或组件 流 的事件。 事件搜索以有序的方式将新事件添加到当前事件列表中。 它还可以作为可靠审计的真实来源,并随时获取事件的当前状态。 事件溯源对于具有严格监管和审计要求的金融行业以及跟踪和构建事件当前状态的可靠存储至关重要。 另一方面, 流 事件在金融交易应用程序中至关重要,因为这些应用程序的操作具有有限的时间窗口并需要立即采取行动。
EDA 不一定是目的地。 这是一条路要走,导致一定的系统性能和特性。 例如,事件溯源将一组微服务解耦,从而减少它们之间的相互依赖。 这促进了弹性和更容易的迭代,以及其他好处。 结合事件溯源,微服务能够重放事件以及针对给定功能(如用户配置文件)的完整更改日志。 这种类型的架构在现有系统中开辟了新的可能性。
特色图片来自 Canva。
来源: 评论 新闻
不要犹豫,在社交网络上分享我们的文章,给我们一个坚实的推动力。 👓