雪花算法1

雪花算法

  • 雪花算法是Twitter公司发明的一种算法,主要目的是解决在分布式环境下,ID怎样生成的问题
  1. 分布式ID生成规则硬性要求:全局唯一:不能出现重复的ID号,既然是唯一标识,这是最基本的要求。趋势递增:MySQL中InnoDB引擎使用的是聚集索引。多数RDBMS使用Btree的数据结构来存储索引数据,在主键的选择上尽量选择有序的主键保证写入性能。单调递增:保证下一个ID号一定大于上一个。

img

  1. 分布式ID生成可用性要求:高可用:发布一个获取分布式ID的请求,服务器就要保证99.999%的情况下给创建一个全局唯一的分布式ID。低延迟:发布一个获取分布式ID的请求,要快,急速。高QPS:假如并发一口气10万个创建分布式ID请求同时杀过来,服务器要顶得住并且成功创建10万个分布式ID。

img

  1. 雪花算法Twitter的分布式自增ID算snowflake优缺点:优点:经测试snowflake每秒能生成26万个自增可排序的ID。snowflake生成的ID结果是一个64bit大小的整数,为一个Long型 (转换成字符串后长度最多19)。分布式系统内不会产生ID碰撞(datacenter和workerId作区分)并且效率高。不依赖数据库等第三方系统,以服务的方式部署,稳定性更高,生成ID的性能也非常高,可以根据自身业务分配bit位,非常灵活。

img


版权声明:本文为weixin_53502108原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。