一種多實例的token共享與維護的方法及系統(tǒng)的制作方法
【技術(shù)領域】
[0001]本發(fā)明涉及一種多實例的token共享與維護的方法及系統(tǒng)。
【背景技術(shù)】
[0002]隨著虛擬運營商的出現(xiàn),3大運營商陸續(xù)公布自己的對外商用接口進行支撐合作,這些商用接口形式多樣,方式不一。并仿照互聯(lián)網(wǎng)接口的理念進行了功能劃分。與傳內(nèi)部統(tǒng)接口的最大不同在多出了鑒權(quán)的概念,并產(chǎn)生了用戶名、密碼、token、key、時效和調(diào)用次數(shù)等鑒權(quán)信息。
[0003]ESB作為成熟的接口總線,為了適應時代的需要,發(fā)揮更大的作用,實現(xiàn)了面向多系統(tǒng)、多實例的token共享和維護機制。
【發(fā)明內(nèi)容】
[0004]本發(fā)明所要解決的技術(shù)問題是提供一種在多實例間實現(xiàn)token共享,自動更新,管理鑒權(quán)行為多實例的token共享與維護的方法及系統(tǒng)。
[0005]本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:一種多實例的token共享與維護的方法,具體包括以下步驟:
[0006]步驟1:將集群中的每個實例定義為一個節(jié)點,并選定一個實例為主節(jié)點,其余所有實例均為從節(jié)點;
[0007]步驟2:主節(jié)點從服務端獲取token,并將獲取的token存入共享內(nèi)存和數(shù)據(jù)庫中;
[0008]步驟3:調(diào)用一個節(jié)點,判斷所述節(jié)點是否是主節(jié)點;如果是,執(zhí)行步驟5 ;否則,執(zhí)行步驟4 ;
[0009]步驟4:檢查所述從節(jié)點是否持有token,如果是,執(zhí)行步驟5 ;否則,從節(jié)點從共享內(nèi)存中獲取token,執(zhí)行步驟5 ;
[0010]步驟5:對所述節(jié)點進行token集群內(nèi)時效性檢查,并判斷token是否喪失集群內(nèi)時效性;如果是,重新獲取token,執(zhí)行步驟6 ;否則,執(zhí)行步驟6 ;
[0011]步驟6:判斷是否接收到調(diào)用指令,如果是,執(zhí)行步驟3 ;否則,結(jié)束。
[0012]本發(fā)明的有益效果是:本發(fā)明提供的token共享和管理機制,能夠自動實現(xiàn)鑒權(quán)和token共享,避免因token、key等變動因素過期,導致接口調(diào)用失效;保證虛擬運營商的業(yè)務不受底層技術(shù)規(guī)范的限制和影響。
[0013]在上述技術(shù)方案的基礎上,本發(fā)明還可以做如下改進。
[0014]進一步,所述token的時效性,是指在預設的時間內(nèi)或預設的使用次數(shù)內(nèi),所述token是有效的;并將其中預設的時間或預設的使用次數(shù)定義為時效;
[0015]如果token超出預設的時間或預設的使用次數(shù),則判斷token喪失時效性;否則,則判斷token未喪失時效性;
[0016]所述token的時效包括集群內(nèi)時效和服務時效。
[0017]進一步,所述集群內(nèi)時效小于服務時效,在集群重啟時,存儲在共享內(nèi)存和數(shù)據(jù)庫中的token仍然有效,因此統(tǒng)一使用數(shù)據(jù)庫存儲的token完成加載。
[0018]進一步,所述步驟5具體包括以下步驟:
[0019]步驟5.1:對所述節(jié)點進行token集群內(nèi)時效性檢查,并判斷token是否喪失集群內(nèi)時效性;如果是,執(zhí)行步驟5.2 ;否則,執(zhí)行步驟6 ;
[0020]步驟5.2:判斷所述節(jié)點是否是主節(jié)點,如果是,執(zhí)行步驟5.3 ;否則,執(zhí)行步驟5.4 ;
[0021]步驟5.3:主節(jié)點重新從服務端獲取token,并存入共享內(nèi)存和數(shù)據(jù)庫,執(zhí)行步驟6 ;
[0022]步驟5.4:從節(jié)點丟棄已持有的token,從共享內(nèi)存中重新獲取token,執(zhí)行步驟6。
[0023]進一步,同時對多個節(jié)點進行集群內(nèi)時效性檢查時,主節(jié)點優(yōu)先進行集群內(nèi)時效性檢查。
[0024]進一步,所述主節(jié)點額外運行集群內(nèi)時效性檢查,在沒有調(diào)用時也會更新共享內(nèi)存中和數(shù)據(jù)庫中的token。
[0025]本發(fā)明解決上述技術(shù)問題的技術(shù)方案如下:一種多實例的token共享與維護的系統(tǒng),包括實例定義模塊、主節(jié)點模塊、調(diào)用模塊和時效性模塊;
[0026]所述實例定義模塊用于將集群中的每個實例定義為一個節(jié)點,并選定一個實例為主節(jié)點,其余所有實例均為從節(jié)點;
[0027]所述主節(jié)點模塊用于控制主節(jié)點從服務端獲取token,并將獲取的token存入共享內(nèi)存和數(shù)據(jù)庫中;
[0028]所述調(diào)用模塊用于調(diào)用一個節(jié)點,判斷所述節(jié)點是否是主節(jié)點;如果是,觸發(fā)時效性模塊;否則,檢查所述從節(jié)點是否持有token,如沒有,所述從節(jié)點從共享內(nèi)存中獲取token,觸發(fā)時效性模塊;
[0029]所述時效性模塊用于對所述節(jié)點進行token集群內(nèi)時效性檢查,并判斷token是否喪失集群內(nèi)時效性;如果是,重新獲取token,完成對token共享與維護,等待下一次調(diào)用;否則,完成對token共享與維護,等待下一次調(diào)用。
[0030]本發(fā)明的有益效果是:本發(fā)明提供的token共享和管理機制,能夠自動實現(xiàn)鑒權(quán)和token共享,避免因token、key等變動因素過期,導致接口調(diào)用失效;保證虛擬運營商的業(yè)務不受底層技術(shù)規(guī)范的限制和影響。
[0031 ] 在上述技術(shù)方案的基礎上,本發(fā)明還可以做如下改進。
[0032]進一步,所述token的時效性,是指在預設的時間內(nèi)或預設的使用次數(shù)內(nèi),所述token是有效的;并將其中預設的時間或預設的使用次數(shù)定義為時效;
[0033]如果token超出預設的時間或預設的使用次數(shù),則判斷token喪失時效性;否則,則判斷token未喪失時效性;
[0034]所述token的時效包括集群內(nèi)時效和服務時效。
[0035]進一步,所述集群內(nèi)時效小于服務時效,在集群重啟時,存儲在共享內(nèi)存和數(shù)據(jù)庫中的token仍然有效,因此統(tǒng)一使用數(shù)據(jù)庫存儲的token完成加載。
[0036]進一步,所述時效性模塊包括時效檢查模塊和節(jié)點判斷模塊;
[0037]所述時效檢查模塊用于對所述節(jié)點進行token集群內(nèi)時效性檢查,并判斷token是否喪失集群內(nèi)時效性;
[0038]所述節(jié)點判斷模塊用于判斷所述節(jié)點是否是主節(jié)點,如果是,節(jié)點重新從服務端獲取token,并存入共享內(nèi)存和數(shù)據(jù)庫;否則,從節(jié)點丟棄已持有的token,從共享內(nèi)存中重新獲取token。
[0039]進一步,同時對多個節(jié)點進行集群內(nèi)時效性檢查時,主節(jié)點優(yōu)先進行集群內(nèi)時效性檢查。
[0040]進一步,所述主節(jié)點額外運行集群內(nèi)時效性檢查,在沒有調(diào)用時也會更新共享內(nèi)存中和數(shù)據(jù)庫中的token。
【附圖說明】
[0041]圖1為本發(fā)明實施例所述的一種多實例的token共享與維護的方法流程圖;
[0042]圖2為本發(fā)明實施例所述的一種多實例的token共享與維護的系統(tǒng)結(jié)構(gòu)框圖。
[0043]附圖中,各標號所代表的部件列表如下:
[0044]1、實例定義模塊,2、主節(jié)點模塊,3、調(diào)用模塊,4、時效性模塊,41、時效檢查模塊,42、節(jié)點判斷模塊。
【具體實施方式】
[0045]以下結(jié)合附圖對本發(fā)明的原理和特征進行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
[0046]如圖1所示,為本發(fā)明實施例所述的一種多實例的token共享與維護的方法,具體包括以下步驟:
[0047]步驟1:將集群中的每個實例定義為一個節(jié)點,并選定一個實例為主節(jié)點,其余所有實例均為從節(jié)點;
[0048]步驟2:主節(jié)點從服務端獲取token,并將獲取的token存入共享內(nèi)存和數(shù)據(jù)庫中;
[0049]步驟3:調(diào)用一個節(jié)點,判斷所述節(jié)點是否是主節(jié)點;如果是,執(zhí)行步驟5 ;否則,執(zhí)行步驟4 ;
[0050]步驟4:檢查所述從節(jié)點是否持有token,如果是,執(zhí)行步驟5 ;否則,從節(jié)點從共享內(nèi)存中獲取token,執(zhí)行步驟5 ;
[0051]步驟5:對所述節(jié)點進行token集群內(nèi)時效性檢查,并判斷token是否喪失集群內(nèi)時效性;如果是,重新獲取token,執(zhí)行步驟6 ;否則,執(zhí)行步驟6 ;
[0052]步驟6:判斷是否接收到調(diào)用指令,如果是,執(zhí)行步驟3 ;否則,結(jié)束。
[0053]所述token的時效性,是指在預設的時間內(nèi)或預設的使用次數(shù)內(nèi),所述token是有效的;并將其中預設的時間或預設的使用次數(shù)定義為時效;
[0054]如果token超出預設的時間或預設的使用次數(shù),則判斷token喪失時效性;否則,則判斷token未喪失時效性;
[0055]所述token的時效包括集群內(nèi)時效和服務時效。
[0056]所述集群內(nèi)時效小于服務時效,在集群重啟時,存儲在共享內(nèi)存和數(shù)據(jù)庫中的token仍然有效,因此統(tǒng)一使用數(shù)據(jù)庫存儲的token完成加載。
[0057]所述步驟5具體包括以下步驟:
[0058]步驟5.1:對所述節(jié)點進行token集群內(nèi)時效性檢查,并判斷token是否喪失集群內(nèi)時效性;如果是,執(zhí)行步驟5.2 ;否則,執(zhí)行步驟6 ;
[0059]步驟5.2:判斷所述節(jié)點是否是主節(jié)點,如果是,執(zhí)行步驟5.3 ;否則,執(zhí)行步驟5.4 ;
[0060]步驟5.3:主節(jié)點重新從服務端獲取token,并存入共享內(nèi)存和數(shù)據(jù)庫,執(zhí)行步驟6 ;
[0061]步驟5.4:從節(jié)點丟棄已持有的token,從共享內(nèi)存中重新獲取token,執(zhí)行步驟6。
[0062]同時對多個節(jié)點進行集群內(nèi)時效性檢查時,主節(jié)點優(yōu)先進行集群內(nèi)時效性檢查。
[0063]所述主節(jié)點額外運行集群內(nèi)時效性檢查,在沒有調(diào)用時也會更新共享內(nèi)存中和數(shù)據(jù)庫中的token。
[0064]如圖2所示,為本發(fā)明實施例所述的一種多實例的token共享與維護的