加入收藏 | 设为首页 | 会员中心 | 我要投稿 平凉站长网 (https://www.0933zz.com.cn/)- 图像处理、语音技术、媒体智能、运维、低代码!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

如何实现最终一致性?

发布时间:2021-03-02 11:28:30 所属栏目:外闻 来源:互联网
导读:r 重试时,需要注意如下几个方面: 超时时间; 重试的次数; 重试的间隔时间; 重试间隔时间的衰减度; 具体实现细节,可以参考《 基于Spring-tryer 优雅的重试方案》。 二、本地记录日志 通过本地记录日志,然后收集到分布式监控系统或者其他后端系统中,启

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 
 

(编辑:平凉站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读