分布式
文章平均质量分 96
做时间的朋友。
注重知识的积累,以量变实现质变
展开
-
分布式事务解决方案--TCC
什么是TCCTCC是try、confirm、cancel三个单词的缩写。try:预留和锁定业务需要的资源。conirm:业务确认,当所有的分支事务都成功时执行。cancel:撤销。如果有一个分支事务执行失败,执行。把预留阶段的资源撤销,相当于事务回滚执行流程图如下:执行流程说明:全局事务发起者向申请开启一个全局事务,并生成一个代表该全局事务的全局事务ID。该全局事务ID会在整个分布式调用链中传递,用于记录事务上下文,追踪和记录状态。全局事务发起者调用其他服务的try方法,预留资源各原创 2021-03-10 20:53:24 · 740 阅读 · 1 评论 -
分布式锁的三种解决方案 数据库、redis、zookeeper
为什么要使用分布式锁加锁,我们都知道,就是为了在并发环境下,使一段代码在同一时间只能有一个线程执行。我们通常通过synchronized或ReentrantLock来实现加锁。比如:synchronized(this){ //业务逻辑代码}这样的代码在单机环境下是可行的,但是不管是synchronized还是ReentrantLock都是JVM层面的,所以在分布式环境下,就不能这么写。加锁的本质其实加锁的本质都是在某个地方打一个标志,这个标志必须所有线程可见,线程在进行一块同步代码的时候,原创 2021-03-02 22:43:26 · 301 阅读 · 0 评论 -
幂等性及各种解决方案
什么是幂等性幂等性简单的说就是相同条件下,一次请求和多次重复的请求接口的运行结果是相同的。那什么情况下会出现幂等性问题呢?前端重复提交表单:如用户在提交表单的时候,由于网络波动没有及时给用户做出提交成功响应,导致用户认为没有提交成功,一直点击提交按钮,此时就会发生表单重复提交。接口超时重试:很多远程接口调用为了防止由于网络抖动导致的请求失败,都会引入重试机制,如feign的重试机制,导致一个请求发出多次。消息重复消费:在使用消息中间件时,一个消息可能会被重复发送,此时就会发生重复消费。天然具原创 2021-02-27 14:07:39 · 2368 阅读 · 0 评论 -
分布式之session共享问题 4种解决方案及spring session的使用
session在分布式环境下存在的问题由于HTTP协议是无状态的,在开发中我们可以将用户的信息存储在服务器的session中,并生成与之相对应的JSESSIONID通过cookie返回给浏览器。浏览器下次访问,cookie会自动携带上次请求存储的数据(JSESSIONID)到服务器中,服务器根据JSESSIONID找到对应的session,从而获取用户的信息。该机制在单体应用中是没有问题的,但是如果在分布式环境下,会产生session共享问题,即session的数据在服务1中存在,但是在服务2中不存在。原创 2021-02-26 20:22:09 · 5293 阅读 · 4 评论 -
分布式事务解决方案之2PC
在介绍了分布式事务的理论基础后,针对不同的分布式场景常见的解决方案有2PC、TCC、可靠消息最终一致性、最大努力通知这几种,这次我们来介绍2PC。什么是2PC2PC(2 prepare phase commit phase):俩阶段提交,俩阶段提交是一种强一致性的设计。在2PC中由事务协调者和事务参与者组成(一般是数据库)准备阶段(prepare phase):事务协调者给每个事务参与者发送Prepare消息,事务参与者收到消息后执行各自的本地事务,但是没有提交。提交阶段(commit ph.原创 2020-12-21 17:57:48 · 3140 阅读 · 1 评论