摘要:一、简介 分布式锁,即支持分布式集群环境下的锁:查询DB,只有一个线程能访问,其他线程都需要等待第一个线程释放完锁资源后,竞争获取锁后才能继续执行。 二、本地锁 假设微服务被拆分为4个,前端发起10w请求,被转发到不同的微服务,每个微服务接收2.5w个请求。假如缓存失效,每个微服务在访问数据库时加锁
阅读全文
摘要:一、定义 Seata解决方案是分布式事务解决方案之一。常用的分布式事务解决方案有:2PC,3PC,TCC,SAGA(seata)、本地消息表、MQ消息事务、最大努力通知。 Seata是一款分布式解决方案,致力于提供高性能和简单易用的分布式事务服务。提供事务模式有:AT,TCC,SAGA,XA。其中A
阅读全文
摘要:一、业务场景 用户去登录项目,用户进行一个session会话,一般的大公司的项目都是有Nginx进行反向代理的。 在Nginx的反向代理下,一般会把用户的请求分发到不同的服务器上,但是如果用户请求的请求是存放在该请求的服务器A上。如果此时用户请求的一个服务模块可能需要调用到服务器B,当用户发起请求的
阅读全文
摘要:一、分类图 二、悲观锁与乐观锁 乐观锁和悲观锁并不是一种真实存在的锁,而是一种设计思想。 2.1、悲观锁是一种悲观思想,它总认为最坏的情况可能会出现,它认为数据很可能会被其他人所修改,所以悲观锁在持有数据的时候总会把资源 或者 数据 锁住,这样其他线程想要请求这个资源的时候就会阻塞,直到等到悲观锁把
阅读全文
摘要:一、简介 Redission,一个基于Redis实现的分布式工具,为 Redis 官网分布式解决方案。 Redisson提供了使用Redis的最简单和最便捷的方法。Redisson的宗旨是促进使用者对Redis的关注分离(Separation of Concern),从而让使用者能够将精力更集中地放
阅读全文
摘要:一、场景 秒杀活动属于临时高并发写请求,在活动即将开始之前,面临的是高并发的读请求,因为客户会疯狂刷新活动页面了解内容。 二、问题 2.1、超卖 假如库存只有100个,但是最终超卖了200,一般来讲秒杀系统的价格都比较低,如果超卖将严重影响公司的财产利益,因此首当其冲的就是解决商品的超卖问题。今晚超
阅读全文
摘要:一、简介 分布式缓存:在分布式环境或系统下,把一些热门数据存储到离用户近、离应用近的位置,并尽量存储到更快的设备,以减少远程数据传输的延迟,让用户和应用可以很快访问到想要的数据。 二、Redis持久化 RDB、AOF 三、Redis主从 四、Memcached分布式缓存原理 redis 的集群结构是
阅读全文
摘要:一、事务 事务实现应该具备原子性、一致性、隔离性和持久性。即ACID。 原子性(Atomicity),可以理解为一个事务内的所有操作要么都执行,要么都不执行。 一致性(Consistency),可以理解为数据是满足完整性约束的,也就是不会存在中间状态的数据,比如你账上有400,我账上有100,你给我
阅读全文
摘要:一、简介 满足分布式系统或者集群模式下多进程课件并且互斥的锁。 二、说明 【可见性】:多个线程都能看到相同的结果,注意:这个地方说的可见性并不是并发编程中指的内存可见 性,只是说多个进程之间都能感知到变化的意思。 【互斥】:互斥是分布式锁的最基本的条件,使得程序串行执行。 【高可用】:程序不易崩溃,
阅读全文
摘要:一、定义 BASE 是 Basically Available(基本可用)、Soft-state(软状态) 和 Eventually Consistent(最终一致性) 二、简介 BASE理论本质上是对CAP的延伸和补充,是对CAP中的AP方案的一个补充,即在选择AP方案的情况下,如何更好地最终达到
阅读全文
摘要:微服务架构CAP 一、分布式系统CAP C【Consistency】: 一致性,即数据一致性,特指分布式系统中的数据一致性。 A【Availability】: 可用性,即服务的高可用,特指分布式系统中的服务的高可用,某个服务瘫痪不影响整个分布式系统的正常运行。 P【Partition Toleran
阅读全文