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

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

3天内不再提示

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

汽车玩家 来源:今日头条 作者:闻数起舞 2020-05-03 18:39 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

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

TLDR;

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

基于事件的架构

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

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

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

级联混沌的真实示例

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

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

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

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

确保它们是可追踪的

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

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

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

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

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

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

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

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

    关注

    1

    文章

    537

    浏览量

    26672
  • 事件驱动
    +关注

    关注

    0

    文章

    9

    浏览量

    6951
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    关于C语言对齐的一些总结

    1. 对齐的目的是什么? 提供访问效率---放大对齐 压缩存储空间---紧凑对齐 2. 对齐的类型有哪些? 自然对齐 :结构体默认按 最大基础类型成员 的大小对齐(比如最大成员是 int(4字节
    的头像 发表于 05-08 11:23 447次阅读

    如何使用 powerquad 加速器中的一些功能以及 CMSIS 原始实现中的一些功能?

    )。 如何使用 powerquad 加速器中的一些功能以及 CMSIS 原始实现中的一些功能。 Example: I do not want to call arm_mat_trans_q15 powerquad
    发表于 04-03 06:37

    时钟缓冲器的一些主要应用领域介绍

    电子设备和通信系统中都有广泛的应用,以下是一些主要的应用领域介绍:1.计算机与外设接口计算机内部的各种硬件设备需要通过总线相互通信,而这些设备的时钟信号通常是非常不稳
    的头像 发表于 04-02 16:30 8713次阅读
    时钟缓冲器的<b class='flag-5'>一些</b>主要应用领域介绍

    奕行智能论文入选国际计算机体系结构顶级会议 ISCA 2026

    ISCA 2026(International Symposium on Computer Architecture,国际计算机体系结构年会)。 ISCA 创立于 1973 年,是计算机体系结构领域最权威
    的头像 发表于 04-01 15:24 609次阅读
    奕行智能论文入选国际计算机<b class='flag-5'>体系结构</b>顶级会议 ISCA 2026

    PCS7操作员站体系结构说明书

    电子发烧友网站提供《PCS7操作员站体系结构说明书.pdf》资料免费下载
    发表于 03-09 14:15 0次下载

    从架构到驱动:这三本经典书,承包了我的嵌入式Linux入门与进阶

    作为个深耕嵌入式领域的开发者,书架上总有几本“压箱底” 的书 —— 它们既是新手入门的灯塔,也是老手复盘的手册。今天想和大家聊聊几本经典的书,《ARM64 体系结构编程与实践》《鸟哥的 Linux
    的头像 发表于 02-09 17:02 1486次阅读

    操作系统体系结构

    操作系统的体系结构个开放的问题。正如上文所述,操作系统在核心态为应用程序提供公共的服务,那么操作系统在核心态应该提供什么服务、怎样提供服务?有关这个问题的回答形成了两种主要的体系结构:大内核和微
    发表于 01-15 08:19

    爬壁机器人磁铁的一些常见问题

    爬壁机器人近几年比较火,它是类能够在垂直墙面、天花板、倾斜表面上移动和作业的特种机器人,今天我们不聊其它,只聊下关于磁吸附应用中的磁铁,以下是小编整理的关于爬壁机器人中磁铁的一些常见问题。
    的头像 发表于 01-09 10:06 533次阅读
    爬壁机器人磁铁的<b class='flag-5'>一些</b>常见问题

    C语言中一些令人震惊的结构介绍

    C语言同意一些令人震惊的结构,下面的结构是合法的吗,如果是它做些什么? int a = 5, b = 7, c; c = a+++b; 考察点: 这个问题将作为这个测验的
    发表于 12-23 08:15

    关于六类网线一些问题的解答

    今天我们就围绕网友一些常见的关于六类网线的问题进行下汇总式解答: 问 六类网线可以当电源用吗? 答 六类网线并不是设计用于传输电力的电缆,因此般不建议将其用于电源传输。 尽管六类网线的线芯可以
    的头像 发表于 12-09 11:13 874次阅读

    贴片电容精度J±5%的一些详细知识

    贴片电容精度J±5%表示电容的实际值与标称值之间的偏差范围在±5%以内 ,以下是关于贴片电容精度J±5%的一些详细知识: 、精度等级含义 J±5% :字母“J”在贴片电容的标识中通常表示标称精度
    的头像 发表于 11-20 14:38 1142次阅读
    贴片电容精度J±5%的<b class='flag-5'>一些</b>详细知识

    蜂鸟E203的浮点指令集F的一些实现细节

    蜂鸟E203的浮点指令集F的一些实现细节 既然E203不是多发射,且为了节省面积,一些指令使用FPU内的同个子模块来执行,即FPU同时只能进行种计算,我们只在FPU内部署了11个
    发表于 10-24 08:57

    射频工程师需要知道的一些常见转接头

    ,是由于转接头的损坏造成的,而且有些接头的连接固定的方式不对,每次修好的仪器,过去后客户又按照他们原来的方式去拧紧了。特别是在一些生产型的企业,由于操作人员流动性比较
    的头像 发表于 08-06 17:39 1673次阅读
    射频工程师需要知道的<b class='flag-5'>一些</b>常见转接头

    DPU核心技术论文再次登陆体系结构领域旗舰期刊《IEEE Transactions on Computers》

    近期,鄢贵海团队研究成果在计算机体系结构领域国际顶级期刊《IEEE Transactions on Computers》中发表。该研究主要围绕KPU敏捷计算架构展开,KPU具有超强异构核集成和调度
    的头像 发表于 06-11 18:11 827次阅读
    DPU核心技术论文再次登陆<b class='flag-5'>体系结构</b>领域旗舰期刊《IEEE Transactions on Computers》

    关于芯片设计的一些基本知识

    芯片的设计理念众所周知,芯片拥有极为复杂的结构。以英伟达的B200芯片为例,在巴掌大的面积上,塞入了2080亿个晶体管。里面的布局,堪称个异次元空间级的迷宫。英伟达B200芯片如此复杂的架构
    的头像 发表于 06-11 12:16 1646次阅读
    关于芯片设计的<b class='flag-5'>一些</b>基本知识