0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

事件驱动的体系结构的一些想法

汽车玩家 来源:今日头条 作者:闻数起舞 2020-05-03 18:39 次阅读

本文只是有关事件驱动的体系结构的一些想法。 这里没有代码,只有观察和建议。 明确地说,我将使用事件驱动一词,但如果您阅读上面的Wikipedia参考,则会发现我也错误地混入了消息驱动系统。

TLDR;

这是关于复杂性的讨论,显然是说,强大的力量伴随着巨大的责任。

基于事件的架构

基于事件的体系结构范式的核心是事件的产生,检测,消耗和反应的解耦。它们应该在反映这一点的代码中进行组织,即与生产,检测,消耗和反应相关的代码应分别分组,并且通常还通过多个应用程序进行分发。尽管事情是有条理的,并且肯定有明确的因果关系,但通过系统的分派机制进行的每次转换都会充当信息壁垒。在许多体系结构中,如果您从第一段代码开始,则可以跟踪在给定情况下从头到尾遵循的代码路径,通常可以使用调试器实时进行。使用基于事件的系统,通过事件分配器的第一跳更有可能使您感冒。您立即面临一个问题,即许多现有的听众/订户中的哪些人将对事件做出响应,他们是否都在此过程中进行响应,是否可以保证收据,以及确定性发生的顺序?

它实际上是一个公开喊价(outcry)系统,在通常情况下,出价(通话)和要约(响应)易于观察和配对,但是在混乱的时期,以观察员的身份进行的所有呼喊变得几乎不可能。

我指的是我正在替换的当前事件驱动系统,称为弹球机,因为球会大量涌入,在周围疯狂反弹,有的会导致奖品弹出,而有的则会消失殆尽。 您必须是粒子物理学家才能认为系统是可预测的和可理解的。

级联混沌的真实示例

我记得读过一次关于航空公司系统停机的事后调查,我相信那是英国航空公司的UPS故障,恢复工作花了几天的时间。为什么?他们的系统都是事件驱动的,并挂在一条通用的消息总线上。随着时间的流逝以及通过企业收购,IT系统的有机增长意味着他们根本不知道到底在听什么,而且系统实施在容错方面也不一致。许多系统需要重新启动以重新建立通信,并且尽管UI可以快速检测和处理,但在不能解决所有问题时,他们显然会蛮力地"重新启动所有"。但是,由于系统之间的相互依赖性以及几乎同时进行的重启,因此并非所有重启均能正常工作。只是随着时间的流逝,通过注意到非功能性功能才发现了一些问题。例如,也许您可以预订航班,选择座位,登记行李,但行李标签不会在希思罗机场的柜台打印。因此,他们必须确定应该发生什么事件链,哪些链断裂了,没有发生什么事件反应以及最后应该由哪个系统执行。

我是否要注意事件驱动系统?

不。它们功能强大,并且在许多情况下绝对是正确的解决方案。 哎呀,我们正在用另一种事件驱动的架构替换弹球机。 什么?! 是的,这是我们方案中的正确工具。

因此,如果我不是说不使用事件驱动的体系结构,那是什么意思?

确保它们是可追踪的

从第零天开始进行跟踪和恢复:

· 将关联标识符和发起者信息维护到事件中。

· 统一审核/记录命令和事件。

· 请勿使用Blob或任何方案文本(如JSON)。 您希望始终使用通用语言,因为许多分布式部分正在监听。 集中定义事件,并在所有地方使用这些定义。 您想知道更改对整个系统的影响。 提前计划事件的演变变化。 在可能的情况下,请避免对现有字段进行结构更改,而应采用"狂暴/吹扫"方法,在这种情况下,您仅进行累加并直到要清理。

· 研究Zipkin和监视工具之类的东西,以显示跟踪信息。

· 如果另一个系统取决于您的事件,但又不能订阅您的调度程序,而是从某个持久性日志中扫描事件,请确保它们也遵循这些规则,不要在异构边界上停止这些最佳做法。

这些建议似乎过于严格,但是我一次又一次地看到人们认为他们可以在获得一定收入后再解决这些问题,然后当问题确实出现时,发现没有APM或快速解决方案可以追溯地真正修复生态系统。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 架构
    +关注

    关注

    1

    文章

    493

    浏览量

    25325
  • 事件驱动
    +关注

    关注

    0

    文章

    9

    浏览量

    6721
收藏 人收藏

    评论

    相关推荐

    嵌入式微处理器体系结构有几种

    微处理器体系结构可以分为多种类型,下面将详细介绍其中的一些主要体系结构。 单核体系结构 单核体系结构是最简单和常见的嵌入式微处理器
    的头像 发表于 04-21 16:29 937次阅读

    DVS企业版参考体系结构

    电子发烧友网站提供《DVS企业版参考体系结构.pdf》资料免费下载
    发表于 08-28 10:32 0次下载
    DVS企业版参考<b class='flag-5'>体系结构</b>

    ARM体系结构、处理器和设备开发文章

    ARM产品必须如何运行的体系结构规范。 此外,一些合作伙伴还授权实施符合架构规范的自己的ARM处理器。 这导致了分层划分为三个级别的规范,这些规范共同描述了整个SoC的行为和程序员模型
    发表于 08-21 07:28

    ARM通用中断控制器体系结构规范GIC体系结构版本3和版本4

    本手册中的体系结构描述使用了与Armv8体系结构相同的术语。有关该术语的更多信息,请参阅Armv8-A架构配置文件Armv8 Arm®架构参考手册A部分的介绍。此外,在适当的情况下使用AArch64
    发表于 08-11 07:45

    Arm Power Policy Unit 1.1版体系结构规范

    本规范描述了电源策略单元(PPU)体系结构。它定义了PPU体系结构的1.1版本。 PPU规范的1.1版增加了对操作模式的支持。由于功能或更高粒度的功率控制原因,这使得能够支持特定于组件的功率模式
    发表于 08-11 06:14

    Arm CoreSight体系结构规范

    本文档描述了CoreSight体系结构,平台和系统使用。
    发表于 08-09 06:08

    Arm的DRTM体系结构规范

    本规范定义了基于Arm A配置文件体系结构的处理器的动态测量信任根(DRTM)体系结构。本规范基于TCG D-RTM体系结构[4]的概念,但作为个独立的独立文档发挥作用。它使用了TC
    发表于 08-08 07:45

    ARM体系结构标准配置

    ARM体系结构包含大量功能,这些功能被描述为可选或定义的实施。来自平台操作系统供应商的反馈表明这种可变性对于系统代码的开发人员来说是个实质性的问题,由于操作系统必须满足各种不同的系统配置,导致开发
    发表于 08-08 07:40

    Armv9-A体系结构参考手册

    本增补件是Armv9-A体系结构的Arm®体系结构参考手册增补件轮廓本书介绍了Armv9-A体系结构扩展,因此必须与Arm®体系结构参考手册
    发表于 08-08 07:07

    ARM同步原件体系结构指南

    本文介绍了ARM中可用的硬件同步原语体系结构,并提供了系统级程序员如何使用它们的示例。
    发表于 08-02 10:59

    ARM系统监控框架体系结构规范

    包含个简短的介绍,以帮助读者。与体系结构兼容的实现必须 遵守本规范中的所有规则。 一些体系结构规则伴随着解释为什么指定体系结构的基本原理
    发表于 08-02 10:55

    Armv8-A体系结构中的内存系统详解

    实现hypervisor时,您必须很好地理解ARM体系结构。 当您的代码要求对内存访问进行显式排序时,需要进行一些重新排序 由系统中的核心或设备看到。
    发表于 08-02 10:38

    ARM体系结构ABl的v1和v2之间的差异

    一些不兼容。 本文档的以下小节总结了每个组件版本2和版本1之间的视角和细节变化。 版本2还为ARM体系结构的ABl添加了附录[Addenda]。这说明了标准的后期添加,并且是将在未来维护期间添加的材料的占位符。
    发表于 08-02 08:53

    ARM指令集体系结构(ISA)的一些功能介绍

    本指南介绍了特定于每个ARM指令集体系结构(ISA)的一些功能,并考虑了哪些应用程序最好地利用了这些功能。该指南的重点是Cortex-R。然而,我们也考虑Cortex-A和Cortex-M,在帮
    发表于 08-02 07:39

    了解体系结构 - 介绍 Arm 体系结构

    。该体系结构为软件开发人员公开了个通用的指令集和工作流程,也称为程序员模型。这有助于确保架构的不同实现之间的互操作性,以便软件可以在不同的 Arm 设备上运行。本指南为任何对此感兴趣的人介绍了 Arm
    发表于 08-01 14:35