gpt4 book ai didi

java - 如何实现顺序处理

转载 作者:行者123 更新时间:2023-12-01 15:44:30 25 4
gpt4 key购买 nike

这是一个基于java的后端系统。首先解释一下现有的系统:

有一个订单处理系统,它消耗队列中的订单。当订单到达时,将调用支付系统,该系统首先根据 item_id 获取项目行上的锁定。如果队列中有1000个订单,订单处理器将消耗它们并继续调用支付处理器。

请注意,订单处理程序和支付处理程序是通过网络服务进行通信的独立系统。

如果支付处理商对同一商品有多个订单,则处理将失败并出现 LockAcquisition 错误,该错误也会传播到订单处理商,然后稍后将失败的订单重新发送到支付处理商。订单可以在接下来的 24 到 48 小时内的任何地方重试。

现在我必须改进这个逻辑。我必须找出如何对具有相同项目 id 的订单进行连续处理(释放锁时调用 paymentProcessor)。

订单处理器可能正在处理 1000 个商品,并且多个线程正在执行该处理。我确实知道每个订单的商品 ID。我最近转向后端开发,我认为我需要专家的见解来了解如何以最佳方式完成它。任何指示将不胜感激。

提前致谢!!

最佳答案

如果不完全理解架构,就很难给出好的建议。一种以牺牲一定效率为代价解决问题的策略是根据特定的调度策略将订单调度到特定的线程,例如如果您有 10 个线程,您可以将订单 ID(或订单 ID 的哈希值)模 100 并分派(dispatch)到该线程号。

您会发现您的线程未得到充分利用,因为分布不会完全均匀,但这应该可以解决问题。

如果您走这条路,请注意正确处理处理线程的创建/终止/崩溃。

关于java - 如何实现顺序处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7355910/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com