本發(fā)明涉及配置數(shù)據(jù)領(lǐng)域,特別涉及一種新環(huán)境隔離的配置數(shù)據(jù)管理方法及系統(tǒng)。
背景技術(shù):
配置中心是一個針對不同環(huán)境的管理持久配置的系統(tǒng),為應(yīng)用系統(tǒng)提供了獲取配置的服務(wù),應(yīng)用系統(tǒng)不僅可以在啟動時從配置中心上獲取相關(guān)的配置,而且可以在運行中對配置數(shù)據(jù)的變化進行感知并獲取變化后的配置數(shù)據(jù)。
配置數(shù)據(jù)在大多數(shù)系統(tǒng)中有以下幾種解決方案:
1)將配置信息存儲在本地磁盤文件,配置項變更時修改本地文件,這種方式有以下幾種缺點:
首先,不便于運維管理,應(yīng)用系統(tǒng)的復(fù)雜度日益增加,配置分散,如果再加上集群節(jié)點數(shù)量多的話,配置變更得相當(dāng)麻煩,逐臺機器登錄上去改,增加停機維護時間成本,而且還容易出錯。
其次,不利于發(fā)布,針對每種環(huán)境需要打不同的部署包。
另外,安全性問題,導(dǎo)致線上賬戶等隱秘信息處于公開狀態(tài)。
2)是基于zookeeper實現(xiàn)的配置中心,ZooKeeper是一個Paxos算法實現(xiàn),也是Hadoop下的一個子項目,被認(rèn)為是Google Chubby的開源版,主要用來在分布式環(huán)境下提供分布式鎖、配置管理、名字服務(wù)、群組服務(wù)。它具有很高的可用性、穩(wěn)定性、可靠性。但主要缺點是只能在java系統(tǒng)中使用,無法在其它系統(tǒng)(如.net等)中使用。
技術(shù)實現(xiàn)要素:
本發(fā)明要解決的技術(shù)問題是,如何提供一配置中心,然后基于Http協(xié)議進行系統(tǒng)交互,利用MYSQL數(shù)據(jù)庫對配置內(nèi)容進行存儲,并在分布式集群多節(jié)點部署的配置數(shù)據(jù)管理方法。
解決上述技術(shù)問題,本發(fā)明提供了一種新環(huán)境隔離的配置數(shù)據(jù)管理方法,包括:部署配置中心后臺、配置中心服務(wù)器、業(yè)務(wù)系統(tǒng)以及數(shù)據(jù)庫,還包括步驟如下:
在配置中心后臺,錄入和/或變更所述業(yè)務(wù)系統(tǒng)所使用的初始配置數(shù)據(jù);
調(diào)用所述配置中心服務(wù)器的遠程接口,將所述初始配置數(shù)據(jù)持久化至所述數(shù)據(jù)庫;
在上述數(shù)據(jù)持久化完成后,所述配置中心后臺請求并接收在所述業(yè)務(wù)系統(tǒng)中的服務(wù)器的節(jié)點,并通知除該服務(wù)器的節(jié)點以外的節(jié)點,同時在所述數(shù)據(jù)庫中同步得到最新配置數(shù)據(jù);
上述服務(wù)器的節(jié)點在所述業(yè)務(wù)系統(tǒng)初次啟動時,調(diào)用所述配置中心服務(wù)器中的http接口,獲取訂閱的配置項內(nèi)容;根據(jù)獲得的配置項內(nèi)容,采用長輪詢的方式定期向所述配置中心服務(wù)器發(fā)請求,檢測訂閱的配置項內(nèi)容是否有變化,若是,則獲取得到上述最新配置數(shù)據(jù)。
更進一步,所述業(yè)務(wù)系統(tǒng)中的服務(wù)器還用以,在當(dāng)前服務(wù)器上設(shè)置一個系統(tǒng)環(huán)境變量ENV_CODE,進行服務(wù)器環(huán)境區(qū)分;并根據(jù)當(dāng)前系統(tǒng)環(huán)境變量所屬的環(huán)境,使得所述配置中心服務(wù)器獲取指定環(huán)境的配置數(shù)據(jù)。
更進一步,所述數(shù)據(jù)庫包括多個數(shù)據(jù)庫集群節(jié)點,若所述數(shù)據(jù)庫集群節(jié)點全部宕機時,則所述配置中心服務(wù)器直接從內(nèi)存中提取所述配置項內(nèi)容給業(yè)務(wù)系統(tǒng)中的服務(wù)器;
所述配置中心后臺包括多個后臺集群節(jié)點,若所述配置中心后臺的一部分機器宕機時,則所述業(yè)務(wù)系統(tǒng)中的服務(wù)器正常獲取配置項內(nèi)容;若所述配置中心后臺的機器全部宕機,且所述業(yè)務(wù)系統(tǒng)中的服務(wù)器的節(jié)點全部不可用時,則所述業(yè)務(wù)系統(tǒng)中的服務(wù)器從本地磁盤上的最近一次配置信息的快照文件中讀取配置項內(nèi)容。
更進一步,所述配置項內(nèi)容可采用spring的bean注入特性,將獲取到的所述配置內(nèi)容注入已經(jīng)注解了的屬性。
更進一步,方法還包括根據(jù)獲得的配置項內(nèi)容,采用WEBSOCKET定期向所述配置中心服務(wù)器發(fā)請求,檢測訂閱的配置項內(nèi)容是否有變化,若是,則獲取得到上述最新配置數(shù)據(jù)采用方式感知配置項內(nèi)容發(fā)生變化。
基于上述本申請還提供了一種新環(huán)境隔離的配置數(shù)據(jù)管理系統(tǒng),包括:集群化的配置中心后臺、集群化的配置中心服務(wù)器、集群化的業(yè)務(wù)系統(tǒng)以及集群化的數(shù)據(jù)庫,
配置管理員在所述配置中心后臺,錄入和/或變更所述業(yè)務(wù)系統(tǒng)所使用的初始配置數(shù)據(jù);
調(diào)用所述配置中心服務(wù)器中上節(jié)點的遠程接口,將所述初始配置數(shù)據(jù)持久化至所述數(shù)據(jù)庫;以及在上述數(shù)據(jù)持久化完成后,所述配置中心后臺請求并接收在所述業(yè)務(wù)系統(tǒng)中的集群服務(wù)器的任一節(jié)點,并通知除該節(jié)點以外的節(jié)點,同時在所述數(shù)據(jù)庫中同步得到最新配置數(shù)據(jù);
上述集群服務(wù)器的任一節(jié)點在所述業(yè)務(wù)系統(tǒng)初次啟動時,調(diào)用所述配置中心服務(wù)器中的http接口,獲取訂閱的配置項內(nèi)容;根據(jù)獲得的配置項內(nèi)容,采用長輪詢的方式定期向所述配置中心服務(wù)器發(fā)請求,檢測訂閱的配置項內(nèi)容是否有變化,若是,則獲取得到上述最新配置數(shù)據(jù)。
更進一步,所述集群化的配置中心后臺還被配置為:在測試環(huán)境、開發(fā)環(huán)境、集成測試環(huán)境、線上環(huán)境、DEMO環(huán)境中進行環(huán)境和/或業(yè)務(wù)系統(tǒng)的配置。
更進一步,所述業(yè)務(wù)系統(tǒng)中的服務(wù)器還被配置為,在當(dāng)前服務(wù)器上設(shè)置一個系統(tǒng)環(huán)境變量ENV_CODE,進行服務(wù)器環(huán)境區(qū)分;并根據(jù)當(dāng)前系統(tǒng)環(huán)境變量所屬的環(huán)境,使得所述配置中心服務(wù)器獲取指定環(huán)境的配置數(shù)據(jù)。
更進一步,集群化的配置中心服務(wù)器還被配置為:根據(jù)獲得的配置項內(nèi)容,采用WEBSOCKET定期向所述配置中心服務(wù)器發(fā)請求,檢測訂閱的配置項內(nèi)容是否有變化,若是,則獲取得到上述最新配置數(shù)據(jù)采用方式感知配置項內(nèi)容發(fā)生變化。
更進一步,所述配置中心被配置為具備容災(zāi)處理機制:通過在本地緩存一份配置數(shù)據(jù)到內(nèi)存,防止所述集群化的數(shù)據(jù)庫宕機;集群化的業(yè)務(wù)系統(tǒng)上的服務(wù)器根據(jù)儲存至本地磁盤文件的配置快照,防止業(yè)務(wù)系統(tǒng)上的服務(wù)器的全部宕機
本發(fā)明的有益效果:
1)本發(fā)明提供了新環(huán)境隔離的配置數(shù)據(jù)管理方法,由于在配置中心后臺,錄入和/或變更所述業(yè)務(wù)系統(tǒng)所使用的初始配置數(shù)據(jù);調(diào)用所述配置中心服務(wù)器的遠程接口,將所述初始配置數(shù)據(jù)持久化至所述數(shù)據(jù)庫;在上述數(shù)據(jù)持久化完成后,所述配置中心后臺請求并接收在所述業(yè)務(wù)系統(tǒng)中的服務(wù)器的節(jié)點,并通知除該服務(wù)器的節(jié)點以外的節(jié)點,同時在所述數(shù)據(jù)庫中同步得到最新配置數(shù)據(jù);上述服務(wù)器的節(jié)點在所述業(yè)務(wù)系統(tǒng)初次啟動時,調(diào)用所述配置中心服務(wù)器中的http接口,獲取訂閱的配置項內(nèi)容;根據(jù)獲得的配置項內(nèi)容,采用長輪詢的方式定期向所述配置中心服務(wù)器發(fā)請求,檢測訂閱的配置項內(nèi)容是否有變化,若是,則獲取得到上述最新配置數(shù)據(jù)。本發(fā)明的方法基于Http協(xié)議進行系統(tǒng)交互,并利用MYSQL數(shù)據(jù)庫對配置內(nèi)容進行存儲,在分布式集群形成多節(jié)點部署。
2)更進一步,由于所述業(yè)務(wù)系統(tǒng)中的服務(wù)器還用以,在當(dāng)前服務(wù)器上設(shè)置一個系統(tǒng)環(huán)境變量ENV_CODE,進行服務(wù)器環(huán)境區(qū)分;并根據(jù)當(dāng)前系統(tǒng)環(huán)境變量所屬的環(huán)境,使得所述配置中心服務(wù)器獲取指定環(huán)境的配置數(shù)據(jù)。通過上述可以實現(xiàn)環(huán)境隔離,同時根據(jù)當(dāng)前服務(wù)器所屬環(huán)境,在配置中心服務(wù)器上獲取指定環(huán)境的配置數(shù)據(jù),運維人員不需要再為不同環(huán)境打不同的部署包,簡化部署工作。
2)部署配置中心后臺被配置為配置信息集中管理,所有環(huán)境、業(yè)務(wù)系統(tǒng)的配置管理,均使用同一套管理后臺集中配置,不再需要登錄到不同系統(tǒng)中去維護配置數(shù)據(jù)。
3)本發(fā)明中配置內(nèi)容變更及時感知,業(yè)務(wù)系統(tǒng)中的服務(wù)器可以自動感知配置數(shù)據(jù)發(fā)生變化,降低運維成本,配置變更后,所有服務(wù)器節(jié)點迅速生效,不再需要運維人員去逐臺停機處理。
4)另外,本發(fā)明還具備了強大的容災(zāi)策略,在配置中心服務(wù)器、業(yè)務(wù)系統(tǒng)的服務(wù)器上都有容災(zāi)處理,配置中心服務(wù)器會在本地緩存一份配置數(shù)據(jù)到內(nèi)存,防止數(shù)據(jù)庫宕機帶來的影響;業(yè)務(wù)系統(tǒng)的服務(wù)器會寫一份配置快照到本地磁盤文件,防止服務(wù)器全部宕機帶來的影響。
5)本發(fā)明的管理系統(tǒng),簡單易用,無耦合,很容易集成到到業(yè)務(wù)系統(tǒng)中。
附圖說明
圖1是本發(fā)明的方法流程示意圖;
圖2是本發(fā)明的系統(tǒng)結(jié)構(gòu)示意圖;
圖3是圖2中的拓撲結(jié)構(gòu)示意圖。
具體實施方式
現(xiàn)在將參考一些示例實施例描述本公開的原理??梢岳斫?,這些實施例僅出于說明并且?guī)椭绢I(lǐng)域的技術(shù)人員理解和實施例本公開的目的而描述,而非建議對本公開的范圍的任何限制。在此描述的本公開的內(nèi)容可以以下文描述的方式之外的各種方式實施。
如本文中所述,術(shù)語“包括”及其各種變體可以被理解為開放式術(shù)語,其意味著“包括但不限于”。術(shù)語“基于”可以被理解為“至少部分地基于”。術(shù)語“一個實施例”可以被理解為“至少一個實施例”。術(shù)語“另一實施例”可以被理解為“至少一個其它實施例”。
可以理解,在本申請的所述數(shù)據(jù)持久化是指將內(nèi)存中的數(shù)據(jù)模型轉(zhuǎn)換為存儲模型,以及將存儲模型轉(zhuǎn)換為內(nèi)存中的數(shù)據(jù)模型的統(tǒng)稱。數(shù)據(jù)模型包括但不限于任何數(shù)據(jù)結(jié)構(gòu)或?qū)ο竽P?存儲模型可以是關(guān)系模型、XML、二進制流等。保存:把域?qū)ο笥谰帽4娴綌?shù)據(jù)庫。
上述數(shù)據(jù)持久化,包括但不限于:更新:更新數(shù)據(jù)庫中域?qū)ο蟮臓顟B(tài)。刪除:從數(shù)據(jù)庫中刪除一個域?qū)ο?。加載:根據(jù)特定的OID,把一個域?qū)ο髲臄?shù)據(jù)庫加載到內(nèi)存。查詢:根據(jù)特定的查詢條件,把符合查詢條件的一個或多個域?qū)ο髲臄?shù)據(jù)庫加載內(nèi)在存中。
在本申請中,配置中心服務(wù)器、業(yè)務(wù)系統(tǒng)基于服務(wù)器集群架構(gòu)。服務(wù)器集群架構(gòu)是指將很多服務(wù)器集中起來一起進行同一種服務(wù),在客戶端看來就像是只有一個服務(wù)器。集群可以利用多個計算機進行并行計算從而獲得很高的計算速度,也可以用多個計算機做備份,從而使得任何一個機器壞了整個系統(tǒng)還是能正常運行。從群集中的其它節(jié)點和群集服務(wù)管理接口的角度看,當(dāng)形成群集時,群集中的每個節(jié)點可能處于三種不同狀態(tài)中的一種。事件處理器會記錄這些狀態(tài),而事件日志管理器會將這些狀態(tài)復(fù)制到群集的其它節(jié)點。
群集服務(wù)狀態(tài)包括:脫機。此時的節(jié)點不是完全有效的群集成員。該節(jié)點及其群集服務(wù)器可能在運行,也可能未運行。聯(lián)機。此時的節(jié)點是完全有效的群集成員。它遵從群集數(shù)據(jù)庫的更新、對仲裁算法施加自己的影響、維護心跳通訊,并可以擁有和運行資源組。暫停。它只能支持它當(dāng)前已擁有的那些資源組。之所以提供暫停狀態(tài),是為了允許執(zhí)行某些維護。大多數(shù)服務(wù)器群集組件會將聯(lián)機和暫停視為等價的狀態(tài)。
可以理解,在本申請中獲取訂閱的配置項內(nèi)容可以按照如下的方式進行配置:
(1)軟件準(zhǔn)備條件:作為發(fā)布服務(wù)器的第一機器端,比如:SqlServer2005Management Studio+Win Server 2003Enterprise;作為訂閱服務(wù)器的第二機器端,比如:Sqlserver2005Management Studio Express+Win XP()
(2)數(shù)據(jù)庫復(fù)制準(zhǔn)備條件:所有被同步的數(shù)據(jù)表盡量采用主鍵,在SQL Server提示為表自動生成主鍵,發(fā)布服務(wù)器、分發(fā)服務(wù)器和訂閱服務(wù)器采用使用計算機名稱來進行SQLSERVER服務(wù)器的注冊。
(3)SQLSERVER需要以本地計算機的帳號運行啟動代理服務(wù)。
(4)如果非同一網(wǎng)段或者遠程服務(wù)器,或者只能用IP,不能用計算機名的,為對方注冊服務(wù)器別名,將其對應(yīng)關(guān)系加到本地系統(tǒng)網(wǎng)絡(luò)配置文件中
本申請中采用WEBSOCKET,建立服務(wù)端與客戶端的連接,WEBSOCKET是HTML5一種新的協(xié)議。它實現(xiàn)了瀏覽器與服務(wù)器全雙工通信(full-duplex)。一開始的握手需要借助HTTP請求完成。在WEBSOCKET API,客戶端中的瀏覽器和服務(wù)器只需要做一個握手的動作,然后,客戶端中的瀏覽器和服務(wù)器之間就形成了一條快速通道。兩者之間就直接可以數(shù)據(jù)互相傳送。
圖1是本發(fā)明的方法流程示意圖,一種新環(huán)境隔離的配置數(shù)據(jù)管理方法,包括:部署配置中心后臺、配置中心服務(wù)器、業(yè)務(wù)系統(tǒng)以及數(shù)據(jù)庫,還包括步驟為:步驟S100在配置中心后臺,錄入和/或變更所述業(yè)務(wù)系統(tǒng)所使用的初始配置數(shù)據(jù);具體地在配置中心后臺,數(shù)據(jù)配置人員在配置中心后臺的管理系統(tǒng)中,通過管理頁面錄入或者變更業(yè)務(wù)系統(tǒng)所使用的配置數(shù)據(jù),即為初始配置數(shù)據(jù)。
在一些實施例中,管理頁面基于WEB客戶端。
在一些實施例中,錄入包括但不限于:數(shù)據(jù)批量導(dǎo)入、數(shù)據(jù)單獨輸入、數(shù)據(jù)的結(jié)構(gòu)化處理、數(shù)據(jù)的歸一化處理等。
在一些實施例中,變更數(shù)據(jù)包括但不限于:將配置信息存儲在本地磁盤文件,配置項變更時修改本地文件。
作為本實施例中的優(yōu)選,所述業(yè)務(wù)系統(tǒng)中的服務(wù)器還用以,在當(dāng)前服務(wù)器上設(shè)置一個系統(tǒng)環(huán)境變量ENV_CODE,進行服務(wù)器環(huán)境區(qū)分;并根據(jù)當(dāng)前系統(tǒng)環(huán)境變量所屬的環(huán)境,使得所述配置中心服務(wù)器獲取指定環(huán)境的配置數(shù)據(jù)。具體地,所述業(yè)務(wù)系統(tǒng)中的服務(wù)器的環(huán)境區(qū)分是通過在當(dāng)前服務(wù)器上設(shè)置一個系統(tǒng)環(huán)境變量ENV_CODE,來標(biāo)識當(dāng)前應(yīng)用所屬的服務(wù)器環(huán)境,比如開發(fā)環(huán)境、測試環(huán)境、生產(chǎn)環(huán)境。在業(yè)務(wù)系統(tǒng)中的客戶端根據(jù)當(dāng)前服務(wù)器所屬環(huán)境,去配置中心服務(wù)端獲取指定環(huán)境的配置數(shù)據(jù),從而運維人員不需要再為不同環(huán)境打不同的部署包,極大地簡化部署工作。
步驟S101調(diào)用所述配置中心服務(wù)器的遠程接口,將所述初始配置數(shù)據(jù)持久化至所述數(shù)據(jù)庫;將上述初始配置數(shù)據(jù)持久化至所述數(shù)據(jù)庫可以減少訪問數(shù)據(jù)庫數(shù)據(jù)次數(shù),增加應(yīng)用程序執(zhí)行速度;同時代碼重用性高,能夠完成大部分?jǐn)?shù)據(jù)庫操作。另外,松散耦合,使持久化不依賴于底層數(shù)據(jù)庫和上層業(yè)務(wù)邏輯實現(xiàn),更換數(shù)據(jù)庫時只需修改配置文件而不用修改代碼。步驟S102在上述數(shù)據(jù)持久化完成后,所述配置中心后臺請求并接收在所述業(yè)務(wù)系統(tǒng)中的服務(wù)器的節(jié)點,并通知除該服務(wù)器的節(jié)點以外的節(jié)點,同時在所述數(shù)據(jù)庫中同步得到最新配置數(shù)據(jù);步驟S103上述服務(wù)器的節(jié)點在所述業(yè)務(wù)系統(tǒng)初次啟動時,調(diào)用所述配置中心服務(wù)器中的http接口,獲取訂閱的配置項內(nèi)容;步驟S104根據(jù)獲得的配置項內(nèi)容,采用長輪詢的方式定期向所述配置中心服務(wù)器發(fā)請求,檢測訂閱的配置項內(nèi)容是否有變化,作為本實施例中的優(yōu)選所述配置項內(nèi)容可采用spring的bean注入特性,將獲取到的所述配置內(nèi)容注入已經(jīng)注解了的屬性。步驟S105若是,則獲取得到上述最新配置數(shù)據(jù)。在spring中一些注解用于簡化Spring的開發(fā),比如@Repository可用于將數(shù)據(jù)訪問層的類標(biāo)識為Spring Bean。具體只需將該注解標(biāo)注在DAO類上即可。同時,為了讓Spring能夠掃描類路徑中的類并識別出@Repository注解,需要在XML配置文件中啟用Bean的自動掃描功能,這可以通過<context:component-scan/>實現(xiàn)。該注解的作用不只是將類識別為Bean,同時它還能將所標(biāo)注的類中拋出的數(shù)據(jù)訪問異常封裝為Spring的數(shù)據(jù)訪問異常類型。Spring本身提供了一個豐富的并且是與具體的數(shù)據(jù)訪問技術(shù)無關(guān)的數(shù)據(jù)訪問異常結(jié)構(gòu),用于封裝不同的持久層框架拋出的異常,使得異常獨立于底層的框架。
作為本實施例中的優(yōu)選,所述數(shù)據(jù)庫包括多個數(shù)據(jù)庫集群節(jié)點,若所述數(shù)據(jù)庫集群節(jié)點全部宕機時,則所述配置中心服務(wù)器直接從內(nèi)存中提取所述配置項內(nèi)容給業(yè)務(wù)系統(tǒng)中的服務(wù)器;所述配置中心后臺包括多個后臺集群節(jié)點,若所述配置中心后臺的一部分機器宕機時,則所述業(yè)務(wù)系統(tǒng)中的服務(wù)器正常獲取配置項內(nèi)容;若所述配置中心后臺的機器全部宕機,且所述業(yè)務(wù)系統(tǒng)中的服務(wù)器的節(jié)點全部不可用時,則所述業(yè)務(wù)系統(tǒng)中的服務(wù)器從本地磁盤上的最近一次配置信息的快照文件中讀取配置項內(nèi)容。上述數(shù)據(jù)庫采用集群系統(tǒng)可解決所有的服務(wù)器硬件故障,當(dāng)某一臺服務(wù)器出現(xiàn)任何故障,如:硬盤、內(nèi)存、CPU、主板、I/O板以及電源故障,運行在這臺服務(wù)器上的應(yīng)用就會切換到其它的服務(wù)器上。更進一步,集群系統(tǒng)可解決軟件系統(tǒng)問題,在計算機系統(tǒng)中,用戶所使用的是應(yīng)用程序和數(shù)據(jù),而應(yīng)用系統(tǒng)運行在操作系統(tǒng)之上,操作系統(tǒng)又運行在服務(wù)器上。只要應(yīng)用系統(tǒng)、操作系統(tǒng)、服務(wù)器三者中的任何一個出現(xiàn)故障,系統(tǒng)實際上就停止了向客戶端提供服務(wù),而集群的最大優(yōu)勢在于對故障服務(wù)器的監(jiān)控是基于應(yīng)用的,也就是說,只要服務(wù)器的應(yīng)用停止運行,其它的相關(guān)服務(wù)器就會接管這個應(yīng)用,而不必理會應(yīng)用停止運行的原因是什么。此外,數(shù)據(jù)庫采用集群系統(tǒng)可以解決人為失誤造成的應(yīng)用系統(tǒng)停止工作的情況,例如,當(dāng)系統(tǒng)管理員對某臺服務(wù)器操作不當(dāng)導(dǎo)致該服務(wù)器停機,因此運行在這臺服務(wù)器上的應(yīng)用系統(tǒng)也就停止了運行。由于集群是對應(yīng)用進行監(jiān)控,因此其它的相關(guān)服務(wù)器就會接管這個應(yīng)用。
作為本實施例中的優(yōu)選,方法還包括根據(jù)獲得的配置項內(nèi)容,采用WEBSOCKET定期向所述配置中心服務(wù)器發(fā)請求,檢測訂閱的配置項內(nèi)容是否有變化,若是,則獲取得到上述最新配置數(shù)據(jù)采用方式感知配置項內(nèi)容發(fā)生變化。在此WebSocket協(xié)議中,互相溝通的Header是很小,節(jié)約系統(tǒng)資源;另外集群服務(wù)器中的推送,服務(wù)器不再被動的接收到瀏覽器的request之后才返回數(shù)據(jù),而是在有新數(shù)據(jù)時就主動推送給客戶端的瀏覽器。
圖2是本發(fā)明的系統(tǒng)結(jié)構(gòu)示意圖;一種新環(huán)境隔離的配置數(shù)據(jù)管理系統(tǒng),包括:集群化的配置中心后臺1、集群化的配置中心服務(wù)器2、集群化的業(yè)務(wù)系統(tǒng)4以及集群化的數(shù)據(jù)庫3,配置管理員在所述配置中心后臺,錄入和/或變更所述業(yè)務(wù)系統(tǒng)所使用的初始配置數(shù)據(jù);調(diào)用所述配置中心服務(wù)器中上節(jié)點的遠程接口,將所述初始配置數(shù)據(jù)持久化至所述數(shù)據(jù)庫;以及在上述數(shù)據(jù)持久化完成后,所述配置中心后臺請求并接收在所述業(yè)務(wù)系統(tǒng)中的集群服務(wù)器的任一節(jié)點,并通知除該節(jié)點以外的節(jié)點,同時在所述數(shù)據(jù)庫中同步得到最新配置數(shù)據(jù);上述集群服務(wù)器的任一節(jié)點在所述業(yè)務(wù)系統(tǒng)初次啟動時,調(diào)用所述配置中心服務(wù)器中的http接口,獲取訂閱的配置項內(nèi)容;根據(jù)獲得的配置項內(nèi)容,采用長輪詢的方式定期向所述配置中心服務(wù)器發(fā)請求,檢測訂閱的配置項內(nèi)容是否有變化,若是,則獲取得到上述最新配置數(shù)據(jù)。
上述集群化的業(yè)務(wù)系統(tǒng)4以及集群化的數(shù)據(jù)庫3采用集群化的服務(wù)器,服務(wù)器集群架構(gòu)是指將很多服務(wù)器集中起來一起進行同一種服務(wù),在客戶端看來就像是只有一個服務(wù)器。集群可以利用多個計算機進行并行計算從而獲得很高的計算速度,也可以用多個計算機做備份,從而使得任何一個機器壞了整個系統(tǒng)還是能正常運行。從群集中的其它節(jié)點和群集服務(wù)管理接口的角度看,當(dāng)形成群集時,群集中的每個節(jié)點可能處于三種不同狀態(tài)中的一種。事件處理器會記錄這些狀態(tài),而事件日志管理器會將這些狀態(tài)復(fù)制到群集的其它節(jié)點。
作為本實施例中的優(yōu)選,上述所述集群化的配置中心后臺1還被配置為:在測試環(huán)境、開發(fā)環(huán)境、集成測試環(huán)境、線上環(huán)境、DEMO環(huán)境中進行環(huán)境和/或業(yè)務(wù)系統(tǒng)的配置。
作為本實施例中的優(yōu)選,所述業(yè)務(wù)系統(tǒng)中的服務(wù)器還被配置為,在當(dāng)前服務(wù)器上設(shè)置一個系統(tǒng)環(huán)境變量ENV_CODE,進行服務(wù)器環(huán)境區(qū)分;并根據(jù)當(dāng)前系統(tǒng)環(huán)境變量所屬的環(huán)境,使得所述配置中心服務(wù)器獲取指定環(huán)境的配置數(shù)據(jù)。服務(wù)器環(huán)境區(qū)分是通過在當(dāng)前服務(wù)器上設(shè)置一個系統(tǒng)環(huán)境變量ENV_CODE,來標(biāo)識當(dāng)前應(yīng)用所屬的服務(wù)器環(huán)境,如開發(fā)環(huán)境、測試環(huán)境、生產(chǎn)環(huán)境??蛻舳烁鶕?jù)當(dāng)前服務(wù)器所屬環(huán)境,去配置中心服務(wù)端獲取指定環(huán)境的配置數(shù)據(jù),運維人員不需要再為不同環(huán)境打不同的部署包,簡化部署工作。
作為本實施例中的優(yōu)選,集群化的配置中心服務(wù)器還被配置為:根據(jù)獲得的配置項內(nèi)容,采用WEBSOCKET定期向所述配置中心服務(wù)器發(fā)請求,檢測訂閱的配置項內(nèi)容是否有變化,若是,則獲取得到上述最新配置數(shù)據(jù)采用方式感知配置項內(nèi)容發(fā)生變化。
作為本實施例中的優(yōu)選,所述配置中心被配置為具備容災(zāi)處理機制:通過在本地緩存一份配置數(shù)據(jù)到內(nèi)存,防止所述集群化的數(shù)據(jù)庫宕機;集群化的業(yè)務(wù)系統(tǒng)上的服務(wù)器根據(jù)儲存至本地磁盤文件的配置快照,防止業(yè)務(wù)系統(tǒng)上的服務(wù)器的全部宕機。系統(tǒng)具備強大的容災(zāi)策略,集群化的配置中心后臺在服務(wù)端和客戶端都有容災(zāi)處理,會服務(wù)端會在本地緩存一份配置數(shù)據(jù)到內(nèi)存,防止數(shù)據(jù)庫宕機帶來的影響;客戶端會寫一份配置快照到本地磁盤文件,防止服務(wù)端全部宕機帶來的影響。如果數(shù)據(jù)庫集群節(jié)點全部宕機時,配置中心服務(wù)端會直接從內(nèi)存中取配置信息給客戶端,所以也不會影響客戶端的數(shù)據(jù)獲取。果配置中心服務(wù)端某幾臺機器宕機,這時由于配置中心服務(wù)端為集群環(huán)境,所以也不會影響到客戶端的配置獲取。如果配置中心服務(wù)端節(jié)點全部宕機,這時客戶端容災(zāi)會派上用場,客戶端在服務(wù)端節(jié)點全部不可用時,會從本地磁盤上的最近一次配置快照文件中讀取作配置內(nèi)容,所以不會影響客戶端應(yīng)用啟動。
圖3是圖2中的拓撲結(jié)構(gòu)示意圖,集群化的配置中心后臺(即管理后臺集群)、集群化的配置中心服務(wù)器(即配置中心服務(wù)集群)、集群化的業(yè)務(wù)系統(tǒng)(即各個業(yè)務(wù)系統(tǒng))以及集群化的數(shù)據(jù)庫(即數(shù)據(jù)庫集群),還包括步驟如下:
配置管理員在配置中心后臺進行維護配置,維護配置包括但不限于:錄入和/或變更所述業(yè)務(wù)系統(tǒng)所使用的初始配置數(shù)據(jù);在集群化的配置中心服務(wù)器中包括多個配置服務(wù)節(jié)點服務(wù)器,節(jié)點服務(wù)器之間相互進行數(shù)據(jù)同步通知。所述集群化的配置中心后臺與集群化的配置中心服務(wù)器連接,進行遠程方法調(diào)用:通過調(diào)用所述配置中心服務(wù)器的遠程接口,將所述初始配置數(shù)據(jù)持久化至所述數(shù)據(jù)庫;在上述數(shù)據(jù)持久化完成后,所述配置中心后臺請求并接收在所述業(yè)務(wù)系統(tǒng)中的服務(wù)器的節(jié)點,并通知除該服務(wù)器的節(jié)點以外的節(jié)點,同時在所述數(shù)據(jù)庫中同步得到最新配置數(shù)據(jù);上述服務(wù)器的節(jié)點在所述業(yè)務(wù)系統(tǒng)初次啟動(基于HTTP協(xié)議的首次握手)時,調(diào)用所述配置中心服務(wù)器中的http接口,獲取訂閱的配置項內(nèi)容;根據(jù)獲得的配置項內(nèi)容,采用長輪詢的方式定期向所述配置中心服務(wù)器發(fā)請求,檢測訂閱的配置項內(nèi)容是否有變化,若是,則獲取得到上述最新配置數(shù)據(jù)。所述集群化的數(shù)據(jù)庫至少包括一主庫以及一備庫。具體地,所述數(shù)據(jù)庫包括多個數(shù)據(jù)庫集群節(jié)點,若所述數(shù)據(jù)庫集群節(jié)點全部宕機時,則所述配置中心服務(wù)器直接從內(nèi)存中提取所述配置項內(nèi)容給業(yè)務(wù)系統(tǒng)中的服務(wù)器;所述配置中心后臺包括多個后臺集群節(jié)點,若所述配置中心后臺的一部分機器宕機時,則所述業(yè)務(wù)系統(tǒng)中的服務(wù)器正常獲取配置項內(nèi)容;若所述配置中心后臺的機器全部宕機,且所述業(yè)務(wù)系統(tǒng)中的服務(wù)器的節(jié)點全部不可用時,則所述業(yè)務(wù)系統(tǒng)中的服務(wù)器從本地磁盤上的最近一次配置信息的快照文件中讀取配置項內(nèi)容。
由于在配置中心后臺,錄入和/或變更所述業(yè)務(wù)系統(tǒng)所使用的初始配置數(shù)據(jù);調(diào)用所述配置中心服務(wù)器的遠程接口,將所述初始配置數(shù)據(jù)持久化至所述數(shù)據(jù)庫;在上述數(shù)據(jù)持久化完成后,所述配置中心后臺請求并接收在所述業(yè)務(wù)系統(tǒng)中的服務(wù)器的節(jié)點,并通知除該服務(wù)器的節(jié)點以外的節(jié)點,同時在所述數(shù)據(jù)庫中同步得到最新配置數(shù)據(jù);上述服務(wù)器的節(jié)點在所述業(yè)務(wù)系統(tǒng)初次啟動時,調(diào)用所述配置中心服務(wù)器中的http接口,獲取訂閱的配置項內(nèi)容;根據(jù)獲得的配置項內(nèi)容,采用長輪詢的方式定期向所述配置中心服務(wù)器發(fā)請求,檢測訂閱的配置項內(nèi)容是否有變化,若是,則獲取得到上述最新配置數(shù)據(jù)。本發(fā)明的方法基于Http協(xié)議進行系統(tǒng)交互,并利用MYSQL數(shù)據(jù)庫對配置內(nèi)容進行存儲,在分布式集群形成多節(jié)點部署。
雖然本公開以具體結(jié)構(gòu)特征和/或方法動作來描述,但是可以理解在所附權(quán)利要求書中限定的本公開并不必然限于上述具體特征或動作。而是,上述具體特征和動作僅公開為實施權(quán)利要求的示例形式。