在面对ToC场景的时候,由于用户基数大,所以对于我们来说,在系统设计阶段会有专门针对用户id的相关设计。此时我们可能会考虑的场景如下:
1、系统是否需要做大还是仅满足小众场景 2、用户的并发是否高 3、系统中业务对应是否与用户相关会产生大量的数据,后续会进行分库分表? 4、用户id生成是否需要有序 5、用户生成的id是否需要稍微好看点?
基于上诉情况,咱们本文做一下用户id相关的设计方案。
在网上有很多关于全局唯一id的生成方案,例如:
1、数据库自增 2、zookeeper或者数据库控制号段 3、雪花id 4、等等
一般来说如果是ToC的场景,想要做大的话,第一个数据库自增的方案天然就被pass了,第二个zookeeper的话需要考虑并发,但是实施起来也比较麻烦。所以一般来说总体的方案都是基于雪花id来生成的。但是我们有时候需要看起来高大上一点,美观一点,同时在防重的基础上还要考虑有序存储的问题。所以一般都是需要再雪花id算法的基础上做改造。
本文我们分享一个基于雪花算法的基础上进行改造的,其实也是改造百度的唯一id的一个示例,最后生成的id是有序的,不重复的,同时也比较好看的。示例图如下:
是不是看起来效果不错。具体的信息可以参考注释。
最后按照惯例,附上本案例的源码,登陆后即可下载。
还没有评论,来说两句吧...