雪花是自然界中独一无二且不可预测的东西:
雪花属于六方晶系,它有四个晶轴,其中三个副轴在一个基面上,相互交叉成60度角,第四个轴(主晶轴)垂直于三个副轴形成的基面;雪花的基本形状是六边形,但自然界中几乎没有两片完全相同的雪花。
每一片雪花都有自己独特的图案,就像地球上没有两个一模一样的人。许多学者用显微镜观察了成千上万的雪花。这些研究最终表明,自然界中不可能形成形状和大小完全相同、部分完全对称的雪花。
雪花算法:雪花算法的原始版本是scala版本,用于生成分布式ID(纯数字,时序),顺序号等。
自增ID:不适合数据敏感场景,不适合分布式场景。
GUID:使用无意义的字符串,导致数据量增大时访问缓慢,不适合排序。
算法描述:
Donit version uses the system; Namespace system {////Distributed authentication algorithm (snowflake algorithm)//Public snowflake {private static long machineId//machine id private static long data centerid=0L; //Data ID private static long sequence=0L//Counting from zero private static length twepoch=687888001020L///Unique time random quantity private static long machineIdBits=5L//Number of machine code bytes private static long data center=5L//Number of data bytes public static long maxmachineID=-1L-1L (int) machineidbits //Maximum machine ID private static long maxdatacenterid=-1l (-1l (int) datacenterbits); //Maximum data ID private static long sequence=12L//Number of counter bytes,
包主导入(' fmt ' ' reflect ')雪花' time ')func main(){//var ids=[]int 64 { } var ids=make([]int 64,0) //设置一个机器标识,
测试结果:
结论:
理论上发电速率为kw/s,所以完全满足一般企业应用,算法可靠(这里重新处理也是多余的);
性能:100 w/s;
本文来自博客园配偶的博客。
标题:分布式ID生成方案:雪花算法(源自Twitter)
链接:https://www.52hkw.com/news/rj/62896.html
版权:文章转载自网络,如有侵权,请联系删除!