![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
业务幂等性
文章平均质量分 89
斑马工
别在最好的年纪,选择安逸。
展开
-
深入浅出业务幂等性---4、消息幂等
消息幂等在系统中当使用消息队列时,无论做哪种技术选型,有很多问题是无论如何也不能忽视的,如:消息必达、消息幂 等等。本章节以典型的RabbitMQ为例,讲解如何保证消息幂等的可实施解决方案,其他MQ选型均可参考。消息重试演示消息队列的消息幂等性,主要是由MQ重试机制引起的。因为消息生产者将消息发送到MQ-Server后,MQ-Server 会将消息推送到具体的消息消费者。假设由于网络抖动或出现异常时,MQ-Server根据重试机制就会将消息重新向消息消费者推送,造成消息消费者多次收到相同消息,造成数据原创 2022-03-22 20:02:55 · 10149 阅读 · 0 评论 -
深入浅出业务幂等性---3、服务幂等和分布式锁
zookeeper分布式锁实现思想对于分布式锁的实现,zookeeper天然携带的一些特性能够很完美的实现分布式锁。其内部主要是利用znode节点 特性和watch机制完成。znode节点在zookeeper中节点会分为四类,分别是:持久节点:一旦创建,则永久存在于zookeeper中,除非手动删除。持久有序节点:一旦创建,则永久存在于zookeeper中,除非手动删除。同时每个节点都会默认存在节点序 号,每个节点的序号都是有序递增的。如demo000001、demo000002…demo00原创 2022-03-22 19:25:28 · 10131 阅读 · 0 评论 -
深入浅出业务幂等性---2、服务幂等和乐观锁
服务幂等防重表对于防止数据重复提交,还有一种解决方案就是通过防重表实现。防重表的实现思路也非常简单。首先创建一张表作为防重表,同时在该表中建立一个或多个字段的唯一索引作为防重字段,用于保证并发情况下,数据只有一条。在向业务表中插入数据之前先向防重表插入,如果插入失败则表示是重复数据。对于防重表的解决方案,可能有人会说为什么不使用悲观锁。悲观锁在使用的过程中也是会发生死锁的。悲观锁是通过锁表的方式实现的。 假设现在一个用户A访问表A(锁住了表A),然后试图访问表B; 另一个用户B访问表 B(锁住了表B原创 2022-03-22 19:24:06 · 10301 阅读 · 0 评论 -
深入浅出业务幂等性---1、幂等性介绍与接口幂等
微服务与幂等性随着应用架构由单体架构到微服务架构进行演变,现如今市面上超过50%的应用都会基于分布式或微服务完成系统架构设计。在微服务架构体系内,就会存在若干个微服务,这些服务可能基于RPC或者HTTPS等协议进行通讯。那么既然服务之间存在相互调用,那么必然存在服务调用延迟或者失败的情况,当出现这种问题,服务端会进行重试等操作或客户端有可能会进行多次点击提交。如果这样请求多次的话,那最终处理的数据结果就一定要保证统一,如支付场景。此时就需要通过保证业务幂等性方案来完成。幂等性简介幂等本身是一个数学概念原创 2022-03-22 19:22:44 · 11474 阅读 · 0 评论