0
点赞
收藏
分享

微信扫一扫

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

北溟有渔夫 2024-08-20 阅读 32

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。

 

 

举报

相关推荐

0 条评论