高并发下的接口幂等性解决方案

高并发下的接口幂等性解决方案

1.token机制,防止页面重复提交

流程如下:

  • 1.发送方记录token(GUID) (通常保存到redis)
  • 2.发送提交接口 带上发送方token
  • 3.将token从redis中删除token,如果成功删除说明第一次执行,如果删除失败即已经删除过,说明该消息已经被消费。

存在问题

这样的方式存在的问题主要还是性能消耗
因为从流程可以看到,发送方需要额外调用一次redis,接收方也需要额外调用一次redis 而且是每次都要调用。无论这条消息是不是重复的。

2.使用数据库唯一主键

这样的操作实际上是有特殊情况才能使用,比如最终数据是要落到DB上的。这样的情况可以使用GUID或者其他token方案,通过设置唯一键的方式将要落地的数据顺便做幂等验证。

优势

这样做相比redis方式的优势就是不需要额外操作,因为幂等的保证是顺便的。

存在问题

使用范围有限,并不是任何幂等操作一定会涉及数据库操作。另外也需要为业务增加唯一主键。

可选唯一ID生成方式

  • UUID
  • snowflake
    。。。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容