消息重发添加消息头序列号

如果对于下面场景

比如客户端发送一个请求没有收到服务器的响应,客户端通过设置的定时器去重发相同的消息,会有什么问题呢?
1、如果处理的消息逻辑时无危害的,比如读取操作,没关系成为幂等的
1、如果处理的逻辑是修改数据等,会出现重复处理,如何 解决呢?
我们可以给所有的消息添加一个消息头固定长度的位数定义为序列号,收到消息检测序列号,服务器分辨是新的请求还是重发请求,重发的可以拒绝掉,同事还是要响应一次客户端。服务器需要维护每个客户的管理。

type MsgHeader struct {
    Opcode   uint16 // 消息号ID
    MsgSize  uint16 // 消息的长度
    Sequence uint32 // 消息的序列号
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。