如何设计一个100%可靠的消息服务

1、一般的消息系统分为3种:
at least once 至少发送成功一次,可能会重复发送(常用)。
at most once 最多发送一次,要么成功,要么失败。
exactly once 保证发送成功且仅发送成功一次,这种理想情况基本不存在,也没有任何基于网络的消息系统能实现这种模式。

解决方案:
1、首先保证接收方能处理重复消息,可以对订单编号标记一个递增的ID,接收方维护一个当前ID,凡是收到比当前ID小的,直接丢弃。
2、为了防止出现A->B->D,将C丢失的情况,还需要在上面的基础上将上一条数据的ID添加到该消息结构中。利用链表,接收方很容器识别漏掉的消息。
3、如果有漏掉的消息,只需要接收方自己从数据库中根据ID读取漏掉的消息。

posted @ 2025-08-05 20:12  Charlie-Pang  阅读(8)  评论(0)    收藏  举报