据我了解,我们可以使用 kafka 消息并根据消息信息触发异步工作流。这是一个例子:
private consumer() {
request_info = kafka.getNextMessage()
trigger_async_workflow(request_info)
}
我们将继续一次消费和触发下游工作流:
while () {
consumer()
}
但是这里的问题是我们永远不知道
trigger_async_workflow()
需要多长时间才能完成,所以如果由于任何依赖性中断而需要相当长的时间,每个消费者都会变慢,那么我们就会遭受卡夫卡消费者滞后。
此外,如果
trigger_async_workflow()
失败,一种方法是向另一个延迟主题生成消息,然后推回重试。
那么基本上如何最大限度地减少异步工作流不可预测性带来的潜在消费者滞后?还有其他更好的设计或技巧吗?谢谢
欢迎来到并发世界我的朋友。编程中最具挑战性的主题之一。在数据库世界中,有隔离级别(通常为 4)和显式锁定。在 JavaScript 世界中,有一些处理异步代码的选项:
你应该研究回调。本质上,您需要识别依赖事件/函数和依赖事件/函数。考虑这些的另一种方法是子函数和父函数。另一种方法是将它们视为下游功能和上游功能。然后你只需在完成时放置一个回调。这是锁定函数直到它可以安全运行的 JavaScript 方式。
这对性能有好处吗?很多时候不是。然后发挥创意。
JavaScript 回调是一个将在之后执行的函数 另一个函数已完成执行。更正式的定义 将是 - 作为参数传递给另一个函数的任何函数 函数,以便它可以在调用其他函数时执行 作为回调函数。