CN114244806B - 一种分布式微服务系统发号方法、计算机及存储介质 - Google Patents
一种分布式微服务系统发号方法、计算机及存储介质 Download PDFInfo
- Publication number
- CN114244806B CN114244806B CN202210184181.2A CN202210184181A CN114244806B CN 114244806 B CN114244806 B CN 114244806B CN 202210184181 A CN202210184181 A CN 202210184181A CN 114244806 B CN114244806 B CN 114244806B
- Authority
- CN
- China
- Prior art keywords
- section
- value
- bit
- self
- computer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L61/00—Network arrangements, protocols or services for addressing or naming
- H04L61/30—Managing network names, e.g. use of aliases or nicknames
- H04L61/3015—Name registration, generation or assignment
Abstract
本发明提出一种分布式微服务系统发号方法、计算机及存储介质,属于微服务系统发号技术领域。首先,对long型二进制编码bit进行四段切分;其次,为切分后的第三段bit设置自增规则;再次,从应用程序配置文件中读取机器标识ID,从数据库中读取开机进位号,自增+2,使第四段bit数值初始化为0;最后,开始发号,判断第四段的值V4是否达到最大值,若达到最大值第三段的值V3自增+1,异步保存至数据库,使第四段的值V4置零,继续发号;若未达到最大值第四段bit数值自增+1,继续发号。解决现有技术中存在的依赖时间、依赖网络传输导致的id重复、可用年限短、润秒的技术问题,实现了发号不依赖时间、中心和网络传输。
Description
技术领域
本申请涉及一种发号方法,尤其涉及一种分布式微服务系统发号方法、计算机及存储介质,属于微服务系统发号技术领域。
背景技术
在物联网系统中,高频物理传感器采样频率可达50Hz,在同一系统中,可能存在上万个这样的传感器。这种消息的特点是单条消息数据量小,可能只有50字节,但是秒级时间内,可达百万条。
在系统的数据接入层一般采样分布式的接入微服务来接入数据,为这样大量的实时数据打上一个全局级别唯一的身份标识,且不能对系统造成太多的资源需求,需要分布式性能高的发号器。在分布式系统中,发号器本身的实现方式可分为分布式和中心式。其中中心式是指,把发号器单独部署成一个服务,其他微服务都来中心发号器获取号码。利用单服务的唯一性,来保证其他微服务获取到的id是全局唯一的id。分布式是指,发号器存在各自微服务里面,不需要服务间的通讯就能产生全局id。典型是uuid,snowflake等。
现有技术有以下几种发号方法:
1、在现有产生全局唯一ID 的方法中,比较通用的作法使用UUID生产唯一编号,但是UUID是字符串型,编码长体积大,不适合物理网高并发应用。
2、中心式的发号服务,采用独立的中心式的发号服务,需要单独建立一个发号服务,各个微服务需要向中心发号服务申请号段,优点是批量获取的号码缺点是通过网络传输,速度慢,耗网络流量。
3、Twitter公司开源的SnowFlake分布式ID生成算法,使用一个long型正整数,分段标识,以机器id和时间戳为依赖,第一位是0符号位,41bit为时间戳,10bit作为机器的ID, 12bit作为毫秒内的流水号,即意味着每个节点在每毫秒可以产生4096个ID。
但以上三种发号方法均存在一定的缺点,具体是:
1、强依赖系统时钟,如果时钟回拨,导致id重复。
2、号码只是总体有序,因为依赖时间戳类的发号器,在单位时间内,会有号丢弃,发的号其实是不连续的。
3、因为时间戳位数有限,可用年限只有69.7年,到期就会溢出。
4、润秒问题。
因此,亟待一种不依赖时间、不依赖中心和不依赖网络传输的一种分布式微服务系统发号方法。
发明内容
在下文中给出了关于本发明的简要概述,以便提供关于本发明的某些方面的基本理解。应当理解,这个概述并不是关于本发明的穷举性概述。它并不是意图确定本发明的关键或重要部分,也不是意图限定本发明的范围。其目的仅仅是以简化的形式给出某些概念,以此作为稍后论述的更详细描述的前序。
鉴于此,为解决现有技术中存在的依赖时间、依赖网络传输导致的id重复、可用年限短、润秒的技术问题,本发明提供一种分布式微服务系统发号方法、计算机及存储介质。
方案一:一种分布式微服务系统发号方法,包括以下步骤:
步骤一、对long型二进制编码bit进行切分,具体切分方法是:第一段为1bit常量,且置值为0,第二段为10bit主机标识码,第三段为32bit开机进位号;第四段为21bit流水号;
步骤二、为切分后第三段bit设置自增规则;
步骤三、从应用程序配置文件中读取机器标识ID,作为第二段的值V2,从数据库中读取开机进位号,自增+2,作为第三段的值V3,使第四段bit数值初始化为0,作为第四段的值V4;
步骤四、开始发号,第四段bit数值自增+1,判断第四段的值V4是否达到最大值,若达到最大值执行步骤五,若未达到最大值,则继续执行步骤四;
步骤五、第三段的值V3自增+1,异步保存至数据库,使第四段的值V4置零,执行步骤四;
优选的,步骤一所述第一段1bit常量为0;第二段主机标识码唯一,取值1-1024。
优选的,步骤二所述自增规则包括,自增规则一:每次应用重启后,第三段bit数字+2;自增规则二、当第四段bit自增值达到最大值,第三段bit数字+1。
优选的,执行所述自增规则二时,第四段bit数值复0。
方案二:一种计算机,包括存储器和处理器,存储器存储有计算机程序,所述的处理器执行所述计算机程序时实现方案一所述一种分布式微服务系统发号方法的步骤。
方案三:一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现方案一所述一种分布式微服务系统发号方法。
本发明的有益效果如下:
1、使用应用重启次数作为依赖,通过分段设计,降低了与数据库IO的交互频率,实现纯内存计算的高速发号;
2、不依赖中心,纯本机内存发生号码,不耗网络流量;
3、与依赖时间戳类发号器相比,在同一次应用启动间隔中,本发号器能产生连续有序的号,不存在丢弃号;
4、不依赖时间戳,没有时间回拨问题,没有润秒问题;
5、不依赖时间,单位时间发号量不受限制,可以用在更高速度需求的系统;
6、应用本身重启跳过的号数很少,所以可以支持更长使用年限,比snowflake的69.7年,可以增加一倍的使用年限,可达136.1年。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本发明方法流程示意图;
图2为本发明步骤一所述long型二进制编码bit切分示意图;
图3为发号流程示意图。
具体实施方式
为了使本申请实施例中的技术方案及优点更加清楚明白,以下结合附图对本申请的示例性实施例进行进一步详细的说明,显然,所描述的实施例仅是本申请的一部分实施例,而不是所有实施例的穷举。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
实施例1、参照图1-图3说明本实施方式,一种分布式微服务系统发号方法,包括以下步骤:
步骤一、对long型二进制编码bit进行切分,具体切分方法是:
第一段为1bit常量0,这样保证发号是正整数
第二段为10bit主机标识码,重置配置文件里面配置,保证全局应用内,每个主机码唯一,取值1-1024,最多可以容纳1024台主机集群;
第三段为32bit开机进位号;
第四段为21bit流水号;
步骤二、为切分后的第三段bit设置自增规则,所述自增规则包括:
自增规则一:每次应用重启后,第三段bit数字+2;
自增规则二、当第四段bit自增值达到最大值时,即21bit全为1(十进制值2^21=2097152)时,第三段bit数字+1。当执行所述自增规则二时,第四段bit数值复0。
步骤三、从应用程序配置文件中读取机器标识ID,作为第二段的值V2,从数据库中读取开机进位号,自增+2,作为第三段的值V3,使第四段bit数值初始化为0,作为第四段的值V4;
步骤四、开始发号,第四段bit数值自增+1,判断第四段的值V4是否达到最大值,若达到最大值执行步骤五,若未达到最大值,则继续执行步骤四;
步骤五、第三段的值V3自增+1,异步保存至数据库,使第四段的值V4置零,执行步骤四;
本发明的设计思路:
1、设置第一段常量为零,第二段的主机号标识一来全局应用配置,可以强保证该long型号,在高11位上,编码固定且唯一。
2、第三段设计自增规则,依赖2个条件,其中最重要的条件是,应用重启次数,因为发号方法需要高速发号,所以必然不能有IO交互,即不能与数据库有实时交互,那么整个发号运行期间,号码的自增必须在本机内完成。通过在第四数值达到最大值时,向第三段加1保证第三段号码的初始化和运行检状态。第三段数值需要保存到数据库中,作为下一次应用重启获取到的初始值。
3、第四段流水号,在应用重启后置零,21bit可以约有二百万个流水号,对应每秒百万级的发号需求,也只是2秒才需要交互一次数据库。数据库写入简单数据对应时间在毫秒级,采用异步写入不会影响发号的效率。
4、应用重启后,系统读取数据库内记录的第三段数值,并且在此基础上自增2个数值,这样的目的是为了防止应用意外退出时,第三段数值没有存储在数据库内,造成号码重复,因此,自增2个数值,避免号码重复。
5、考虑到应用年限,因此对使用年限进行计算,按照每秒2百万的发号需求,本发号方法生成的发号器可以使用136年。
具体的计算方法:第三段号码总量:2^32=4294967296,
一年总秒数:3600*24*265=31536000秒,可用年限:4294967296÷31536000=136.1年。
6、第三段依赖应用的重启次数,成熟的应用,重新启动次数很少,甚至一年也无需重启;按照最极限的推演,应用在连接不断的重启,应用重启的时间一般在分钟级别以上,对于第三段数值自增2的频率,跳过的号数,可以忽略不计。
本发明的技术关键点:
1、 产生的long型号码的bit切分方式;
2、bit分段后,控制跳过的号码的方式,只依赖本机应用重启的次数;
3、不依赖外部时间和中心组件;
4、第三段bit的自增规则。
本发明的缩略语和关键术语定义:
1、自增:在不同段的数值原有基础上增加数字。
2、发号:产生号码。
本发明的计算机装置可以是包括有处理器以及存储器等装置,例如包含中央处理器的单片机等。并且,处理器用于执行存储器中存储的计算机程序时实现上述的基于CREO软件的可修改由关系驱动的推荐数据的推荐方法的步骤。
所称处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器 (Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列 (Field-Programmable Gate Array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card, SMC),安全数字(Secure Digital, SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
计算机可读存储介质实施例
本发明的计算机可读存储介质可以是被计算机装置的处理器所读取的任何形式的存储介质,包括但不限于非易失性存储器、易失性存储器、铁电存储器等,计算机可读存储介质上存储有计算机程序,当计算机装置的处理器读取并执行存储器中所存储的计算机程序时,可以实现上述的基于CREO软件的可修改由关系驱动的建模数据的建模方法的步骤。
所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
尽管根据有限数量的实施例描述了本发明,但是受益于上面的描述,本技术领域内的技术人员明白,在由此描述的本发明的范围内,可以设想其它实施例。此外,应当注意,本说明书中使用的语言主要是为了可读性和教导的目的而选择的,而不是为了解释或者限定本发明的主题而选择的。因此,在不偏离所附权利要求书的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。对于本发明的范围,对本发明所做的公开是说明性的,而非限制性的,本发明的范围由所附权利要求书限定。
Claims (4)
1.一种分布式微服务系统发号方法,其特征在于,包括以下步骤:
步骤一、对long型二进制编码bit进行切分,具体切分方法是:第一段为1bit常量,且置值为0,第二段为10bit主机标识码,第三段为32bit开机进位号;第四段为21bit流水号,所述第二段主机标识码唯一,取值1-1024;
步骤二、为切分后第三段bit设置自增规则,所述自增规则包括,自增规则一:每次应用重启后,第三段bit数字+2;自增规则二、当第四段bit自增值达到最大值,第三段bit数字+1;
步骤三、从应用程序配置文件中读取机器标识ID,作为第二段的值V2,从数据库中读取开机进位号,自增+2,作为第三段的值V3,使第四段bit数值初始化为0,作为第四段的值V4;
步骤四、开始发号,第四段bit数值自增+1,判断第四段的值V4是否达到最大值,若达到最大值执行步骤五,若未达到最大值,则继续执行步骤四;
步骤五、第三段的值V3自增+1,异步保存至数据库,使第四段的值V4置零,执行步骤四。
2.根据权利要求1 所述的一种分布式微服务系统发号方法,其特征在于,执行所述自增规则二时,第四段bit数值复0。
3.一种计算机,其特征在于,包括存储器和处理器,存储器存储有计算机程序,所述的处理器执行所述计算机程序时实现权利要求1或2所述的一种分布式微服务系统发号方法的步骤。
4.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1或2所述的一种分布式微服务系统发号方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210184181.2A CN114244806B (zh) | 2022-02-28 | 2022-02-28 | 一种分布式微服务系统发号方法、计算机及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210184181.2A CN114244806B (zh) | 2022-02-28 | 2022-02-28 | 一种分布式微服务系统发号方法、计算机及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114244806A CN114244806A (zh) | 2022-03-25 |
CN114244806B true CN114244806B (zh) | 2022-07-29 |
Family
ID=80748210
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210184181.2A Active CN114244806B (zh) | 2022-02-28 | 2022-02-28 | 一种分布式微服务系统发号方法、计算机及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114244806B (zh) |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106572165A (zh) * | 2016-10-26 | 2017-04-19 | 宜人恒业科技发展(北京)有限公司 | 一种分布式全局唯一id应用方法 |
CN108171862A (zh) * | 2018-01-08 | 2018-06-15 | 北京值得买科技股份有限公司 | 一种发号方法及发号器 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110795399B (zh) * | 2019-09-29 | 2023-11-14 | 北京淇瑀信息科技有限公司 | 一种为应用产生机器id的方法、装置和系统 |
CN112559558B (zh) * | 2020-12-07 | 2024-04-09 | 北京理房通支付科技有限公司 | 一种流水号生成方法和装置、计算设备和存储介质 |
CN113064903B (zh) * | 2021-04-25 | 2022-12-13 | 小马国炬(玉溪)科技有限公司 | 一种全局id生成方法、装置、设备及存储介质 |
-
2022
- 2022-02-28 CN CN202210184181.2A patent/CN114244806B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106572165A (zh) * | 2016-10-26 | 2017-04-19 | 宜人恒业科技发展(北京)有限公司 | 一种分布式全局唯一id应用方法 |
CN108171862A (zh) * | 2018-01-08 | 2018-06-15 | 北京值得买科技股份有限公司 | 一种发号方法及发号器 |
Also Published As
Publication number | Publication date |
---|---|
CN114244806A (zh) | 2022-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6931050B2 (ja) | バイナリデータをエンコード及びデコードする方法及び装置 | |
EP3820048A1 (en) | Data compression and decompression method and related apparatus, electronic device, and system | |
WO2019201039A1 (zh) | 一种更新应用程序的方法、系统及应用服务器 | |
CN110633110A (zh) | 一种服务器的启动方法、设备以及存储介质 | |
CN110704547B (zh) | 基于神经网络的关系抽取数据生成方法、模型及训练方法 | |
US11373642B2 (en) | Voice interaction method, system, terminal device and medium | |
CN109885577B (zh) | 数据处理方法、装置、终端及存储介质 | |
WO2024061005A1 (zh) | 一种音视频缓冲区读取处理方法及装置 | |
CN114528029B (zh) | 一种实现bios选项设置的方法、系统、设备和存储介质 | |
CN114244806B (zh) | 一种分布式微服务系统发号方法、计算机及存储介质 | |
CN115114232A (zh) | 一种历史版本对象列举方法、装置及其介质 | |
CN101876990A (zh) | 传递树形结构对象的方法 | |
CN107577474B (zh) | 升级文件的处理方法及装置、电子设备 | |
CN116721007B (zh) | 任务控制方法、系统及装置、电子设备和存储介质 | |
CN114337678A (zh) | 数据压缩方法、装置、设备及存储介质 | |
CN107832341B (zh) | Agnss用户去重统计方法 | |
CN115934999A (zh) | 一种基于块文件的视频流数据存储方法、装置及介质 | |
CN114095037B (zh) | 应用程序的更新方法、更新数据的压缩方法、装置及设备 | |
CN106293620B (zh) | intel平台检测Flash Rom中参数的方法 | |
CN110858920A (zh) | 视频解码方法、移动终端、服务器、系统及存储介质 | |
CN113342811A (zh) | HBase表格数据处理方法及装置 | |
CN109634823B (zh) | 一种解析Windows操作系统的休眠数据的方法 | |
CN109783015B (zh) | 文件传输方法、装置、服务器及存储介质 | |
CN102891732A (zh) | 数据发送方法和装置以及数据接收方法和装置 | |
CN113760920A (zh) | 一种数据同步方法、装置、电子设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |