基于工作流的事件模型

超级欧派课程 2024-03-20 10:10:37

异步发送出去数据后,发送成功不一定表示处理成功

每个系统设计师都知道(也会偶尔噩梦中回响)一点,那就是:异步通信的主要问题在于错误处理。但问题在哪呢?为此,本文将引入一种模式——“工作流事件模式”,它是一种反应式架构。这种模式可以帮助我们更好地处理异步通信过程中出现的错误。

异步通信与问题

异步通信对于现代分布式系统来说,无疑是非常关键的一部分。这种通信方式可以根据各个部分的可用性和需求,允许系统的不同部分在时间上独立运行,这就带来了更高的可扩展性和响应能力。然而,这也导致一个常见的问题,那就是处理异步通信中的错误。出现错误是任何系统中的常态,而在异步通信中,这个问题尤其棘手。

因为异步调用的特性,出错时通常无法立即获知。此外,即使知道有错误,也有可能无法确定是哪个部分出了问题。而这两个因素都给错误处理带来了极大的困难。

工作流事件模式

在这样的背景下,"工作流事件模式"为我们提供了一种新的视角。它的基本思想是这样的:生产者通过消息通道将数据异步传递给事件消费者。如果消费者在处理数据时出现错误,它会将错误委托给处理器,然后继续处理下一条消息。

这一设计有两个明显的优点。

首先,消费者不需要在错误处理上花费时间。这样一来,即使遇到错误,它的响应性也不会受到影响。

其次,通过将错误交给专门的处理器,我们可以保证错误能够得到恰当的处理,而不会被忽视或者错误地解决。

错误处理

工作流处理器在收到错误后,会尽力找出问题的原因。这可能包括:

静态和确定的错误处理:处理器可以针对一些已知的、规定的错误进行处理。利用机器学习算法分析消息的数据,寻找其中是否存在异常情况。

遇到错误后,处理器并不会直接抛弃原始数据,而是尝试对其进行修改,以尝试修复错误。然后,处理器将修改后的数据返回到原始的消息队列。当事件消费者接收到这个消息时,它将尝试再次处理这个消息。我们期望这次处理能够成功。一般来说,如果更改原始数据后事件消费者可以成功处理数据,那么整个过程就可以在此结束。然而,如果工作流处理器无法确定问题的所在,那么它会将这条消息发送到一个"仪表板"。这时,需要人工介入,处理仪表板中的案例,并将它们重新提交给原始队列。

总结

通过这种模式,我们不仅可以解决异步通信中的错误处理问题,同时还能保持系统的韧性和响应能力。实现这种模式的关键在于,我们需要在设计过程中考虑到可能出现的错误,并尽可能确保错误能够被有效地检测和处理。如果你还在为异步通信的错误处理头痛,不妨试试这个模式看看——可能这正是你需要的解决方案。

欢迎关注我,了解更多微服务治理方法和技巧。

0 阅读:17

超级欧派课程

简介:感谢大家的关注