近几篇文章聊CAS被骂得较多,今天还是聊CAS,谈谈CAS在一种“分布式ID生成方案”上的应用。所谓“分布式ID生成方案”,是指在分布式环境下,生成全局唯一ID的方法。
updateTsetmax_id=200;这样,id-service就拿到了[100,200]这一批ID,上游在获取ID时,不用每次都插入数据库,而是分配完100个ID后,再修改max-id的值,这样分配ID的整体性能就增加了100倍。
selectmax_idfromT;如上图所示,两个id-service在启动的过程中,同时拿到了max-id为100。两个id-service同时对数据库的max-id进行写回:
updateTsetmax_id=200;写回max-id成功后,这两个id-service都以为自己拿到了[100,200]这一批ID,导致集群会生成重复的ID。
失败后,id-service2要再次查询max-id:
此时max-id已经变为200,于是id-service2获取到了[200,300]这一批ID,并将max-id=300写回:
领取专属 10元无门槛券
私享最新 技术干货