亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

一種id生成方法、裝置和系統(tǒng)的制作方法

文檔序號(hào):7854940閱讀:150來(lái)源:國(guó)知局
專利名稱:一種id生成方法、裝置和系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,尤其涉及一種ID生成方法、裝置和系統(tǒng)。
背景技術(shù)
在數(shù)據(jù)庫(kù)的使用中,對(duì)每一條數(shù)據(jù)進(jìn)行insert, update, delete等操作時(shí),通常都會(huì)使用主鍵來(lái)進(jìn)行操作。每一條數(shù)據(jù)的主鍵都必須是唯一的,否則會(huì)因?yàn)橹麈I沖突導(dǎo)致操作失敗。關(guān)于主鍵的生成,目前存在如下幾種方案方案一,數(shù)據(jù)庫(kù)本身提供了 auto_increment的功能,來(lái)提供自增ID。當(dāng)使用數(shù)據(jù)庫(kù)時(shí)指明主鍵為auto_increment,寫(xiě)入數(shù)據(jù)時(shí)將主鍵設(shè)置為null值,數(shù)據(jù)庫(kù)會(huì)自動(dòng)生成遞 增的ID來(lái)作為主鍵。對(duì)于單表的操作來(lái)說(shuō),這種方案較簡(jiǎn)單,便于部署實(shí)現(xiàn)。然而,該方案存在如下缺點(diǎn)大規(guī)模的線上業(yè)務(wù)在使用數(shù)據(jù)庫(kù)時(shí),因?yàn)閿?shù)據(jù)規(guī)模較大的原因,不會(huì)使用單表來(lái)存儲(chǔ)數(shù)據(jù)。而是將數(shù)據(jù)水平分割,保存在多張結(jié)構(gòu)相同的表中,減少每張表中數(shù)據(jù),從而保證數(shù)據(jù)庫(kù)的性能。在這種情況下,由于數(shù)據(jù)庫(kù)自身提供的auto_increment只能對(duì)一張表生成自增ID,無(wú)法使用技術(shù)方案一。當(dāng)數(shù)據(jù)規(guī)模較大,需要對(duì)數(shù)據(jù)庫(kù)進(jìn)行水平分割等操作時(shí),方案一就不再適用了,可擴(kuò)展性較差,只適合小業(yè)務(wù)使用。方案二,數(shù)據(jù)庫(kù)的auto_increment支持步長(zhǎng)的設(shè)定,即在每次建立新ID的時(shí)候,ID的增長(zhǎng)量不是1,而是某個(gè)預(yù)先設(shè)置好的值。自增量設(shè)置為10,則生成的自增ID就可以是1,11,21,31,41這樣的序列。如果對(duì)數(shù)據(jù)庫(kù)進(jìn)行了分表,分為了 100張表對(duì)一張表設(shè)置自增量為10,初始值為1,則生成1,11,21,31這樣的ID序列,對(duì)第二張表設(shè)置初始值為2,生成2,12,22,32這樣的id,則能保證id是全局唯一的。然而,該方案存在如下缺點(diǎn)每張表中的ID是彼此獨(dú)立的。先表I中寫(xiě)入兩條數(shù)據(jù),對(duì)應(yīng)的ID為1、11,再在表2中寫(xiě)入數(shù)據(jù)ID為2。在這種情況下無(wú)法再使用ID作為排序的依據(jù)。如果誤操作導(dǎo)致某張表的自增量設(shè)置錯(cuò)誤,會(huì)在兩張表中生成相同的ID,ID的全局唯一性就不能保證了。采用基于數(shù)據(jù)庫(kù)的方案還存在一個(gè)嚴(yán)重問(wèn)題,當(dāng)使用了主從同步的方案后將從服務(wù)器切換為主,可能因此數(shù)據(jù)同步的延時(shí)導(dǎo)致產(chǎn)生的新ID已經(jīng)在服務(wù)器上產(chǎn)生過(guò)了,主鍵沖突導(dǎo)致數(shù)據(jù)同步出現(xiàn)問(wèn)題。方案三,使用UUID (Universally Unique Identifier,通用唯一識(shí)別碼)作為唯一主鍵。UUID是在一臺(tái)機(jī)器上生成的數(shù)字,它保證對(duì)在同一時(shí)空中的所有機(jī)器都是唯一的,保證了時(shí)鐘序列。然而,該方案存在的缺點(diǎn)如下UUID的缺陷在于生成的結(jié)果串很長(zhǎng),占用128位。在數(shù)據(jù)庫(kù)中使用會(huì)導(dǎo)致占用更多的空間。UUID是在不同機(jī)器上生成的,因此盡管UUID本身支持了時(shí)鐘序列,但是如果使用UUID來(lái)進(jìn)行排序,則依賴于分布式系統(tǒng)中不同機(jī)器之間的時(shí)間是否同步。而實(shí)際上分布式系統(tǒng)之間的時(shí)間不可能做到完全一致,因此在分布式系統(tǒng)中使用UUID來(lái)排序會(huì)存在問(wèn)題。

發(fā)明內(nèi)容
本發(fā)明提供一種ID生成方法、裝置和系統(tǒng),用以解決現(xiàn)有技術(shù)不能有效地生成全局唯一 ID的問(wèn)題。為了解決上述問(wèn)題,本發(fā)明采用的技術(shù)方案如下一方面,本發(fā)明提供了一種ID生成方法,包括第一服務(wù)端接收調(diào)用端發(fā)起的ID獲取指令,根據(jù)所述ID獲取指令,生成基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,或者生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,并將生成的所述ID值發(fā)送至所述調(diào)用端。進(jìn)一步地,本發(fā)明所述方法中,所述第一服務(wù)端配置有Get接口,負(fù)責(zé)收發(fā)與各所述調(diào)用端間的信息;所述調(diào)用端配置有調(diào)用接口,負(fù)責(zé)收發(fā)與所述第一服務(wù)端間的信息。

進(jìn)一步地,本發(fā)明所述方法中,所述第一服務(wù)端與調(diào)用端間采用memcache協(xié)議進(jìn)行通信。進(jìn)一步地,本發(fā)明所述方法中,所述ID獲取指令中攜帶有業(yè)務(wù)類型信息和ID類型指示符;所述第一服務(wù)端根據(jù)所述ID類型指示符的指示,生成基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,或者,生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值。進(jìn)一步地,本發(fā)明所述方法中,所述ID獲取指令中攜帶有業(yè)務(wù)類型信息;所述第一服務(wù)端接收到所述ID獲取指令后,根據(jù)配置的業(yè)務(wù)類型與ID類型的對(duì)應(yīng)關(guān)系,生成基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,或者,生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值。進(jìn)一步地,本發(fā)明所述方法中,所述第一服務(wù)端在利用所述自增序列進(jìn)行ID值生成時(shí),本次生成的ID值對(duì)應(yīng)的自增序列在上次生成的ID值對(duì)應(yīng)的自增序列基礎(chǔ)上連續(xù)遞+
>曰ο進(jìn)一步地,本發(fā)明所述方法中,所述第一服務(wù)端生成的基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值為位寬為32位的ID值;所述第一服務(wù)端生成的基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值為位寬為64位的ID值。優(yōu)選地,本發(fā)明所述方法還包括當(dāng)所述第一服務(wù)端故障時(shí),通過(guò)第二服務(wù)端接收所述調(diào)用端發(fā)起的ID獲取指令,并為所述調(diào)用端生成ID值;其中,所述第二服務(wù)端與所述第一服務(wù)端具有不同的服務(wù)端標(biāo)識(shí)號(hào)。另一方面,本發(fā)明還提供了一種ID生成裝置,包括指令接收單元,用于接收調(diào)用端發(fā)起的ID獲取指令;ID生成單元,用于根據(jù)所述ID獲取指令,生成基于裝置標(biāo)識(shí)號(hào)和自增序列的ID值,或者生成基于當(dāng)前時(shí)間戳、裝置標(biāo)識(shí)號(hào)和自增序列的ID值;ID發(fā)送單元,用于將所述ID生成單元生成的ID發(fā)送至所述調(diào)用端。進(jìn)一步地,本發(fā)明所述裝置中,所述指令接收單元和ID發(fā)送單元通過(guò)配置的Get接口與所述調(diào)用端通信。進(jìn)一步地,本發(fā)明所述裝置與所述調(diào)用端間采用memcache協(xié)議進(jìn)行通信。進(jìn)一步地,本發(fā)明所述裝置中,所述指令接收單元接收到的ID獲取指令中攜帶有業(yè)務(wù)類型信息和ID類型指示符;所述ID生成單元,用于根據(jù)所述ID類型指示符的指示,生成基于裝置標(biāo)識(shí)號(hào)和自增序列的ID值,或者,生成基于當(dāng)前時(shí)間戳、裝置標(biāo)識(shí)號(hào)和自增序列的ID值。進(jìn)一步地,本發(fā)明所述裝置中,所述指令接收單元接收到的ID獲取指令中攜帶有業(yè)務(wù)類型信息;所述ID生成單元,用于在接收到所述ID獲取指令后,根據(jù)配置的業(yè)務(wù)類型與ID類型的對(duì)應(yīng)關(guān)系,生成基于裝置標(biāo)識(shí)號(hào)和自增序列的ID值,或者,生成基于當(dāng)前時(shí)間戳、裝置標(biāo)識(shí)號(hào)和自增序列的ID值。進(jìn)一步地,本發(fā)明所述裝置中,所述ID生成單元,在利用所述自增序列進(jìn)行ID值生成時(shí),本次生成的ID值對(duì)應(yīng)的自增序列在上次生成的ID值對(duì)應(yīng)的自增序列基礎(chǔ)上連續(xù)遞增。進(jìn)一步地,本發(fā)明所述裝置中,所述ID生成單元生成的基于裝置標(biāo)識(shí)號(hào)和自增序列的ID值為位寬為32位的ID值,生成的基于當(dāng)前時(shí)間戳、裝置標(biāo)識(shí)號(hào)和自增序列的ID值為位寬為64位的ID值。再者,本發(fā)明還提供了一種ID生成系統(tǒng),包括第一服務(wù)端、以及一個(gè)或多個(gè)調(diào)用 端;所述調(diào)用端,用于在業(yè)務(wù)的觸發(fā)下,向所述第一服務(wù)端發(fā)起ID獲取指令,并接收所述第一服務(wù)端反饋的ID值;所述第一服務(wù)端,用于根據(jù)接收的所述ID獲取指令,生成基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,或者生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,并將生成的所述ID值發(fā)送至所述調(diào)用端。進(jìn)一步地,本發(fā)明所述系統(tǒng)中,所述第一服務(wù)端配置有Get接口,負(fù)責(zé)收發(fā)與各所述調(diào)用端的間信息;所述調(diào)用端配置有調(diào)用接口,負(fù)責(zé)收發(fā)與所述第一服務(wù)端間的信息。進(jìn)一步地,本發(fā)明所述系統(tǒng)中,所述第一服務(wù)端與各所述調(diào)用端間采用memcache協(xié)議進(jìn)行通信。進(jìn)一步地,本發(fā)明所述系統(tǒng)中,所述調(diào)用端發(fā)起的所述ID獲取指令中攜帶有業(yè)務(wù)類型信息和ID類型指示符;所述第一服務(wù)端根據(jù)所述ID類型指示符的指示,生成基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,或者,生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值。進(jìn)一步地,本發(fā)明所述系統(tǒng)中,所述調(diào)用端發(fā)起的所述ID獲取指令中攜帶有業(yè)務(wù)類型信息;所述第一服務(wù)端接收到所述ID獲取指令后,根據(jù)配置的業(yè)務(wù)類型與ID類型的對(duì)應(yīng)關(guān)系,生成基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,或者,生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值。進(jìn)一步地,本發(fā)明所述系統(tǒng)中,所述第一服務(wù)端在利用所述自增序列進(jìn)行ID值生成時(shí),本次生成的ID值對(duì)應(yīng)的自增序列在上次生成的ID值對(duì)應(yīng)的自增序列基礎(chǔ)上連續(xù)遞+
>曰ο進(jìn)一步地,本發(fā)明所述系統(tǒng)中,所述第一服務(wù)端生成的基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值為位寬為32位的ID值;所述第一服務(wù)端生成的基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值為位寬為64位的ID值。優(yōu)選地,本發(fā)明所述系統(tǒng)還包括第二服務(wù)端;所述第二服務(wù)端,用于在所述第一服務(wù)端故障時(shí),接收所述調(diào)用端發(fā)起的ID獲取指令,并為所述調(diào)用端生成ID值;其中,所述第二服務(wù)端與所述第一服務(wù)端具有不同的服務(wù)端標(biāo)識(shí)號(hào)。與現(xiàn)有技術(shù)相比,本發(fā)明有益效果如下本發(fā)明所述方案不在依賴數(shù)據(jù)庫(kù)自由的ID生成方式,而是將全局唯一 ID生成抽象成服務(wù)。對(duì)調(diào)用端來(lái)說(shuō)調(diào)用接口簡(jiǎn)單方便,生成的id全局唯一、有序、便于使用。對(duì)大規(guī)模的數(shù)據(jù)處理,也能夠良好支持。同時(shí),本發(fā)明還保證了服務(wù)的高性能,高可靠性,不存在宕機(jī)時(shí)間。


為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡(jiǎn)單地介紹,顯而易見(jiàn)地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖I為本發(fā)明實(shí)施例一提供的一種全局唯一 ID生成方法的流程圖; 圖2為本發(fā)明實(shí)施例二提供的一種全局唯一 ID生成裝置的結(jié)構(gòu)框圖;圖3為本發(fā)明實(shí)施例三提供的一種全局唯一 ID生成系統(tǒng)的結(jié)構(gòu)框圖;圖4為本發(fā)明實(shí)施例三提供的一種全局唯一 ID生成系統(tǒng)的又一結(jié)構(gòu)框圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。本發(fā)明實(shí)施例提供一種生成方法、裝置和系統(tǒng),其基本原理是將生成ID從數(shù)據(jù)庫(kù)本身抽取出來(lái),作為統(tǒng)一的公共服務(wù),提供給不同的業(yè)務(wù)使用。具體表現(xiàn)為調(diào)用端在需要生成一個(gè)全局唯一 ID時(shí),調(diào)用id=idGenerator: genID (product_name),向第一服務(wù)端發(fā)起ID獲取請(qǐng)求;第一服務(wù)端為調(diào)用端提供get接口,當(dāng)接收到調(diào)用端的ID獲取請(qǐng)求時(shí),利用設(shè)定的ID生成算法生成對(duì)應(yīng)的ID給調(diào)用端。本發(fā)明實(shí)施例所述方法、裝置和系統(tǒng)以一種便捷、簡(jiǎn)單、高效、安全的方式來(lái)生成全局唯一的數(shù)字ID,作為數(shù)據(jù)庫(kù)的主鍵,保證了服務(wù)的高可靠性,即使部分服務(wù)器故障仍然可以正常服務(wù),服務(wù)高效,可靠。下面通過(guò)幾個(gè)具體實(shí)施例對(duì)本發(fā)明的實(shí)現(xiàn)過(guò)程進(jìn)行詳細(xì)闡述,具體如下實(shí)施例一本發(fā)明實(shí)施例提供一種ID生成方法,如圖I所示,包括步驟S101、第一服務(wù)端接收調(diào)用端發(fā)起的ID獲取指令;該步驟中,所述第一服務(wù)端配置有Get接口,用于收發(fā)與各所述調(diào)用端間的信息;所述調(diào)用端配置有調(diào)用接口,用于收發(fā)與所述第一服務(wù)端間的信息。優(yōu)選地,所述第一服務(wù)端與調(diào)用端間采用memcache協(xié)議進(jìn)行通信。當(dāng)采用memcache協(xié)議通信時(shí),可以直接使用memcache的客戶端作為調(diào)用端,降低了調(diào)用端部署的工作量,便于維護(hù)。步驟S102、第一服務(wù)端根據(jù)所述ID獲取指令,生成基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,或者生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,并將所述ID值發(fā)送至調(diào)用端;該步驟中,所述ID獲取指令中攜帶有業(yè)務(wù)類型信息,用以指示標(biāo)識(shí)待生成ID值對(duì)應(yīng)的業(yè)務(wù)類型。其中,業(yè)務(wù)類型信息可以包括產(chǎn)品名稱+業(yè)務(wù)名稱,例如360_Cloud+file,即表示調(diào)用端請(qǐng)求第一服務(wù)端為360_clOUd/file分配ID。該步驟中,優(yōu)選地,在所述ID獲取指令中還攜帶ID類型指示符,或者,在第一服務(wù)端內(nèi)配置業(yè)務(wù)類型與ID類型的對(duì)應(yīng)關(guān)系,指示第一服務(wù)端在接收到ID獲取指令時(shí),生成基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,還是生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值。舉例說(shuō)明,當(dāng)ID類型指示符采用@1或者@s表示時(shí),@1表示指示第一服務(wù)端生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值;@s表示指示第一服務(wù)端生成基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,若ID獲取指令中攜帶360_cloud/file@l,則表示調(diào)用端請(qǐng)求第一服務(wù)端為360_clOUd/file生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值。 其中,生成的基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,或者生成的基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值分別對(duì)應(yīng)著不同的ID位寬,優(yōu)選地,所述基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值為32位ID值,所述基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值為64位ID值。在具體實(shí)現(xiàn)時(shí),生成哪種位寬的ID值依賴于業(yè)務(wù)規(guī)模的大小,通常情況下業(yè)務(wù)規(guī)模較大時(shí),采用長(zhǎng)ID (即64位),否則,采用短ID (即32位)。其中,對(duì)于長(zhǎng)ID的生成算法為第一服務(wù)端獲取當(dāng)前時(shí)間戳、本機(jī)的標(biāo)識(shí)號(hào)(數(shù)字編號(hào))、序列號(hào)(一個(gè)自增的數(shù)字,新ID則序列號(hào)為O),組合為一個(gè)ID。如生成的ID為13210036700100000120,其中,1321003670為時(shí)間戳、01為本機(jī)標(biāo)識(shí)號(hào)、00000120為生成的自增序列號(hào)。再次生成的ID則為13210036700100000121。當(dāng)00000120增長(zhǎng)達(dá)到99999999后再次獲取ID,自增序列號(hào)會(huì)重新變?yōu)镺。由于時(shí)間戳是秒級(jí)別的,因此當(dāng)每秒獲取ID不超過(guò)100000000個(gè)時(shí),第一服務(wù)端能保證生成的ID是全局唯一的。對(duì)于短ID的生成算法,通常用于滿足一些規(guī)模較小的業(yè)務(wù),因?yàn)楸4嬉粋€(gè)32位的ID能夠降低對(duì)數(shù)據(jù)庫(kù)空間大小的占用。短ID的生成算法對(duì)長(zhǎng)ID生成算法進(jìn)行了簡(jiǎn)化,去掉時(shí)間戳,使用服務(wù)端標(biāo)識(shí)號(hào)和自增序列號(hào)組成ID。如生成的ID為0100001243,其中,01為服務(wù)端標(biāo)識(shí)號(hào),00001243為自增序列號(hào)。當(dāng)業(yè)務(wù)規(guī)模不超過(guò)100000000時(shí),可以使用短ID算法。根據(jù)上述算法可知,所述第一服務(wù)端生成ID值時(shí),本次生成ID值對(duì)應(yīng)的自增序列在相鄰上次生成ID值對(duì)應(yīng)的自增序列基礎(chǔ)上連續(xù)遞增。另外,需要說(shuō)明的是,對(duì)于長(zhǎng)ID算法,在同一時(shí)間下,若第一服務(wù)端生成ID超出自增序列個(gè)數(shù)的上限,則向調(diào)用端返回錯(cuò)誤消息false ;對(duì)于短ID算法,若第一服務(wù)端生成所有ID的個(gè)數(shù)超出自增序列個(gè)數(shù)的上限,則向調(diào)用端返回錯(cuò)誤消息false。進(jìn)一步地,所述步驟S102中,第一服務(wù)端在生成ID值后,通過(guò)保存生成的ID值對(duì)應(yīng)的自增序列,為生成下一個(gè)ID值提供自增序列遞增參考依據(jù)。當(dāng)然,第一服務(wù)端也可將ID值及其對(duì)應(yīng)的業(yè)務(wù)類型等信息均保存下來(lái),例如保存360_CloudIfileOl 13210036700100000120。本發(fā)明實(shí)施例中,由于第一服務(wù)端保存的數(shù)據(jù)量較小,所有數(shù)據(jù)都可以加載到內(nèi)存中進(jìn)行操作,因此可以保證服務(wù)的高效性。
優(yōu)選方案,本發(fā)明實(shí)施例所述方法還支持failover機(jī)制,具體表現(xiàn)為當(dāng)?shù)谝环?wù)端故障時(shí),令第二服務(wù)端接替第一服務(wù)端為調(diào)用端生成相應(yīng)的ID。其中,第二服務(wù)端的相關(guān)配置與第一服務(wù)端完全相同,只有服務(wù)端標(biāo)識(shí)號(hào)不同。由此可見(jiàn),本發(fā)明實(shí)施例中,當(dāng)?shù)谝环?wù)端發(fā)生故障時(shí),第二服務(wù)端為調(diào)用端提供ID生成服務(wù),進(jìn)而實(shí)現(xiàn)了服務(wù)的高可靠性。綜上所述,可見(jiàn)本發(fā)明實(shí)施例所述方法通過(guò)面向服務(wù)的方式來(lái)生成全局唯一 ID,具有良好的可擴(kuò)展性,高可用性,高可靠性;同時(shí)還保證了生成的ID是有序的,遞增的,ID占用的空間相比UUID更小,使用便捷。實(shí)施例二本發(fā)明實(shí)施例提供一種ID生成裝置,該裝置優(yōu)選為一個(gè)服務(wù)器,如圖2所示,包括指令接收單元210、ID生成單元220和ID發(fā)送單元230,其中指令接收單元210,用于接收調(diào)用端發(fā)起的ID獲取指令;

ID生成單元220,用于根據(jù)所述ID獲取指令,生成基于裝置標(biāo)識(shí)號(hào)和自增序列的ID值,或者生成基于當(dāng)前時(shí)間戳、裝置標(biāo)識(shí)號(hào)和自增序列的ID值;ID發(fā)送單元230,用于將ID生成單元220生成的ID發(fā)送至調(diào)用端。其中,指令接收單元210和ID發(fā)送單元230通過(guò)裝置配置的Get接口與各調(diào)用端進(jìn)行通信。優(yōu)選地,通信所采用協(xié)議為memcache協(xié)議。進(jìn)一步地,指令接收單元210接收到的ID獲取指令中攜帶有業(yè)務(wù)類型信息,用以標(biāo)識(shí)待生成ID值對(duì)應(yīng)的業(yè)務(wù)類型。其中,業(yè)務(wù)類型信息可以包括產(chǎn)品名稱+業(yè)務(wù)名稱,例如360_cloud+file,即表示調(diào)用端請(qǐng)求本發(fā)明實(shí)施例所述裝置為360_cloud/file分配ID0優(yōu)選地,在所述ID獲取指令中還攜帶有ID類型指示符,或者,在ID生成單元220內(nèi)配置有業(yè)務(wù)類型與ID類型的對(duì)應(yīng)關(guān)系,用以指示ID生成單元220生成基于裝置標(biāo)識(shí)號(hào)和自增序列的ID值,或者,指示ID生成單元220生成基于當(dāng)前時(shí)間戳、裝置標(biāo)識(shí)號(hào)和自增序列的ID值。其中,ID生成單元220生成的基于裝置標(biāo)識(shí)號(hào)和自增序列的ID值,或者生成的基于當(dāng)前時(shí)間戳、裝置標(biāo)識(shí)號(hào)和自增序列的ID值分別對(duì)應(yīng)著不同的ID位寬,優(yōu)選地,所述基于裝置標(biāo)識(shí)號(hào)和自增序列的ID值為32位ID值,所述基于當(dāng)前時(shí)間戳、裝置標(biāo)識(shí)號(hào)和自增序列的ID值為64位ID值。在具體實(shí)現(xiàn)時(shí),生成哪種位寬的ID值依賴于業(yè)務(wù)規(guī)模的大小,通常情況下業(yè)務(wù)規(guī)模較大時(shí),采用長(zhǎng)ID (即64位),否則,采用短ID (即32位)。其中,對(duì)于長(zhǎng)ID的生成算法為ID生成單元220獲取當(dāng)前時(shí)間戳、裝置的標(biāo)識(shí)號(hào)(數(shù)字編號(hào))、序列號(hào)(一個(gè)自增的數(shù)字,新ID則序列號(hào)為0),組合為一個(gè)ID。如生成的ID 為 13210036700100000120,其中,1321003670 為時(shí)間戳、01 為裝置標(biāo)識(shí)號(hào)、00000120 為生成的自增序列號(hào)。再次生成的ID則為13210036700100000121。當(dāng)00000120增長(zhǎng)達(dá)到99999999后再次獲取ID,自增序列號(hào)會(huì)重新變?yōu)镺。由于時(shí)間戳是秒級(jí)別的,因此當(dāng)每秒獲取ID不超過(guò)100000000個(gè)時(shí),本發(fā)明實(shí)施例所述裝置能保證生成的ID是全局唯一的。對(duì)于短ID的生成算法,通常用于滿足一些規(guī)模較小的業(yè)務(wù),因?yàn)楸4嬉粋€(gè)32位的ID能夠降低對(duì)數(shù)據(jù)庫(kù)空間大小的占用。短ID的生成算法對(duì)長(zhǎng)ID生成算法進(jìn)行了簡(jiǎn)化,去掉時(shí)間戳,使用裝置標(biāo)識(shí)號(hào)和自增序列號(hào)組成ID。如生成的ID為0100001243,其中,OI為裝置標(biāo)識(shí)號(hào),00001243為自增序列號(hào)。當(dāng)業(yè)務(wù)規(guī)模不超過(guò)100000000時(shí),可以使用短ID算法。根據(jù)上述算法可知,ID生成單元220生成ID值時(shí),本次生成ID值對(duì)應(yīng)的自增序列在相鄰上次生成ID值對(duì)應(yīng)的自增序列基礎(chǔ)上連續(xù)遞增。另外,需要說(shuō)明的是,對(duì)于長(zhǎng)ID算法,在同一時(shí)間下,若ID生成單元220生成ID超出自增序列個(gè)數(shù)的上限,則向調(diào)用端返回錯(cuò)誤消息false ;對(duì)于短ID算法,若ID生成單元220生成所有ID的個(gè)數(shù)超出自增序列個(gè)數(shù)的上限,則向調(diào)用端返回錯(cuò)誤消息false。進(jìn)一步地,本發(fā)明實(shí)施例所述裝置中,ID生成單元220在生成ID值后,可以通過(guò)保存生成的ID值對(duì)應(yīng)的自增序列,為生成下一個(gè)ID值提供自增序列遞增參考依據(jù)。當(dāng)然,ID生成單元220也可將ID值及其對(duì)應(yīng)的業(yè)務(wù)類型等信息均保存下來(lái)。本發(fā)明實(shí)施例所述裝置保存的數(shù)據(jù)量較小,所有數(shù)據(jù)都可以加載到內(nèi)存中進(jìn)行操作,因此可以保證服務(wù)的高效性。

綜上所述,可見(jiàn)本發(fā)明實(shí)施例所述裝置通過(guò)面向服務(wù)的方式來(lái)生成全局唯一 ID, 具有良好的可擴(kuò)展性,高可用性等;同時(shí)還保證了生成的ID是有序的,遞增的,ID占用的空間相比UUID更小,使用便捷。實(shí)施例三本發(fā)明實(shí)施例提供一種ID生成系統(tǒng),如圖3所示,包括第一服務(wù)端310、以及一個(gè)或多個(gè)調(diào)用端320 ;調(diào)用端320,用于在業(yè)務(wù)的觸發(fā)下,向第一服務(wù)端310發(fā)起ID獲取指令,并接收第一服務(wù)端320反饋的ID值;第一服務(wù)端310,用于根據(jù)接收的ID獲取指令,生成基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,或者生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,并將生成的ID值發(fā)送至調(diào)用端320。其中,第一服務(wù)端310配置有負(fù)責(zé)收發(fā)與各調(diào)用端320間信息的Get接口 ;調(diào)用端320配置有收發(fā)與第一服務(wù)端310間信息的調(diào)用接口。優(yōu)選地,第一服務(wù)端310與各調(diào)用端320間米用memcache協(xié)議進(jìn)行通信。當(dāng)米用memcache協(xié)議通信時(shí),可以直接使用memcache的客戶端作為調(diào)用端,降低了調(diào)用端部署的工作量,便于維護(hù)。具體地,對(duì)于調(diào)用端側(cè),有調(diào)用端320發(fā)起的ID獲取指令中攜帶有業(yè)務(wù)類型信息,用以標(biāo)識(shí)待生成ID值對(duì)應(yīng)的業(yè)務(wù)類型。其中,業(yè)務(wù)類型信息可以包括產(chǎn)品名稱+業(yè)務(wù)名稱,例如360_Cloud+file,即表示調(diào)用端請(qǐng)求第一服務(wù)端為360_clOUd/file分配ID。優(yōu)選地,調(diào)用端320發(fā)起的ID獲取指令中還攜帶有ID類型指示符,用以指示第一服務(wù)端310生成基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,或者,指示第一服務(wù)端310生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值。舉例說(shuō)明,當(dāng)ID類型指示符采用@1或者Os表示時(shí),@1表示指示指示第一服務(wù)端生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值;Os指示第一服務(wù)端生成基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,若ID獲取指令中攜帶360_cloud/file@l,則表示調(diào)用端請(qǐng)求第一服務(wù)端為360_cloud/file生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值。具體地,對(duì)于第一服務(wù)端側(cè),有
第一服務(wù)端310根據(jù)ID獲取指令中攜帶的ID類型指示符,為調(diào)用端320生成基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,或者生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值?;蛘?,第一服務(wù)端310內(nèi)配置有業(yè)務(wù)類型與ID類型的對(duì)應(yīng)關(guān)系,第一服務(wù)端310根據(jù)該對(duì)應(yīng)關(guān)系生成基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,或者,生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值。其中,生成的基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,或者生成的基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值分別對(duì)應(yīng)著不同的ID位寬,優(yōu)選地,所述基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值為32位ID值,所述基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值為64位ID值。在具體實(shí)現(xiàn)時(shí),生成哪種位寬的ID值依賴于業(yè)務(wù)規(guī)模的大小,通常情況下業(yè)務(wù)規(guī)模較大時(shí),采用長(zhǎng)ID (即64位),否則,采用短ID (即32位)。其中,對(duì)于長(zhǎng)ID的生成算法為第一服務(wù)端310獲取當(dāng)前時(shí)間戳、本機(jī)的標(biāo)識(shí)號(hào)(數(shù)字編號(hào))、序列號(hào)(一個(gè)自增的數(shù)字,新ID則序列號(hào)為0),組合為一個(gè)ID。如生成的ID 為 13210036700100000120,其中,1321003670 為時(shí)間戳、01 為本機(jī)標(biāo)識(shí)號(hào)、00000120 為生成的自增序列號(hào)。再次生成的ID則為13210036700100000121。當(dāng)00000120增長(zhǎng)達(dá)到99999999后再次獲取ID,自增序列號(hào)會(huì)重新變?yōu)镺。由于時(shí)間戳是秒級(jí)別的,因此當(dāng)每秒獲 取ID不超過(guò)100000000個(gè)時(shí),第一服務(wù)端310能保證生成的ID是全局唯一的。對(duì)于短ID的生成算法,通常用于滿足一些規(guī)模較小的業(yè)務(wù),因?yàn)楸4嬉粋€(gè)32位的ID能夠降低對(duì)數(shù)據(jù)庫(kù)空間大小的占用。短ID的生成算法對(duì)長(zhǎng)ID生成算法進(jìn)行了簡(jiǎn)化,去掉時(shí)間戳,使用服務(wù)端標(biāo)識(shí)號(hào)和自增序列號(hào)組成ID。如生成的ID為0100001243,其中,01為服務(wù)端標(biāo)識(shí)號(hào),00001243為自增序列號(hào)。當(dāng)業(yè)務(wù)規(guī)模不超過(guò)100000000時(shí),可以使用短ID算法。根據(jù)上述算法可知,第一服務(wù)端310生成ID值時(shí),本次生成ID值對(duì)應(yīng)的自增序列在相鄰上次生成ID值對(duì)應(yīng)的自增序列基礎(chǔ)上連續(xù)遞增。另外,需要說(shuō)明的是,對(duì)于長(zhǎng)ID算法,在同一時(shí)間下,若第一服務(wù)端310生成ID超出自增序列個(gè)數(shù)的上限,則向調(diào)用端320返回錯(cuò)誤消息false ;對(duì)于短ID算法,若第一服務(wù)端310生成所有ID的個(gè)數(shù)超出自增序列個(gè)數(shù)的上限,則向調(diào)用端320返回錯(cuò)誤消息false。進(jìn)一步地,第一服務(wù)端310在生成ID值后,可以通過(guò)保存生成的ID值對(duì)應(yīng)的自增序列,為生成下一個(gè)ID值提供自增序列遞增參考依據(jù)。當(dāng)然,第一服務(wù)端也可將ID值及其對(duì)應(yīng)的業(yè)務(wù)類型等信息均保存下來(lái),例如保存360_cloud|file@l 13210036700100000120。本發(fā)明實(shí)施例中,由于第一服務(wù)端310保存的數(shù)據(jù)量較小,所有數(shù)據(jù)都可以加載到內(nèi)存中進(jìn)行操作,因此可以保證服務(wù)的高效性。優(yōu)選方案,如圖4所示,本發(fā)明實(shí)施例所述系統(tǒng)還包括第二服務(wù)端330 ;所述第二服務(wù)端330,用于在第一服務(wù)端310故障時(shí),接收調(diào)用端320發(fā)起的ID獲取指令,并為該調(diào)用端生成ID值。其中,第二服務(wù)端330與第一服務(wù)端310的相關(guān)配置完全相同,只有服務(wù)端標(biāo)識(shí)號(hào)不同。本優(yōu)選方案使得本發(fā)明實(shí)施例所述系統(tǒng)支持了 failover機(jī)制,進(jìn)而實(shí)現(xiàn)了服務(wù)的高可靠性。綜上所述,可見(jiàn)本發(fā)明實(shí)施例所述系統(tǒng)通過(guò)面向服務(wù)的方式來(lái)生成全局唯一 ID,具有良好的可擴(kuò)展性,高可用性,高可靠性;同時(shí)還保證了生成的ID是有序的,遞增的,ID占用的空間相比UUID更小,使用便捷。
顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同 技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
權(quán)利要求
1.一種ID生成方法,其特征在于,包括 第一服務(wù)端接收調(diào)用端發(fā)起的ID獲取指令,根據(jù)所述ID獲取指令,生成基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,或者生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,并將生成的所述ID值發(fā)送至所述調(diào)用端。
2.如權(quán)利要求I所述的方法,其特征在于,所述第一服務(wù)端配置有Get接口,負(fù)責(zé)收發(fā)與各所述調(diào)用端間的信息;所述調(diào)用端配置有調(diào)用接口,負(fù)責(zé)收發(fā)與所述第一服務(wù)端間的信息。
3.如權(quán)利要求I所述的方法,其特征在于,所述第一服務(wù)端與調(diào)用端間采用memcache協(xié)議進(jìn)行通信。
4.如權(quán)利要求I所述的方法,其特征在于, 所述ID獲取指令中攜帶有業(yè)務(wù)類型信息和ID類型指示符; 所述第一服務(wù)端根據(jù)所述ID類型指示符的指示,生成基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,或者,生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值。
5.如權(quán)利要求I所述的方法,其特征在于, 所述ID獲取指令中攜帶有業(yè)務(wù)類型信息; 所述第一服務(wù)端接收到所述ID獲取指令后,根據(jù)配置的業(yè)務(wù)類型與ID類型的對(duì)應(yīng)關(guān)系,生成基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,或者,生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值。
6.如權(quán)利要求I所述的方法,其特征在于,所述第一服務(wù)端在利用所述自增序列進(jìn)行ID值生成時(shí),本次生成的ID值對(duì)應(yīng)的自增序列在上次生成的ID值對(duì)應(yīng)的自增序列基礎(chǔ)上連續(xù)遞增。
7.如權(quán)利要求I所述的方法,其特征在于,所述第一服務(wù)端生成的基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值為位寬為32位的ID值;所述第一服務(wù)端生成的基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值為位寬為64位的ID值。
8.如權(quán)利要求I至7任一項(xiàng)所述的方法,其特征在于,所述方法還包括當(dāng)所述第一服務(wù)端故障時(shí),通過(guò)第二服務(wù)端接收所述調(diào)用端發(fā)起的ID獲取指令,并為所述調(diào)用端生成ID值;其中,所述第二服務(wù)端與所述第一服務(wù)端具有不同的服務(wù)端標(biāo)識(shí)號(hào)。
9.一種ID生成裝置,其特征在于,包括 指令接收單元,用于接收調(diào)用端發(fā)起的ID獲取指令; ID生成單元,用于根據(jù)所述ID獲取指令,生成基于裝置標(biāo)識(shí)號(hào)和自增序列的ID值,或者生成基于當(dāng)前時(shí)間戳、裝置標(biāo)識(shí)號(hào)和自增序列的ID值; ID發(fā)送單元,用于將所述ID生成單元生成的ID發(fā)送至所述調(diào)用端。
10.如權(quán)利要求9所述的裝置,其特征在于,所述指令接收單元和ID發(fā)送單元通過(guò)配置的Get接口與所述調(diào)用端通信。
11.如權(quán)利要求9所述的裝置,其特征在于,所述裝置與所述調(diào)用端間采用memcache協(xié)議進(jìn)行通信。
12.如權(quán)利要求9所述的裝置,其特征在于, 所述指令接收單元接收到的ID獲取指令中攜帶有業(yè)務(wù)類型信息和ID類型指示符; 所述ID生成單元,用于根據(jù)所述ID類型指示符的指示,生成基于裝置標(biāo)識(shí)號(hào)和自增序列的ID值,或者,生成基于當(dāng)前時(shí)間戳、裝置標(biāo)識(shí)號(hào)和自增序列的ID值。
13.如權(quán)利要求9所述的裝置,其特征在于, 所述指令接收單元接收到的ID獲取指令中攜帶有業(yè)務(wù)類型信息; 所述ID生成單元,用于在接收到所述ID獲取指令后,根據(jù)配置的業(yè)務(wù)類型與ID類型的對(duì)應(yīng)關(guān)系,生成基于裝置標(biāo)識(shí)號(hào)和自增序列的ID值,或者,生成基于當(dāng)前時(shí)間戳、裝置標(biāo)識(shí)號(hào)和自增序列的ID值。
14.如權(quán)利要求9所述的裝置,其特征在于,所述ID生成單元,在利用所述自增序列進(jìn)行ID值生成時(shí),本次生成的ID值對(duì)應(yīng)的自增序列在上次生成的ID值對(duì)應(yīng)的自增序列基礎(chǔ)上連續(xù)遞增。
15.如權(quán)利要求9所述的裝置,其特征在于,所述ID生成單元生成的基于裝置標(biāo)識(shí)號(hào)和自增序列的ID值為位寬為32位的ID值,生成的基于當(dāng)前時(shí)間戳、裝置標(biāo)識(shí)號(hào)和自增序列的ID值為位寬為64位的ID值。
16.一種ID生成系統(tǒng),其特征在于,包括第一服務(wù)端、以及一個(gè)或多個(gè)調(diào)用端; 所述調(diào)用端,用于在業(yè)務(wù)的觸發(fā)下,向所述第一服務(wù)端發(fā)起ID獲取指令,并接收所述第一服務(wù)端反饋的ID值; 所述第一服務(wù)端,用于根據(jù)接收的所述ID獲取指令,生成基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,或者生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,并將生成的所述ID值發(fā)送至所述調(diào)用端。
17.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述第一服務(wù)端配置有Get接口,負(fù)責(zé)收發(fā)與各所述調(diào)用端的間信息;所述調(diào)用端配置有調(diào)用接口,負(fù)責(zé)收發(fā)與所述第一服務(wù)端間的信息。
18.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述第一服務(wù)端與各所述調(diào)用端間采用memcache協(xié)議進(jìn)行通信。
19.如權(quán)利要求16所述的系統(tǒng),其特征在于, 所述調(diào)用端發(fā)起的所述ID獲取指令中攜帶有業(yè)務(wù)類型信息和ID類型指示符; 所述第一服務(wù)端根據(jù)所述ID類型指示符的指示,生成基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,或者,生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值。
20.如權(quán)利要求16所述的系統(tǒng),其特征在于, 所述調(diào)用端發(fā)起的所述ID獲取指令中攜帶有業(yè)務(wù)類型信息; 所述第一服務(wù)端接收到所述ID獲取指令后,根據(jù)配置的業(yè)務(wù)類型與ID類型的對(duì)應(yīng)關(guān)系,生成基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,或者,生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值。
21.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述第一服務(wù)端在利用所述自增序列進(jìn)行ID值生成時(shí),本次生成的ID值對(duì)應(yīng)的自增序列在上次生成的ID值對(duì)應(yīng)的自增序列基礎(chǔ)上連續(xù)遞增。
22.如權(quán)利要求16所述的系統(tǒng),其特征在于,所述第一服務(wù)端生成的基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值為位寬為32位的ID值;所述第一服務(wù)端生成的基于當(dāng)前時(shí)間戳、月艮務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值為位寬為64位的ID值。
23.如權(quán)利要求16至22任一項(xiàng)所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括第二服務(wù)端; 所述第二服務(wù)端,用于在所述第一服務(wù)端故障時(shí),接收所述調(diào)用端發(fā)起的ID獲取指令,并為所述調(diào)用端生成ID值;其中,所述第二服務(wù)端與所述第一服務(wù)端具有不同的服務(wù)端標(biāo)識(shí)號(hào)。
全文摘要
本發(fā)明公開(kāi)了一種ID生成方法、裝置和系統(tǒng),所述方法包括第一服務(wù)端接收調(diào)用端發(fā)起的ID獲取指令,根據(jù)所述ID獲取指令,生成基于服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,或者生成基于當(dāng)前時(shí)間戳、服務(wù)端標(biāo)識(shí)號(hào)和自增序列的ID值,并將生成的所述ID值發(fā)送至所述調(diào)用端。本發(fā)明所述技術(shù)方案通過(guò)面向服務(wù)的方式來(lái)生成全局唯一ID,具有良好的可擴(kuò)展性,高可用性,高可靠性;同時(shí)還保證了生成的ID是有序的,遞增的,ID占用的空間相比UUID更小,使用便捷。
文檔編號(hào)H04L29/08GK102769667SQ20121022372
公開(kāi)日2012年11月7日 申請(qǐng)日期2012年6月29日 優(yōu)先權(quán)日2012年6月29日
發(fā)明者桂勇哲, 陳斌, 陳超 申請(qǐng)人:北京奇虎科技有限公司, 奇智軟件(北京)有限公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1