第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

事件驅(qū)動(dòng)架構(gòu)設(shè)計(jì)之使用斷路器暫停事件檢索

0 前言

part2讨论将事件检索与事件处理解耦的好处。现在,将讨论如何使用断路器来应对请求/响应API不可用的情况。

1 经验:使用断路器暂停事件检索

请求/响应通信带来的紧耦合要求两个微服务都须可用,这与事件驱动的通信不同,因为在下游微服务暂时不可用时,无中间件可介入。

事件循环与请求/响应通信的结合可能加剧下游微服务可用性问题。若下游微服务存在可用性问题,事件循环发起的重试会增加其压力。若下游微服务不接受新连接,请求会快速失败,导致事件处理速度加快。这是个问题,因为下游微服务承受的压力增加,事件无法成功处理。为解决这种case,我们应用断路器

2 断路器

一种源于请求/响应通信的弹性模式,能防止下游服务出现问题时因重试引发的连锁反应。断路器作为现成的组件存在——如resilience4j,可与请求/响应API的HTTP客户端一起配置和使用。

3.1 断路器状态机

图一

断路器是一个可以在三种状态之间切换的组件:CLOSED(关闭)、OPEN(打开)和HALF-OPEN(半开),如图。

  • CLOSED状态下,断路器允许所有请求通过API。如果错误超过阈值,断路器会切换到OPEN状态,此时请求不再通过,断路器会返回一个错误,例如NotPermitted异常
  • 经过一段等待时间后,断路器会转换为HALF-OPEN状态,此时请求再次通过API
  • 如果请求成功,断路器会回到CLOSED状态。如果请求失败,断路器会重新回到OPEN状态

3.2 断路器集成到事件驱动的微服务中

图二

断路器也可集成到事件驱动的微服务中。上图展示断路器在事件处理与请求/响应API之间的集成。此外,我们还发现了两个需要特别考虑的因素。下图中得以说明:断路器集成到事件驱动的微服务中

图三

首先,如果集成到事件驱动微服务中的断路器处于OPEN状态,对API的请求会快速失败,因为断路器会返回NotPermitted异常。由于断路器不转发请求,因此不会给API带来压力。然而,这种情况效率不高,因为事件处理仍然失败,事件会被重试,最终可能会进入死信队列

为了解决这一限制,我们发现当断路器转换为OPEN状态时暂停新事件的检索效果很好。现成的断路器提供了事件监听器,它们会通知我们状态的转换。在图三中,这通过“3.1 通知状态转换”和“3.2 暂停事件检索”得以说明,只有在断路器转换为OPEN状态时才会发送“暂停事件检索”消息。

其次,在等待期后,断路器应该转换为HALF-OPEN状态,以便请求再次通过API。对于基于请求/响应的通信,带有断路器的微服务会接收到请求。为了满足这个请求,微服务本身会尝试通过断路器向API发送请求。如果等待期已经结束,断路器会使用这个请求作为触发器转换为HALF-OPEN状态,并允许请求通过。对于事件驱动的通信,当新事件的检索被暂停时,外部触发器并不存在。这时需要一个调度动作来触发向HALF-OPEN状态的转换,并恢复新事件的检索。否则,断路器将保持OPEN状态。在图三中,这通过“3.3 调度转换”消息进行了说明,如果断路器已转换为OPEN状态,则会设置一个调度动作,待等待时间结束后转换为HALF-OPEN状态(消息“3.4 转换为HALF-OPEN”)。之后,事件监听器会被通知状态转换(消息“3.1 通知状态转换”),并因为断路器已转换为HALF-OPEN状态,恢复事件检索(消息“3.5 恢复事件检索”)。

我们还可以进一步微调断路器。事件的可见性超时应该比断路器转换为HALF-OPEN的等待时间更长。否则,在转换后相同的事件会被一次又一次地检索,如果API长时间不可用,它们将最终进入死信队列。

我们还发现,集成到事件处理中的断路器能够处理长时间的不可用情况。这意味着你可以调整maxReceiveCount,即在事件被移至死信队列之前,事件处理失败的次数,以及因请求失败而失败的事件的可见性超时。例如,考虑一个maxReceiveCount为三次、可见性超时为30秒的情况。请求/响应API可以在一分钟内不可用。在这一分钟之后,事件将第三次被检索。如果它们再次处理失败,它们将被移至死信队列。

3 结论

当你将事件驱动的微服务与请求/响应API集成时,事件处理依赖于API的可用性。本文探讨了如何集成断路器,并结合事件驱动微服务的具体情况进行配置。

关注我,紧跟本系列专栏文章,咱们下篇再续!

作者简介:魔都架构师,多家大厂后端一线研发经验,在分布式系统设计、数据平台架构和AI应用开发等领域都有丰富实践经验。

各大技术社区头部专家博主。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。

负责:

  • 中央/分销预订系统性能优化
  • 活动&券等营销中台建设
  • 交易平台及数据中台等架构和开发设计
  • 车联网核心平台-物联网连接平台、大数据平台架构设计及优化
  • LLM Agent应用开发
  • 区块链应用开发
  • 大数据开发挖掘经验
  • 推荐系统项目

目前主攻市级软件项目设计、构建服务全社会的应用系统。

参考:

點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
JAVA開(kāi)發(fā)工程師
手記
粉絲
1.4萬(wàn)
獲贊與收藏
1478

關(guān)注作者,訂閱最新文章

閱讀免費(fèi)教程

  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶(hù)
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消