ID发号器介绍

php swoole

1.发号器介绍

什么是发号器?

全局唯一ID生成器,主要用于分库分表唯一ID,分布式系统数据的唯一标识。

是否需要发号器?

1)是否需要全局唯一。

分布式系统应该不受单点递增ID限制,中心式的会涉及到锁的问题,而锁意味着成本和性能的下降。

2)时间相关。

时间是天然唯一递增的,不过每秒或每毫秒生成一个唯一ID明显不够,这时候就需要引入SequenceID,使得发号器能在秒或毫秒时间内继续递增,如果引入服务器实例编号、业务编号,多维依赖能使ID值在同一秒或毫秒内生成的更多。

如果要做到精确有序,需要对SequenceID进行并发控制,性能上肯定会打折。所以在秒或毫秒级别上不再保证顺序是系统应该要考虑是否能接受的地方。

3)可反解,解开的是什么?

ID反解能得到这条信息是什么时候生成的,由什么业务生成的,在哪台服务器上生成,这相当于身份证,身份证就是一个典型的分布式ID生成器。比如:

4)可制造(伪造一个过去的一条业务记录)。

比如在存储失败时,可能需要临时导出请求供后续处理,而后续处理时已经离开了当时的时间点,顺序跟其他系统错开了。我们需要制造出这样的ID 以便系统好像一直正常运行一样,可制造的 ID让你可以控制生产日期。为什么不用UUID?字符串型查询效率低;无序;太长了...

2.业界已知的ID设计

1)SnowFlake

推特的分布式自增ID算法。41bit留给毫秒时间,10bit给MachineID,也就是机器要预先配置,剩下12位留给Sequence。

这里的时间戳保存的是当前时间与固定过去时间得一个差值,不是当前时间。这样的好处是能使用更长时间,而且不受年份限制,只取决于从什么时候开始用的,2^41 / 1000*3600*24*365=69年。

如果保存的是当前时间戳,最多只能使用到2039年。2^41=2199023255552=2039/9/7 23:47:35

理论上单机速度:2^12*1000 = 4 096 000/s

2)微博

微博使用了秒级的时间,用了30bit,Sequence 用了15位,理论上可以搞定2^15=3.2w/s的速度。

用4bit来区分IDC,也就是可以支持16个 IDC。剩下的有2bit 用来区分业务,由于当前发号服务是机房中心式的,1bit 来区分热备。30+15+4+2+1=52

服务端使用memcache协议。

3.设计细节

2+41+4+10+7 = 64

固定位01, 0表示符号位,1统一长度19位

4位服务器编号可支持开启16个集群实例

10位业务编号支持1024个业务分类

理论上单机速度2^7*1000 = 128 000/s

运行流程图

为什么要用到swoole?1)使用Redis传输协议,作为内部数据交互比http更高效。

2)swoole_table共享内存变量,解决多进程间的数据共享和同步问题。

3)swoole_atomic多进程间的数据同步加锁。

mysql id发号器_ID发号器介绍相关推荐

  1. Python实现公众号每日自动发早/晚安消息(详细教程)

    公众号每日自动发早/晚安消息(python实现) 文章目录 一.微信公众号测试号申请 二.文件的配置 1.config.py 2.getApi.py 三.其他文件(可直接使用) 1.sayGoodMo ...

  2. 微信公众号php发送图片素材,php版微信公众号接口实现发红包的方法

    本文实例讲述了php版微信公众号接口实现发红包的方法.分享给大家供大家参考,具体如下: 最近接到一个任务,需要用微信来给用户自动发红包.要完成这个任务需要这么已经一些物料 微信商户号,已申请微信支付 ...

  3. 小程序,开发者微信登录可以发消息,换个微信号就发不了消息,请大神指点

    自己写的小程序,开发者微信登录可以发消息,换个微信号就发不了消息,请大神指点 我用其它的微信号,无法打开"真机调试",所以也不知道问题出在哪里? 1.请问一下,普通的微信号,如何打 ...

  4. JoVE微生物组专刊征稿,写方法拍视频教程发SCI(宏基因组公众号专属福利)

    JoVE 视频实验杂志 官网:https://www.jove.com/ 包括上万个实验和分析方法视频,还有几十个领域的数百个专业视频教程资源. 这个杂志被SCI收录了吗?必须的.杂志在Web of ...

  5. 【微信公众号发红包转账】微信公众号上手机网页接收请求,通过公众号给用户发红包 开发流程...

    有了微信支付 的开发做铺垫,相关的微信其他业务处理起来逻辑就能清晰很多. 准备好这两个架包 ------------------------------------------------------ ...

  6. php创作原声,抖音这是发小哥哥的唯一号创作的原声什么歌 I keep saying no歌曲分享...

    抖音这是发小哥哥的唯一号创作的原声是什么歌曲?本篇文章小编给大家分享一下小哥哥视频及歌曲歌词介绍,对此感兴趣的小伙伴们可以来看看. 抖音这是发小哥哥的唯一号创作的原声什么歌 最近抖音上火爆了一首英文歌 ...

  7. 企业公众号推送什么内容?企业公众号内容可以发哪些?

    大家可以想一想,我们自己关注的企业公众号有多少?又是因为什么原因才来关注的呢?后来又因为哪些原因取消公众号关注了呢? 我自己关注的企业或是品牌公众号不超过5个,由于这些公众号上的一些服务功能很方便,或 ...

  8. android 拨打多个电话号码,和多号如何使用副号打电话/发短信

    和多号副号不能开机?和多号副号不能发短信打电话?那估计是你的设置有问题吧,想要知道和多号如何使用副号打电话/发短信么?那就往下看和多号副号使用方法教程吧!相信通过小编的点拨大家都能轻松使用和多号副号哦 ...

  9. 法发〔2016〕22号《关于办理刑事案件收集提取和审查判断电子数据若干问题的规定》

    文号:法发[2016]22号 全部标题:最高人民法院最高人民检察院公安部印发<关于办理刑事案件收集提取和审查判断电子数据若干问题的规定>的通知 发文时间:2016年9月9日 来源:最高人民 ...

最新文章

  1. 小程序中实现滚动字幕
  2. C语言 | 基于51单片机实现MPU6050的卡尔曼滤波算法(代码类2)
  3. 认证授权方案之授权初识
  4. 10 条真心有趣的 Linux 命令
  5. CSDN2013年度博客之星评选
  6. python第五十二课--自定义异常类
  7. L2-2 口罩发放 (25 分)
  8. BZOJ4311:向量——题解
  9. Redis--huan
  10. 2022年信息安全工程师考试知识点:网络安全防御
  11. 日常塑料用品有哪些种类?
  12. 简单通用文章系统后台管理模板
  13. 美团8年经验之谈,测试工程师如何进阶(自动化、性能、测开)
  14. 3、低功耗蓝牙(BLE)配对和解绑
  15. <C语言>简单表白代码小❤❤
  16. 基础提升*哈希函数与哈希表
  17. 无法连接到mysql数据库_无法连接到数据库服务器(mysql workbench)
  18. 苹果app禁止手势退出
  19. abc D - Polynomial division
  20. Camera 主观测试经验 --- Good

热门文章

  1. java中特殊符号的替换
  2. 无ldf文件附加mdf文件的做法
  3. Java项目之搜索引擎
  4. IDEA下运行Web项目 页面出现中文乱码
  5. uniapp - [微信小程序] 超详细实时录音功能,录制外部声音及播放上传到服务器(支持录音完毕生成 mp3、试听音频(带进度条)、暂停录音、重新录音、限制录音最大时长、自定义音频名称等功能)
  6. 计算机二类对口高职,2019年四川对口高职招生_信息技术二类专业大纲.docx
  7. QQ音乐mv如何下载...
  8. 半导体制造工艺流程——后道工序
  9. java中复制一行,如何一次复制一行,然后粘贴到Excel中的另一个工作表
  10. 解决libresource_retriever.so:对‘curl_easy_init@CURL_OPENSSL_3’未定义的引用 ,undefined reference to `uuid_gene