
分布式
way_more
You can be way more.
展开
-
生成分布式ID的n种方法,你知道多少种
前言在分布式系统中,经常需要对大量的数据进行唯一标识。普通的数据库自增主键已经不能满足需求,需要一个能够生成全局唯一ID的系统,这个系统需要满足以下需求:全局唯一:不能出现重复ID。高可用:ID生成系统是基础系统,被许多关键系统调用,一旦宕机,会造成严重影响。所以需要保证高可用。在分布式系统中生成唯一ID的方案有很多,常见的方式有以下几种1、采用数据库ID生成策略数据库有一些自己的ID生成策略,如Mysql的自增ID,Oracle的SEQUENCE序列。单独使用一个数据库实例,在这个实例中新原创 2020-07-09 19:42:43 · 338 阅读 · 0 评论 -
分布式锁用 Redis 还是 Zookeeper?万字总结
为什么用分布式锁?在讨论这个问题之前,我们先来看一个业务场景:系统A是一个电商系统,目前是一台机器部署,系统中有一个用户下订单的接口,但是用户下订单之前一定要去检查一下库存,确保库存足够了才会给用户下单。由于系统有一定的并发,所以会预先将商品的库存保存在redis中,用户下单的时候会更新redis的库存。此时系统架构如下:但是这样一来会产生一个问题:假如某个时刻,redis里面的某个商品库存为1,此时两个请求同时到来,其中一个请求执行到上图的第3步,更新数据库的库存为0,但是第4步还没有执行。转载 2020-06-15 22:16:59 · 261 阅读 · 0 评论 -
ZooKeeper实现分布式锁的三种方案(有实例),不能错过!
zookeeper客户端选型1、原生zookeeper客户端,有watcher一次性、无超时重连机制等一系列问题2、ZkClient,解决了原生客户端一些问题,一些存量老系统中还在使用3、curator,提供了各种应用场景(封装了分布式锁,计数器等),新项目首选分布式锁使用场景在单体项目中jvm中的锁即可完成需要,但是微服务、分布式环境下,同一个服务可能部署在多台服务器上,多个jvm之间无法通过常用的jvm锁来完成同步操作,需要借用分布式锁来完成上锁、释放锁。例如在订单服务中,我们需要根据日期来转载 2020-06-10 17:24:07 · 5699 阅读 · 1 评论