數(shù)據(jù)獲取方法和裝置制造方法
【專利摘要】本公開是關(guān)于一種數(shù)據(jù)獲取方法和裝置。所述方法包括:從用戶發(fā)送的數(shù)據(jù)請求中解析出用戶標(biāo)識;獲取所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本;根據(jù)所述數(shù)據(jù)版本獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù);將所述數(shù)據(jù)返回給用戶。本公開在實現(xiàn)灰度發(fā)布的過程中,通過將數(shù)據(jù)版本獲取的邏輯過程與數(shù)據(jù)版本的存儲分離,可以指定任意發(fā)布對象,可用性強(qiáng)。
【專利說明】數(shù)據(jù)獲取方法和裝置
【技術(shù)領(lǐng)域】
[0001]本公開涉及通信【技術(shù)領(lǐng)域】,尤其涉及一種數(shù)據(jù)獲取方法和裝置。
【背景技術(shù)】
[0002]在互聯(lián)網(wǎng)產(chǎn)品發(fā)布新版本時,通常會采用灰度發(fā)布的方式,讓一部分用戶繼續(xù)使用老版本,一部分用戶開始使用新版本。針對開始使用新版本的用戶,可以在其獲取數(shù)據(jù)時,通過將新版本的數(shù)據(jù)返回給用戶以實現(xiàn)新版本的發(fā)布。如果這部分用戶對發(fā)布的新版本沒有什么反對意見,那么可以將所有用戶都遷移到新版本上?;叶劝l(fā)布可以保證整體系統(tǒng)的穩(wěn)定,能夠在早期就發(fā)現(xiàn)、解決問題。
[0003]要實現(xiàn)灰度發(fā)布,相關(guān)技術(shù)中可以在代理服務(wù)器的Nginx配置文件中進(jìn)行配置,根據(jù)用戶IP地址的權(quán)重或IP哈希值來區(qū)分使用老版本和新版本的用戶。然而,這樣的實現(xiàn)方式只能將用戶進(jìn)行大致分類,無法針對特定的用戶發(fā)布新版本,可用性較差。
[0004]相關(guān)技術(shù)還可以利用Lua作為Nginx插件,在Lua中進(jìn)行配置,比如:在Lua中配置需要使用新版本的用戶IP地址。然而,這樣的實現(xiàn)方案需要事先確定好配置,發(fā)布的對象較為單一、固定,當(dāng)需要更改發(fā)布對象時,需要修改配置,可用性也較差。同時,如果配置出現(xiàn)故障,將直接導(dǎo)致新版本發(fā)布失敗。
【發(fā)明內(nèi)容】
[0005]為克服相關(guān)技術(shù)中存在的問題,本公開提供一種數(shù)據(jù)獲取方法和裝置,以解決灰度發(fā)布可用性差的問題。
[0006]根據(jù)本公開實施例的第一方面,提供一種數(shù)據(jù)獲取方法,包括:
[0007]從用戶發(fā)送的數(shù)據(jù)請求中解析出用戶標(biāo)識;
[0008]獲取所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本;
[0009]根據(jù)所述數(shù)據(jù)版本獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù);
[0010]將所述數(shù)據(jù)返回給用戶。
[0011]可選的,所述獲取所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本包括:
[0012]判斷內(nèi)存數(shù)據(jù)庫中是否保存有所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本;
[0013]如果內(nèi)存數(shù)據(jù)庫中保存有所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本,則在所述內(nèi)存數(shù)據(jù)庫中獲取所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本。
[0014]可選的,還包括:
[0015]如果內(nèi)存數(shù)據(jù)庫中沒有保存所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本,則獲取默認(rèn)數(shù)據(jù)版本以作為所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本。
[0016]可選的,所述根據(jù)所述數(shù)據(jù)版本獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù)包括:
[0017]判斷是否存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器;
[0018]如果存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器,則從支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器上獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù)。
[0019]可選的,還包括:
[0020]如果不存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器,則從支持默認(rèn)數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器上獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù)。
[0021]可選的,所述從用戶發(fā)送的數(shù)據(jù)請求中解析出用戶標(biāo)識包括:
[0022]從所述數(shù)據(jù)請求中解析出用戶的IP地址或者cookie作為所述用戶標(biāo)識。
[0023]根據(jù)本公開實施例的第二方面,提供一種數(shù)據(jù)獲取裝置,包括:
[0024]標(biāo)識解析單元,用于從用戶發(fā)送的數(shù)據(jù)請求中解析出用戶標(biāo)識;
[0025]版本獲取單元,用于獲取所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本;
[0026]數(shù)據(jù)獲取單元,用于根據(jù)所述數(shù)據(jù)版本獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù);
[0027]數(shù)據(jù)返回單元,用于將所述數(shù)據(jù)返回給用戶。
[0028]可選的,所述版本獲取單元包括:
[0029]第一判斷子單元,用于判斷內(nèi)存數(shù)據(jù)庫中是否保存有所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本;
[0030]第一獲取子單元,用于在內(nèi)存數(shù)據(jù)庫中保存有所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本時,在所述內(nèi)存數(shù)據(jù)庫中獲取所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本。
[0031]可選的,所述版本獲取單元還包括:
[0032]第二獲取子單元,用于在內(nèi)存數(shù)據(jù)庫中沒有保存所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本時,獲取默認(rèn)的數(shù)據(jù)版本以作為所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本。
[0033]可選的,所述數(shù)據(jù)獲取單元包括:
[0034]第二判斷子單元,用于判斷是否存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器;
[0035]第三獲取子單元,用于在存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器時,則從支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器上獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù)。
[0036]可選的,所述數(shù)據(jù)獲取單元還包括:
[0037]第四獲取子單元,用于在不存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器時,從支持默認(rèn)的數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器上獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù)。
[0038]可選的,所述標(biāo)識解析單元包括:
[0039]標(biāo)識解析子單元,用于從所述數(shù)據(jù)請求中解析出用戶的IP地址或者cookie作為所述用戶標(biāo)識。
[0040]根據(jù)本公開實施例的第三方面,提供一種數(shù)據(jù)獲取裝置,包括:
[0041]處理器;
[0042]用于存儲處理器可執(zhí)行指令的存儲器;
[0043]其中,所述處理器被配置為:
[0044]從用戶發(fā)送的數(shù)據(jù)請求中解析出用戶標(biāo)識;
[0045]獲取所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本;
[0046]根據(jù)所述數(shù)據(jù)版本獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù);
[0047]將所述數(shù)據(jù)返回給用戶。
[0048]本公開的實施例提供的技術(shù)方案可以包括以下有益效果:
[0049]本公開在接收到用戶發(fā)送的數(shù)據(jù)請求時,根據(jù)從所述數(shù)據(jù)請求中解析出的用戶標(biāo)識以獲取對應(yīng)的數(shù)據(jù)版本,進(jìn)而可以為用戶獲取該數(shù)據(jù)版本的數(shù)據(jù),本公開在實現(xiàn)灰度發(fā)布的過程中,將數(shù)據(jù)版本獲取的邏輯過程與數(shù)據(jù)版本的存儲分離,可以指定任意發(fā)布對象,可用性強(qiáng)。
[0050]本公開可以將用戶標(biāo)識和數(shù)據(jù)版本的對應(yīng)關(guān)系存儲在內(nèi)存數(shù)據(jù)庫中,能夠?qū)崿F(xiàn)持久化存儲,更加安全。
[0051]本公開可以從內(nèi)存數(shù)據(jù)庫中獲取用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本,讀取速度快,不會影響用戶數(shù)據(jù)請求的響應(yīng)時間。同時,在本實施例中,由于數(shù)據(jù)版本獲取的邏輯過程與數(shù)據(jù)版本的存儲分離,當(dāng)開發(fā)人員想要調(diào)整新的數(shù)據(jù)版本的發(fā)布對象時,開發(fā)人員僅需更改內(nèi)存數(shù)據(jù)庫中用戶標(biāo)識與數(shù)據(jù)版本的對應(yīng)關(guān)系即可,操作方便。
[0052]本公開在獲取到用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本后,判斷是否存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器,并在不存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器時,可以從支持默認(rèn)數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器獲取數(shù)據(jù),以避免沒有及時更新內(nèi)存數(shù)據(jù)庫而導(dǎo)致的數(shù)據(jù)獲取失敗。
[0053]應(yīng)當(dāng)理解的是,以上的一般描述和后文的細(xì)節(jié)描述僅是示例性和解釋性的,并不能限制本公開。
【專利附圖】
【附圖說明】
[0054]此處的附圖被并入說明書中并構(gòu)成本說明書的一部分,示出了符合本公開的實施例,并與說明書一起用于解釋本公開的原理。
[0055]圖1是根據(jù)一示例性實施例示出的一種數(shù)據(jù)獲取方法的流程圖。
[0056]圖2是根據(jù)一示例性實施例示出的一種獲取用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本的流程圖。
[0057]圖3是根據(jù)一示例性實施例示出的一種根據(jù)數(shù)據(jù)版本獲取數(shù)據(jù)請求所請求的數(shù)據(jù)的流程圖。
[0058]圖4是根據(jù)一示例性實施例示出的一種數(shù)據(jù)獲取應(yīng)用場景示意圖。
[0059]圖5是根據(jù)一示例性實施例示出的一種數(shù)據(jù)獲取裝置框圖。
[0060]圖6是根據(jù)一示例性實施例示出的另一種數(shù)據(jù)獲取裝置框圖。
[0061]圖7是根據(jù)一示例性實施例示出的另一種數(shù)據(jù)獲取裝置框圖。
[0062]圖8是根據(jù)一示例性實施例示出的另一種數(shù)據(jù)獲取裝置框圖。
[0063]圖9是根據(jù)一示例性實施例示出的另一種數(shù)據(jù)獲取裝置框圖。
[0064]圖10是根據(jù)一示例性實施例示出的另一種數(shù)據(jù)獲取裝置框圖。
[0065]圖11是根據(jù)一示例性實施例示出的用于一種數(shù)據(jù)獲取裝置的一結(jié)構(gòu)示意圖。
【具體實施方式】
[0066]這里將詳細(xì)地對示例性實施例進(jìn)行說明,其示例表示在附圖中。下面的描述涉及附圖時,除非另有表示,不同附圖中的相同數(shù)字表示相同或相似的要素。以下示例性實施例中所描述的實施方式并不代表與本公開相一致的所有實施方式。相反,它們僅是與如所附權(quán)利要求書中所詳述的、本公開的一些方面相一致的裝置和方法的例子。
[0067]圖1是根據(jù)一示例性實施例示出的一種數(shù)據(jù)獲取方法的流程圖。
[0068]如圖1所示,所述數(shù)據(jù)獲取方法可以用在代理服務(wù)器中,包括以下步驟:
[0069]在步驟SlOl中,從用戶發(fā)送的數(shù)據(jù)請求中解析出用戶標(biāo)識。
[0070]在本實施例中,用戶在訪問網(wǎng)頁或者使用某應(yīng)用軟件時,用戶使用的終端會發(fā)送數(shù)據(jù)請求給代理服務(wù)器,代理服務(wù)器可以代替用戶向網(wǎng)站或軟件開發(fā)商提供的業(yè)務(wù)服務(wù)器獲取用戶請求的數(shù)據(jù)。
[0071]代理服務(wù)器在接收到用戶發(fā)送的數(shù)據(jù)請求時,會從所述數(shù)據(jù)請求中解析出用戶標(biāo)識。在本步驟中,所述從用戶發(fā)送的數(shù)據(jù)請求中解析出用戶標(biāo)識可以包括:從所述數(shù)據(jù)請求中解析出用戶的IP地址或者cookie作為所述用戶標(biāo)識。其中,cookie是指某些網(wǎng)站或應(yīng)用軟件為了辨別用戶身份而存儲在用戶使用的終端上的數(shù)據(jù),用戶cookie和用戶的IP地址一樣,都可以用來標(biāo)識用戶的身份。舉例來說,當(dāng)代理服務(wù)器接收到用戶針對某網(wǎng)頁而發(fā)送的數(shù)據(jù)請求時,可以根據(jù)管理人員或者開發(fā)人員的設(shè)置,從所述數(shù)據(jù)請求中解析出源IP地址,即用戶的IP地址,或者是從所述數(shù)據(jù)請求中解析其攜帶的cookie,以作為所述用戶標(biāo)識。
[0072]在步驟S102中,獲取所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本。
[0073]在本實施例中,當(dāng)有新版本發(fā)布時,使用灰度發(fā)布的方式,可以選擇一部分用戶作為所述新版本的發(fā)布對象,并將這部分用戶的用戶標(biāo)識與數(shù)據(jù)版本的對應(yīng)關(guān)系存儲在代理服務(wù)器上。舉例來說,某軟件發(fā)布2.0版本,開發(fā)人員想要對IP地址192.168.0.15的用戶發(fā)布該新版本,則需要將該IP地址192.168.0.15與數(shù)據(jù)版本2.0的對應(yīng)關(guān)系存儲在服務(wù)器中。
[0074]在上述過程中,可以將用戶標(biāo)識與數(shù)據(jù)版本的對應(yīng)關(guān)系存儲在代理服務(wù)器的內(nèi)存數(shù)據(jù)庫中,比如:將用戶標(biāo)識與數(shù)據(jù)版本的對應(yīng)關(guān)系以key/value的形式存儲在redis存儲系統(tǒng)中。其中,key是所述用戶標(biāo)識,value是所述數(shù)據(jù)版本。在本實施例中,將用戶標(biāo)識和數(shù)據(jù)版本的對應(yīng)關(guān)系存儲在內(nèi)存數(shù)據(jù)庫中,能夠?qū)崿F(xiàn)持久化存儲,更加安全。
[0075]請參考圖2,在本步驟中,所述獲取所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本可以包括以下步驟:
[0076]在步驟S201中,判斷內(nèi)存數(shù)據(jù)庫中是否保存有所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本。如果內(nèi)存數(shù)據(jù)庫中保存有所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本,則執(zhí)行步驟S202。如果內(nèi)存數(shù)據(jù)庫中沒有保存所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本,則執(zhí)行步驟S203。
[0077]在本步驟中,如果內(nèi)存數(shù)據(jù)庫中保存有所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本,則通常說明要向該用戶標(biāo)識對應(yīng)的用戶發(fā)布新版本,執(zhí)行步驟S202。如果內(nèi)存數(shù)據(jù)庫中沒有保存所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本,則通常說明針對該用戶標(biāo)識對應(yīng)的用戶,仍讓其使用老版本,執(zhí)行步驟S203。
[0078]仍以某軟件發(fā)布新版本2.0,開發(fā)人員想要對IP地址為192.168.0.15的用戶發(fā)布該新版本為例,假設(shè)開發(fā)人員將所述用戶標(biāo)識和所述數(shù)據(jù)版本的對應(yīng)關(guān)系存儲在redis存儲系統(tǒng)中,而在步驟SlOl中解析出的用戶標(biāo)識為IP地址:192.168.0.15,則在本步驟中,經(jīng)判斷得知,redis緩存中存在用戶標(biāo)識為192.168.0.15的key值,執(zhí)行步驟S202。如果在步驟SlOl中解析出的用戶標(biāo)識為IP地址:192.168.0.14,則在本步驟中,經(jīng)判斷得知,所述redis緩存中不存在用戶標(biāo)識為192.168.0.14的key值,則執(zhí)行步驟S203。
[0079]在步驟S202中,在所述內(nèi)存數(shù)據(jù)庫中獲取所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本。
[0080]基于前述步驟S201的判斷結(jié)果,在所述redis緩存中獲取key值192.168.0.15對應(yīng)的value值2.0,即獲取用戶標(biāo)識192.168.0.15對應(yīng)的數(shù)據(jù)版本2.0。
[0081]在步驟S203中,獲取默認(rèn)數(shù)據(jù)版本以作為所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本。
[0082]基于前述步驟S201的判斷結(jié)果,內(nèi)存數(shù)據(jù)庫中沒有保存用戶標(biāo)識192.168.0.14的key值,則獲取默認(rèn)數(shù)據(jù)版本以作為該用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本,所述默認(rèn)數(shù)據(jù)版本通常為老版本,比如:上述軟件的版本1.0。
[0083]在本實施例中,從內(nèi)存數(shù)據(jù)庫中獲取用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本,讀取速度快,不會影響用戶數(shù)據(jù)請求的響應(yīng)時間。同時,在本實施例中,由于數(shù)據(jù)版本獲取的邏輯過程與數(shù)據(jù)版本的存儲分離,當(dāng)開發(fā)人員想要調(diào)整新的數(shù)據(jù)版本的發(fā)布對象時,開發(fā)人員僅需更改內(nèi)存數(shù)據(jù)庫中用戶標(biāo)識與數(shù)據(jù)版本的對應(yīng)關(guān)系即可,可用性強(qiáng),操作方便。
[0084]需要說明的是,本實施例可以支持多個數(shù)據(jù)版本同時發(fā)布,比如:某軟件老的數(shù)據(jù)版本為1.0,開發(fā)人員同時發(fā)布新的數(shù)據(jù)版本2.0和2.1,其中,針對用戶A發(fā)布2.0版本,針對用戶B發(fā)布2.1版本,其他用戶仍然使用1.0版本,則開發(fā)人員可以將用戶A的用戶標(biāo)識與數(shù)據(jù)版本2.0的對應(yīng)關(guān)系存儲在內(nèi)存數(shù)據(jù)庫中,將用戶B的用戶標(biāo)識與數(shù)據(jù)版本2.1的對應(yīng)關(guān)系也存儲在內(nèi)存數(shù)據(jù)庫中,以便在接收到用戶A或用戶B的數(shù)據(jù)請求時,可以獲取到各自對應(yīng)的數(shù)據(jù)版本。
[0085]在步驟S103中,根據(jù)所述數(shù)據(jù)版本獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù)。
[0086]基于前述步驟S102,在獲取到所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本后,獲取該數(shù)據(jù)版本的用戶請求的數(shù)據(jù)。通常來講,網(wǎng)站或軟件開發(fā)商會提供多臺業(yè)務(wù)服務(wù)器為用戶提供服務(wù),當(dāng)有新的數(shù)據(jù)版本發(fā)布時,可以升級其中某些業(yè)務(wù)服務(wù)器,以使該業(yè)務(wù)服務(wù)器能夠支持新的數(shù)據(jù)版本的數(shù)據(jù),同時,對于其他的業(yè)務(wù)服務(wù)器,仍為老版本數(shù)據(jù)。在本步驟中,根據(jù)所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本,可以從支持該數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器上獲取用戶請求的數(shù)據(jù),也可以在本機(jī)中緩存有該數(shù)據(jù)版本的所述數(shù)據(jù)時,從本機(jī)的緩存中獲取所述數(shù)據(jù),本公開對此不作限制。
[0087]請參考圖3,所述根據(jù)所述數(shù)據(jù)版本獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù)可以包括以下步驟:
[0088]在步驟S301中,判斷是否存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器,如果存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器,則執(zhí)行步驟S302。如果不存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器,則執(zhí)行步驟S303。
[0089]在本實施例中,在獲取到用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本后,先判斷是否存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器,如果存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器,則執(zhí)行步驟S302。如果不存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器,比如:由于開發(fā)人員沒有及時更新存儲在代理服務(wù)器中的所述用戶標(biāo)識和所述數(shù)據(jù)版本的對應(yīng)關(guān)系,那么就可能會導(dǎo)致不存在支持該數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器,執(zhí)行步驟S303。
[0090]在步驟S302中,從支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器上獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù)。
[0091]在本步驟中,可以從支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器上獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù),即獲取用戶請求的數(shù)據(jù)。在這個過程中,代理服務(wù)器可以根據(jù)負(fù)載均衡原則選擇一臺支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器以獲取用戶請求的數(shù)據(jù)。當(dāng)然,在實現(xiàn)時,本領(lǐng)域技術(shù)人員也可以參照相關(guān)技術(shù),以輪詢或指定的方式選擇支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器以獲取用戶請求的數(shù)據(jù),本公開對此不作限制。
[0092]在步驟S303中,從支持默認(rèn)數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器上獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù)。
[0093]基于前述步驟S301的判斷結(jié)果,在不存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器時,可以從支持默認(rèn)數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器上獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù),即,在不存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器時,獲取老版本的數(shù)據(jù)。
[0094]舉例來說,某軟件向IP地址為192.168.0.15的用戶發(fā)布新版本2.0,開發(fā)人員已經(jīng)預(yù)先在代理服務(wù)器上存儲用戶標(biāo)識192.168.0.15與數(shù)據(jù)版本2.0的對應(yīng)關(guān)系。假設(shè),該數(shù)據(jù)版本2.0由于存在某些問題,已被停用,開發(fā)人員將原來支持2.0版本的業(yè)務(wù)服務(wù)器中的數(shù)據(jù)更新為老的數(shù)據(jù)版本1.0,但還沒有來得及更新之前存儲的用戶標(biāo)識192.168.0.15與數(shù)據(jù)版本2.0的對應(yīng)關(guān)系,當(dāng)在步驟S102中獲取到用戶標(biāo)識192.168.0.15對應(yīng)的數(shù)據(jù)版本2.0后,在步驟S301中判斷不存在支持?jǐn)?shù)據(jù)版本2.0的業(yè)務(wù)服務(wù)器,則從支持默認(rèn)數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器中獲取數(shù)據(jù),比如:從支持老的數(shù)據(jù)版本1.0的業(yè)務(wù)服務(wù)器中獲取數(shù)據(jù)。
[0095]在本實施例中,在獲取到用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本后,判斷是否存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器,并在不存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器時,從支持默認(rèn)數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器獲取數(shù)據(jù),以避免不能及時更新內(nèi)存數(shù)據(jù)庫而導(dǎo)致數(shù)據(jù)獲取失敗。
[0096]在步驟S104中,將所述數(shù)據(jù)返回給用戶。
[0097]在本步驟中,將用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本的數(shù)據(jù)返回給用戶,以實現(xiàn)灰度發(fā)布。
[0098]需要說明的是,在本實施例中,可以使用Lua作為Nginx插件,在Lua中配置用戶標(biāo)識的解析、數(shù)據(jù)版本的獲取過程,使用Lua進(jìn)行配置,不會影響Nginx的性能。
[0099]由以上描述可以看出,本公開在接收到用戶發(fā)送的數(shù)據(jù)請求時,根據(jù)從所述數(shù)據(jù)請求中解析出的用戶標(biāo)識以獲取對應(yīng)的數(shù)據(jù)版本,進(jìn)而可以為用戶獲取該數(shù)據(jù)版本的數(shù)據(jù),本公開在實現(xiàn)灰度發(fā)布的過程中,將數(shù)據(jù)版本獲取的邏輯過程與數(shù)據(jù)版本的存儲分離,可以指定任意發(fā)布對象,可用性強(qiáng)。
[0100]下面結(jié)合具體的實施例來描述本公開的實現(xiàn)過程。
[0101]請參考圖4,假設(shè)某軟件開發(fā)商使用4臺業(yè)務(wù)服務(wù)器為用戶提供服務(wù),其中,業(yè)務(wù)服務(wù)器41和業(yè)務(wù)服務(wù)器42支持?jǐn)?shù)據(jù)版本1.0,業(yè)務(wù)服務(wù)器43和業(yè)務(wù)服務(wù)器44支持新的數(shù)據(jù)版本2.0。開發(fā)人員欲將數(shù)據(jù)版本2.0發(fā)布給用戶A試用,于是在代理服務(wù)器45的內(nèi)存數(shù)據(jù)庫中存儲用戶A的IP地址192.168.0.15與數(shù)據(jù)版本2.0的對應(yīng)關(guān)系,并設(shè)置默認(rèn)數(shù)據(jù)版本1.0。
[0102]當(dāng)代理服務(wù)器45接收到某一數(shù)據(jù)請求時,如果從該數(shù)據(jù)請求中解析出的用戶的IP地址為192.168.0.15,即從該數(shù)據(jù)請求中解析出的用戶標(biāo)識為192.168.0.15,則可以在內(nèi)存數(shù)據(jù)庫中獲取所述用戶標(biāo)識192.168.0.15對應(yīng)的數(shù)據(jù)版本2.0,然后代理服務(wù)器45根據(jù)數(shù)據(jù)版本2.0,可以從業(yè)務(wù)服務(wù)器43或業(yè)務(wù)服務(wù)器44中獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù)并返回給用戶,以實現(xiàn)將數(shù)據(jù)版本2.0下發(fā)給用戶A。
[0103]如果從該數(shù)據(jù)請求中解析出的用戶的IP地址為192.168.0.14,即從該數(shù)據(jù)請求中解析出的用戶標(biāo)識為192.168.0.14,由于所述內(nèi)存數(shù)據(jù)庫中沒有保存用戶標(biāo)識192.168.0.14對應(yīng)的數(shù)據(jù)版本,所以獲取默認(rèn)數(shù)據(jù)版本1.0以作為所述用戶標(biāo)識192.168.0.14對應(yīng)的數(shù)據(jù)版本,然后代理服務(wù)器45根據(jù)數(shù)據(jù)版本1.0,可以從業(yè)務(wù)服務(wù)器41或業(yè)務(wù)服務(wù)器42中獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù)并返回給用戶,以實現(xiàn)針對IP地址為192.168.0.14的用戶,仍向其下發(fā)老的數(shù)據(jù)版本。
[0104]在圖4所示的應(yīng)用場景中,代理服務(wù)器45可以采用前述方法實施例描述的方法來實現(xiàn)上述用戶進(jìn)行數(shù)據(jù)獲取的過程,在此不再贅述。
[0105]與前述數(shù)據(jù)獲取方法實施例相對應(yīng),本公開還提供了數(shù)據(jù)獲取裝置的實施例。
[0106]圖5是根據(jù)一示例性實施例示出的一種數(shù)據(jù)獲取裝置框圖。
[0107]請參考圖5,該數(shù)據(jù)獲取裝置500包括:標(biāo)識解析單元501、版本獲取單元502、數(shù)據(jù)獲取單元503以及數(shù)據(jù)返回單元504。
[0108]其中,該標(biāo)識解析單元501被配置為:從用戶發(fā)送的數(shù)據(jù)請求中解析出用戶標(biāo)識。
[0109]該版本獲取單元502被配置為:獲取所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本。
[0110]該數(shù)據(jù)獲取單元503被配置為:根據(jù)所述數(shù)據(jù)版本獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù)。
[0111]該數(shù)據(jù)返回單元504被配置為:將所述數(shù)據(jù)返回給用戶。
[0112]上述實施例中,在接收到用戶發(fā)送的數(shù)據(jù)請求時,根據(jù)從所述數(shù)據(jù)請求中解析出的用戶標(biāo)識以獲取對應(yīng)的數(shù)據(jù)版本,進(jìn)而可以為用戶獲取該數(shù)據(jù)版本的數(shù)據(jù),本公開在實現(xiàn)灰度發(fā)布的過程中,將數(shù)據(jù)版本獲取的邏輯過程與數(shù)據(jù)版本的存儲分離,可以指定任意發(fā)布對象,可用性強(qiáng)。
[0113]請參考圖6,圖6是根據(jù)一示例性實施例示出的另一種數(shù)據(jù)獲取裝置框圖,該實施例在前述圖5所示實施例的基礎(chǔ)上,所述版本獲取單元502可以包括:第一判斷子單元5021以及第一獲取子單元5022。
[0114]其中,該第一判斷子單元5021被配置為:判斷內(nèi)存數(shù)據(jù)庫中是否保存有所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本。
[0115]該第一獲取子單元5022被配置為:在內(nèi)存數(shù)據(jù)庫中保存有所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本時,在所述內(nèi)存數(shù)據(jù)庫中獲取所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本。
[0116]上述實施例中,可以從內(nèi)存數(shù)據(jù)庫中獲取用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本,讀取速度快,不會影響用戶數(shù)據(jù)請求的響應(yīng)時間。同時,在本實施例中,由于數(shù)據(jù)版本獲取的邏輯過程與數(shù)據(jù)版本的存儲分離,當(dāng)開發(fā)人員想要調(diào)整新的數(shù)據(jù)版本的發(fā)布對象時,開發(fā)人員僅需更改內(nèi)存數(shù)據(jù)庫中用戶標(biāo)識與數(shù)據(jù)版本的對應(yīng)關(guān)系即可,操作方便。
[0117]請參考圖7,圖7是根據(jù)一示例性實施例示出的另一種數(shù)據(jù)獲取裝置框圖,該實施例在前述圖6所示實施例的基礎(chǔ)上,所述版本獲取單元502還可以包括:第二獲取子單元5023。
[0118]該第二獲取子單元5023被配置為:在內(nèi)存數(shù)據(jù)庫中沒有保存所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本時,獲取默認(rèn)的數(shù)據(jù)版本以作為所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本。
[0119]上述實施例中,可以將用戶標(biāo)識和數(shù)據(jù)版本的對應(yīng)關(guān)系存儲在內(nèi)存數(shù)據(jù)庫中,能夠?qū)崿F(xiàn)持久化存儲,更加安全。
[0120]請參考圖8,圖8是根據(jù)一示例性實施例示出的另一種數(shù)據(jù)獲取裝置框圖,該實施例在前述圖5所示實施例的基礎(chǔ)上,所述數(shù)據(jù)獲取單元503可以包括:第二判斷子單元5031、第三獲取子單元5032。
[0121]其中,該第二判斷子單元5031被配置:判斷是否存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器。
[0122]該第三獲取子單元5032被配置為:在存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器時,則從支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器上獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù)。
[0123]上述實施例中,在獲取到用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本后,判斷是否存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器,并在不存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器時,可以從支持默認(rèn)數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器獲取數(shù)據(jù),以避免沒有及時更新內(nèi)存數(shù)據(jù)庫而導(dǎo)致的數(shù)據(jù)獲取失敗。
[0124]需要說明的是,上述圖8所示的裝置實施例示出的第二判斷子單元5031和第三獲取子單元5032的結(jié)構(gòu)也可以包括在前述圖6和圖7所示的裝置實施例中,本公開對此不作限制。
[0125]請參考圖9,圖9是根據(jù)一示例性實施例示出的另一種數(shù)據(jù)獲取裝置框圖,該實施例在前述圖8所示實施例的基礎(chǔ)上,所述數(shù)據(jù)獲取單元503還可以包括:第四獲取子單元5033。
[0126]該第四獲取子單元5033被配置為:在不存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器時,從支持默認(rèn)的數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器上獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù)。
[0127]請參考圖10,圖10是根據(jù)一示例性實施例示出的另一種數(shù)據(jù)獲取裝置框圖,該實施例在前述圖5所示實施例的基礎(chǔ)上,所述標(biāo)識解析單元501可以包括:標(biāo)識解析子單元5011。
[0128]該標(biāo)識解析子單元5011被配置為:從所述數(shù)據(jù)請求中解析出用戶的IP地址或者cookie作為所述用戶標(biāo)識。
[0129]需要說明的是,上述圖10所示的裝置實施例示出的標(biāo)識解析子單元5011的結(jié)構(gòu)也可以包括在前述圖6至圖9所示的裝置實施例中,本公開對此不作限制。
[0130]關(guān)于上述實施例中的裝置,其中各個模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實施例中進(jìn)行了詳細(xì)描述,此處將不做詳細(xì)闡述說明。
[0131]相應(yīng)的,本公開還提供了一種數(shù)據(jù)獲取裝置,所述裝置包括:處理器;用于存儲處理器可執(zhí)行指令的存儲器;其中,所述處理器被配置為:從用戶發(fā)送的數(shù)據(jù)請求中解析出用戶標(biāo)識;獲取所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本;根據(jù)所述數(shù)據(jù)版本獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù);將所述數(shù)據(jù)返回給用戶。
[0132]相應(yīng)的,本公開還提供一種非臨時性計算機(jī)可讀存儲介質(zhì),當(dāng)所述存儲介質(zhì)中的指令由終端的處理器執(zhí)行,使得終端能夠執(zhí)行一種數(shù)據(jù)獲取方法,所述方法包括:從用戶發(fā)送的數(shù)據(jù)請求中解析出用戶標(biāo)識;獲取所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本;根據(jù)所述數(shù)據(jù)版本獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù);將所述數(shù)據(jù)返回給用戶。
[0133]關(guān)于上述實施例中的裝置,其中各個模塊執(zhí)行操作的具體方式已經(jīng)在有關(guān)該方法的實施例中進(jìn)行了詳細(xì)描述,此處將不做詳細(xì)闡述說明。
[0134]對于裝置實施例而言,由于其基本對應(yīng)于方法實施例,所以相關(guān)之處參見方法實施例的部分說明即可。以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本公開方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性勞動的情況下,即可以理解并實施。
[0135]圖11是根據(jù)一示例性實施例示出的一種用于數(shù)據(jù)獲取的裝置1100的框圖。例如,裝置1100可以被提供為一服務(wù)器。參照圖11,裝置1100包括處理組件1122,其進(jìn)一步包括一個或多個處理器,以及由存儲器1132所代表的存儲器資源,用于存儲可由處理部件1122的執(zhí)行的指令,例如應(yīng)用程序。存儲器1132中存儲的應(yīng)用程序可以包括一個或一個以上的每一個對應(yīng)于一組指令的模塊。此外,處理組件1122被配置為執(zhí)行指令,以執(zhí)行上述方法。
[0136]裝置1100還可以包括一個電源組件1126被配置為執(zhí)行裝置1100的電源管理,一個有線或無線網(wǎng)絡(luò)接口 1150被配置為將裝置1100連接到網(wǎng)絡(luò),和一個輸入輸出(I/O)接口 1158。裝置1100可以操作基于存儲在存儲器1132的操作系統(tǒng),例如Windows ServerTM,Mac OS XTM, UnixTM, LinuxTM, FreeBSDTM 或類似。
[0137]本領(lǐng)域技術(shù)人員在考慮說明書及實踐這里公開的公開后,將容易想到本公開的其它實施方案。本申請旨在涵蓋本公開的任何變型、用途或者適應(yīng)性變化,這些變型、用途或者適應(yīng)性變化遵循本公開的一般性原理并包括本公開未公開的本【技術(shù)領(lǐng)域】中的公知常識或慣用技術(shù)手段。說明書和實施例僅被視為示例性的,本公開的真正范圍和精神由下面的權(quán)利要求指出。
[0138]應(yīng)當(dāng)理解的是,本公開并不局限于上面已經(jīng)描述并在附圖中示出的精確結(jié)構(gòu),并且可以在不脫離其范圍進(jìn)行各種修改和改變。本公開的范圍僅由所附的權(quán)利要求來限制。
【權(quán)利要求】
1.一種數(shù)據(jù)獲取方法,其特征在于,包括: 從用戶發(fā)送的數(shù)據(jù)請求中解析出用戶標(biāo)識; 獲取所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本; 根據(jù)所述數(shù)據(jù)版本獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù); 將所述數(shù)據(jù)返回給用戶。
2.根據(jù)權(quán)利要求1所述的數(shù)據(jù)獲取方法,其特征在于, 所述獲取所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本包括: 判斷內(nèi)存數(shù)據(jù)庫中是否保存有所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本; 如果內(nèi)存數(shù)據(jù)庫中保存有所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本,則在所述內(nèi)存數(shù)據(jù)庫中獲取所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本。
3.根據(jù)權(quán)利要求2所述的數(shù)據(jù)獲取方法,其特征在于,還包括: 如果內(nèi)存數(shù)據(jù)庫中沒有保存所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本,則獲取默認(rèn)數(shù)據(jù)版本以作為所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本。
4.根據(jù)權(quán)利要求1所述的數(shù)據(jù)獲取方法,其特征在于, 所述根據(jù)所述數(shù)據(jù)版本獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù)包括: 判斷是否存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器; 如果存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器,則從支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器上獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù)。
5.根據(jù)權(quán)利要求4所述的數(shù)據(jù)獲取方法,其特征在于,還包括: 如果不存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器,則從支持默認(rèn)數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器上獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù)。
6.根據(jù)權(quán)利要求1所述的數(shù)據(jù)獲取方法,其特征在于, 所述從用戶發(fā)送的數(shù)據(jù)請求中解析出用戶標(biāo)識包括: 從所述數(shù)據(jù)請求中解析出用戶的IP地址或者cookie作為所述用戶標(biāo)識。
7.一種數(shù)據(jù)獲取裝置,其特征在于,包括: 標(biāo)識解析單元,用于從用戶發(fā)送的數(shù)據(jù)請求中解析出用戶標(biāo)識; 版本獲取單元,用于獲取所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本; 數(shù)據(jù)獲取單元,用于根據(jù)所述數(shù)據(jù)版本獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù); 數(shù)據(jù)返回單元,用于將所述數(shù)據(jù)返回給用戶。
8.根據(jù)權(quán)利要求7所述的數(shù)據(jù)獲取裝置,其特征在于,所述版本獲取單元包括: 第一判斷子單元,用于判斷內(nèi)存數(shù)據(jù)庫中是否保存有所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本;第一獲取子單元,用于在內(nèi)存數(shù)據(jù)庫中保存有所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本時,在所述內(nèi)存數(shù)據(jù)庫中獲取所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本。
9.根據(jù)權(quán)利要求8所述的數(shù)據(jù)獲取裝置,其特征在于,所述版本獲取單元還包括: 第二獲取子單元,用于在內(nèi)存數(shù)據(jù)庫中沒有保存所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本時,獲取默認(rèn)的數(shù)據(jù)版本以作為所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本。
10.根據(jù)權(quán)利要求7所述的數(shù)據(jù)獲取裝置,其特征在于,所述數(shù)據(jù)獲取單元包括: 第二判斷子單元,用于判斷是否存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器; 第三獲取子單元,用于在存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器時,則從支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器上獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù)。
11.根據(jù)權(quán)利要求10所述的數(shù)據(jù)獲取裝置,其特征在于,所述數(shù)據(jù)獲取單元還包括: 第四獲取子單元,用于在不存在支持所述數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器時,從支持默認(rèn)的數(shù)據(jù)版本的業(yè)務(wù)服務(wù)器上獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù)。
12.根據(jù)權(quán)利要求7所述的數(shù)據(jù)獲取裝置,其特征在于,所述標(biāo)識解析單元包括: 標(biāo)識解析子單元,用于從所述數(shù)據(jù)請求中解析出用戶的IP地址或者cookie作為所述用戶標(biāo)識。
13.一種數(shù)據(jù)獲取裝置,其特征在于,包括: 處理器; 用于存儲處理器可執(zhí)行指令的存儲器; 其中,所述處理器被配置為: 從用戶發(fā)送的數(shù)據(jù)請求中解析出用戶標(biāo)識; 獲取所述用戶標(biāo)識對應(yīng)的數(shù)據(jù)版本; 根據(jù)所述數(shù)據(jù)版本獲取所述數(shù)據(jù)請求所請求的數(shù)據(jù); 將所述數(shù)據(jù)返回給用戶。
【文檔編號】G06F17/30GK104317914SQ201410589547
【公開日】2015年1月28日 申請日期:2014年10月28日 優(yōu)先權(quán)日:2014年10月28日
【發(fā)明者】張旭華, 譚國斌, 馬哲 申請人:小米科技有限責(zé)任公司