ShardingSphere、雪花算法、分布式id生成器CosID概述

ShardingSphere

用处:sharding是分片的意思,sphere是球(生态的意思)。用来做分库分表的生态的。一个订单表太大,查询会很慢,要分表,分为3个表,这样查询会快一点,所以有了分库分表。

原理:对sql语句进行拦截,然后根据分库分表算法路由到具体的表,如order表的sql语句,拦截,根据orderId取模3位,路由到order1、order2、oder3表上。

还支持分布式、事务等。

shardingSphere路由的时候会给数据生成全局唯一cid,这里涉及分布式id生成器,ShardingSphere一般用的是雪花算法。

 

雪花算法

组成:时间戳+机器进程码+序列号

雷区:

1、每台电脑的时间戳不是完全相同的,有的快有的慢。解决方案:

时间回拨,记录上次的时间,如果这次的时间小于上次的时间,有问题,需要处理,处理方式很多:

  • 比如停止下线程,再进行时间分配,这样时间就补上来了。
  • 又比如,用ntpd来同步下时间。

直接从第三方来获取时间戳,保证时间戳从同一个地方获取

2、序列号不递增,当时间戳一样的时候序列号才递增,时间不同,序列号又从0开始,这导致序列号都比较小,分库分表都只能分到少数的表。解决方案就是不要时间戳一样才递增

 

分布式id生成器

现有的分布式id生成器有美团的Leaf、还有CosID。ShardingSphere里集成了CosID。

 

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值