分布式
文章平均质量分 93
Lvshen的技术小屋
技术宅
展开
-
【知识科普】分布式系统中你不得不了解的CAP定理与BASE理论
CAP定理CAP定理又叫布鲁尔定理,这个定理告诉我们在一个分布式系统中,不可能同时满足下面三点:“ 一致性(Consistency) (等同于所有节点访问同一份最新的数据副本) 可用性(Availability)(每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据) 分区容错性(Partition tolerance)(以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。)原创 2021-03-30 14:30:17 · 216 阅读 · 0 评论 -
如何生成全局的分布式ID
现在的系统中,很多系统都不是单体的了,都是以集群的方式部署的。系统也是分布式的了。我们很多场景都需要生成全局的ID。比如我们将数据库进行分库分表后,就需要全局的不重复的主键ID。比如在一些业务中,我们需要给用户生成不重复的编号(这里不是数据库的主键ID),如1000,1001,1002...。那么我们如何生成全局的ID呢?使用Redis的原子性生成我们可以利用Redis单线程的性质去做原子运算,能够实现多程安全。使用org.redisson的api。如上代码,我们设置初始值为100,每次调用原创 2020-10-30 08:01:31 · 173 阅读 · 1 评论 -
Redis除了做缓存,还能做什么
缓存Redis是什么大家都知道,一个非关系型数据库。大部分情况下我们使用Redis做缓存。使用缓存的情况一般是这样的:Redis缓存“(1)从Redis缓存中获取数据,如果存在数据,直接返回值。(2)如果不存在,执行数据库的查询方法(3)将数据库中的值放入缓存,并返回值”代码如下:当然我们也可以使用Spring的缓存注解@Cacheble。我们要在配置类上面开启缓存注解@EnableCaching,使用如下:有兴趣的童鞋可以看看我写的这篇文章:“利用AO原创 2020-10-28 08:19:08 · 3998 阅读 · 2 评论 -
手写Redis分布式锁
分布式锁使用场景现在的系统都是集群部署,每个服务都不是单节点的了。比如库存服务,可能部署到3台机器上分别命名为节点1,节点2,节点3。库存服务需要扣减库存,扣减库存肯定需要锁吧,如果使用Lock或者synchronized,只能锁住自己的节点。而从前台访问是随机路由到这3台节点的。如果线程一进来使节点1上了锁,当线程二进来可能访问到的是节点2,这时节点2还没有上锁,那么库存就会扣减错误。而库存扣减还是一个核心操作,现在居然有Bug,想想就可怕。这时我们就需要一个全局的锁了。实现全局的锁不一定是R原创 2020-09-07 08:40:54 · 409 阅读 · 0 评论