|
r 重试时,需要注意如下几个方面:
-
超时时间;
-
重试的次数;
-
重试的间隔时间;
-
重试间隔时间的衰减度;
具体实现细节,可以参考《 基于Spring-tryer 优雅的重试方案》。
二、本地记录日志
通过本地记录日志,然后收集到分布式监控系统或者其他后端系统中,启动一个定期检查的工具。根据实际情况,可以选择人工处理。
日志格式:TranID-A-B-Detail
-
TransID为事务ID,可以生成一个随机序列号;
-
Detail 为数据的详细内容;
-
如果调用A成功,则记录 A success;
-
如果调用B失败,或者出现故障,没有记录等等,也就是日志中没有B success,则重新调用B;
-
可以定期检测,并处理日志。
、可靠消息模式
考虑到实际业务场景中发生故障的概率概率比较低,可以考虑如下方案。
Service Consumer 在调用 Service B 失败,先进行重试。如果重试一定的次数仍然失败,则直接发送消息Message Queue,转换为异步处理。
可以采用分布式能力比较强的MQ,如Kafka、RocketMQ等开源分布式消息系统,进行异步处理。
-
Service B 可以专门集成一个错误处理的组件,不断从MQ 收集补偿消息。
-
或者独立一个错误处理的组件,独立处理MQ
(编辑:平凉站长网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|