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

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

3天内不再提示

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

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

扫码添加小助手

加入工程师交流群

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

TLDR;

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

基于事件的架构

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

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

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

级联混沌的真实示例

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

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

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

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

确保它们是可追踪的

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

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

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

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

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

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

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

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

    关注

    1

    文章

    533

    浏览量

    26506
  • 事件驱动
    +关注

    关注

    0

    文章

    9

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

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

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

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

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

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

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

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

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

    睿创微纳AI芯片技术登上国际计算机体系结构领域顶级会议

    近日,国际计算机体系结构领域顶级会议HPCA 2025(International Symposium on High-Performance Computer Architecture)在美国召开。会议共收到534篇来自全球顶尖科研机构及高校的论文投稿,最终录用率仅为21%。
    的头像 发表于 05-19 15:57 763次阅读

    Debian和Ubuntu哪个好一些

    兼容性对比Debian和Ubuntu哪个好一些,并为您揭示如何通过RAKsmart服务器释放Linux系统的最大潜能。
    的头像 发表于 05-07 10:58 858次阅读

    树莓派在自动化控制项目中的一些潜在应用

    自动化控制项目中的一些潜在应用。之前,我们已经为Arduino平台探讨了相同的话题。我们确定Arduino是个出色的教育工具,但由于一些限制,它无法在工业环境中完全
    的头像 发表于 03-25 09:45 479次阅读
    树莓派在自动化控制项目中的<b class='flag-5'>一些</b>潜在应用

    收藏的一些库存,直流无刷技术+源码+论文(建议打包)

    这也是我网络上淘过来收藏的一些资料,免费跟大家起分享下,建议下载哦,收藏不易
    发表于 03-17 20:17

    驱动电路设计()—— 驱动器的功能综述

    驱动电路设计是功率半导体应用的难点,涉及到功率半导体的动态过程控制及器件的保护,实践性很强。为了方便实现可靠的驱动设计,英飞凌的驱动集成电路自带了一些重要的功能,本系列文章将详细讲解如
    的头像 发表于 02-10 17:05 1377次阅读
    <b class='flag-5'>驱动</b>电路设计(<b class='flag-5'>一</b>)—— <b class='flag-5'>驱动</b>器的功能综述

    为什么你的串口总是丢一些特殊字符?

    导读在嵌入式开发和物联网应用中,Linux系统的串口通信至关重要。本文将简单介绍Linux下串口设备的命名规则和termios结构体,并解析终端的三种工作模式,帮助开发者更好地掌握Linux串口编程
    的头像 发表于 02-06 13:26 621次阅读
    为什么你的串口总是丢<b class='flag-5'>一些</b>特殊字符?

    独立服务器和云服务器哪个快一些

    独立服务器和云服务器哪个快一些?在数字服务部署中,独立服务器与云服务器的速度差异并非绝对,需结合资源配置与应用场景综合判断。以下是UU云对独立服务器和云服务器的核心维度对比分析:
    的头像 发表于 02-05 10:08 804次阅读

    AN-202: IC放大器用户指南:去耦、接地及其他一些要点

    电子发烧友网站提供《AN-202: IC放大器用户指南:去耦、接地及其他一些要点.pdf》资料免费下载
    发表于 01-13 15:16 3次下载
    AN-202: IC放大器用户指南:去耦、接地及其他<b class='flag-5'>一些</b>要点

    AN29-关于DC-DC转换器的一些想法

    电子发烧友网站提供《AN29-关于DC-DC转换器的一些想法.pdf》资料免费下载
    发表于 01-08 13:57 0次下载
    AN29-关于DC-DC转换器的<b class='flag-5'>一些</b><b class='flag-5'>想法</b>

    ads1232获取的数据中经常有一些比较大的值或者一些错误值,这个是因为什么原因?

    数据中经常有一些比较大的值 或者一些错误值,这个是因为什么原因。最后8位数据致在跳动,是不是我的基准电压不够稳定。 -----85b1----- -----858d-----
    发表于 01-08 08:19