微服务架构技巧篇:全局幂等
李运华

你好,我是华仔。
上一节我们讲解了微服务架构“数据分布式”挑战的应对方式:分布式事务。分布式事务都是基于接口或者消息来协作的,而分布式环境下,接口调用可能会失败,消息可能丢失,我们只能采取重试的方式来尽力保证数据最终能够达到一致性。重试机制就涉及微服务架构设计的另外一个技巧:全局幂等。
其中,幂等(Idempotence)是一个数学与计算机科学中的概念,它指的是某个操作或函数可以多次执行并且保持同样的效果,即无论执行多少次,结果都不会改变。具体来说,如果一个操作是幂等的,那么对同一个输入重复应用这个操作将不会产生额外的效果或变化。
举个最简单的例子:当我们在网上购物,使用微信或者支付宝支付的时候,点击确认支付后网络正好断了,你也不知道是否支付成功,于是又重新刷新支付了一次。对于微信和支付宝来说,如果不做幂等判断,就会出现一个订单支付了两次的情况;而有了幂等判断,就能够保证一个订单只支付一次。
你可能会有疑问,为什么我们要在幂等前面加上“全局”两个字呢?其实这也是微服务架构的“服务分布式”特点决定的:同样的接口请求或者消息,并不一定会被同一个微服务实例处理。因此我们需要在全局的多个微服务范围内保证“幂等”,所以叫“全局幂等”。
公开
同步至部落
取消
完成
0/2000
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结

1. 全局幂等是微服务架构设计中的重要技巧,用于保证同一个操作多次执行时保持同样的效果,无论执行多少次,结果都不会改变。 2. 全局幂等方案的设计原理是将业务操作理解为一个对象,具备“全局唯一标识”和“状态”,通过状态控制来实现幂等特性。 3. 事务级同步处理模式适合需要同步处理、处理简单、处理速度快的场景,一般通过接口调用来交互,例如使用TCC分布式事务Try接口来扣库存。 4. 事务级异步处理模式适合需要处理速度慢、处理时间长的场景,一般通过消息队列消息来交互,例如使用SAGA分布式事务来处理项目管理过程中的一些流程。 5. 接口级自动幂等是针对一些关键的业务操作和接口调用,需要保证幂等,例如用户下单、支付等,其基本原理是在接口处理逻辑里面实现幂等,防止异常情况下业务重复处理导致用户损失或者用户体验不好。 6. 常用的幂等判断技术手段包括数据库唯一索引、Redis SETNX命令、ZooKeeper创建节点以及状态机判断,通过这些技术手段可以实现简单或复杂状态的幂等判断。 7. 全局幂等的处理模式和技术手段需要根据具体业务场景和需求来选择,以保证系统的稳定性和可靠性。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 开始学架构》,新⼈⾸单¥68
《从 0 开始学架构》,新⼈⾸单¥68
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论