当前位置: 首页 > news >正文

网站建设相对路径上海闵行区网站制作公司

网站建设相对路径,上海闵行区网站制作公司,wordpress乐器模版,网站做app的软件有哪些snowflake中文的意思是 雪花#xff0c;雪片#xff0c;所以翻译成雪花算法。它最早是twitter内部使用的分布式环境下的唯一ID生成算法。在2014年开源。雪花算法产生的背景当然是twitter高并发环境下对唯一ID生成的需求#xff0c;得益于twitter内部高超的技术#xff0c;雪…snowflake中文的意思是 雪花雪片所以翻译成雪花算法。它最早是twitter内部使用的分布式环境下的唯一ID生成算法。在2014年开源。雪花算法产生的背景当然是twitter高并发环境下对唯一ID生成的需求得益于twitter内部高超的技术雪花算法流传至今并被广泛使用。它至少有如下几个特点能满足高并发分布式系统环境下ID不重复基于时间戳可以保证基本有序递增有些业务场景对这个又要求不依赖第三方的库或者中间件生成效率极高雪花算法原理10位的数据机器位所以可以部署在1024个节点。12位的序列在毫秒的时间戳内计数。支持每个节点每毫秒产生4096个ID序号所以最大可以支持单节点大概四百万的并发量这个妥妥的够用了。雪花算法java实现public class SnowflakeIdWorker {/** 开始时间截 (这个用自己业务系统上线的时间) */private final long twepoch 1575365018000L;/** 机器id所占的位数 */private final long workerIdBits 10L;/** 支持的最大机器id结果是31 (这个移位算法可以很快的计算出几位二进制数所能表示的最大十进制数) */private final long maxWorkerId -1L ^ (-1L workerIdBits);/** 序列在id中占的位数 */private final long sequenceBits 12L;/** 机器ID向左移12位 */private final long workerIdShift sequenceBits;/** 时间截向左移22位(1012) */private final long timestampLeftShift sequenceBits workerIdBits;/** 生成序列的掩码这里为4095 (0b1111111111110xfff4095) */private final long sequenceMask -1L ^ (-1L sequenceBits);/** 工作机器ID(0~1024) */private long workerId;/** 毫秒内序列(0~4095) */private long sequence 0L;/** 上次生成ID的时间截 */private long lastTimestamp -1L;//Constructors/*** 构造函数* param workerId 工作ID (0~1024)*/public SnowflakeIdWorker(long workerId) {if (workerId maxWorkerId || workerId 0) {throw new IllegalArgumentException(String.format(workerId cant be greater than %d or less than 0, maxWorkerId));}this.workerId workerId;}// Methods/*** 获得下一个ID (该方法是线程安全的)* return SnowflakeId*/public synchronized long nextId() {long timestamp timeGen();//如果当前时间小于上一次ID生成的时间戳说明系统时钟回退过这个时候应当抛出异常if (timestamp lastTimestamp) {throw new RuntimeException(String.format(Clock moved backwards. Refusing to generate id for %d milliseconds, lastTimestamp - timestamp));}//如果是同一时间生成的则进行毫秒内序列if (lastTimestamp timestamp) {sequence (sequence 1) sequenceMask;//毫秒内序列溢出if (sequence 0) {//阻塞到下一个毫秒,获得新的时间戳timestamp tilNextMillis(lastTimestamp);}}//时间戳改变毫秒内序列重置else {sequence 0L;}//上次生成ID的时间截lastTimestamp timestamp;//移位并通过或运算拼到一起组成64位的IDreturn ((timestamp - twepoch) timestampLeftShift) //| (workerId workerIdShift) //| sequence;}/*** 阻塞到下一个毫秒直到获得新的时间戳* param lastTimestamp 上次生成ID的时间截* return 当前时间戳*/protected long tilNextMillis(long lastTimestamp) {long timestamp timeGen();while (timestamp lastTimestamp) {timestamp timeGen();}return timestamp;}/*** 返回以毫秒为单位的当前时间* return 当前时间(毫秒)*/protected long timeGen() {return System.currentTimeMillis();} }上面第一部分说到雪花算法的性能比较高接下来我们测试下性能public static void main(String[] args) {SnowflakeIdWorker idWorker new SnowflakeIdWorker(1);long start System.currentTimeMillis();int count 0;for (int i 0; System.currentTimeMillis()-start1000; i,counti) {idWorker.nextId();}long end System.currentTimeMillis()-start;System.out.println(end);System.out.println(count);}其可以产生400w的id效率还是相当高的。调整比特位分布很多公司会根据 snowflake 算法根据自己的业务做二次改造。举个例子。你们公司的业务评估不需要运行69年可能10年就够了。但是集群的节点可能会超过1024个这种情况下你就可以把时间戳调整成39bit然后workerid调整为12比特。同时workerid也可以拆分下比如根据业务拆分或者根据机房拆分等。类似如下源码twitter的雪花算法https://github.com/twitter-archive/snowflake
http://www.w-s-a.com/news/680807/

相关文章:

  • 天津高端品牌网站建设韶关网站建设墨子
  • Wordpress多站点为什么注册不了2008iis搭建网站
  • 天津高端网站制作建网站的公司服务
  • 温州网站推广优化类似淘宝的网站怎么做的
  • 网站建设实训考试什么网站做玩具的比较多
  • 上海网站建设特点怎样给公司做一个网站做推广
  • 流量网站怎么做的济南优化排名公司
  • 保定网站制作套餐设计师导航网站大全
  • 惠州 商城网站建设石家庄新闻广播在线收听
  • 洪山网站建设域名购买之后怎么做网站
  • 北京网站建设公司服务哪家好wap是什么意思?
  • 怎么看公司网站做的好不好哦wordpress页面目录下
  • 做装修业务呢有多少网站平台搭建是什么
  • 潍坊优化网站排名淘宝做网站被骗
  • 建设专业网站的利弊免费logo设计生成器下载
  • 怎么在备案号添加网站网页设计动画网站
  • 网站开发 只要wordpress滑动注册
  • 跨境电商运营主要做什么静态网站如何做优化
  • 南充网站建设网站网站备案安全责任书是谁盖章
  • 怎么将网站设置为首页网站子目录怎么做
  • 做网站交互wordpress信息导出
  • 如何自己做企业网站做外贸登录国外网站
  • 郑州炫彩网站建设网站集约化建设调研报告
  • 2016年两学一做教育网站优良的定制网站建设制作商
  • 自己做网站需要哪些流程网站建设服务费如何做会计分录
  • 莆田建站培训用手机制作游戏的app软件
  • 中山建网站找哪家wordpress采集图片插件
  • 网站首页做后台链接有什么好用的模拟建站软件
  • 宁波有没有开发网站的公司网站上线除了备案还需要什么
  • 网站备案授权wordpress默认主体设置