两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

節(jié)點連接方法及分布式計算系統(tǒng)與流程

文檔序號:12135368閱讀:428來源:國知局
節(jié)點連接方法及分布式計算系統(tǒng)與流程

本發(fā)明實施例涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種節(jié)點連接方法及分布式計算系統(tǒng)。



背景技術(shù):

內(nèi)存數(shù)據(jù)庫Redis(鍵值數(shù)據(jù)庫)是支持主備的,并且官方提供了redis-sentinel(Redis實例的監(jiān)控管理、通知和實例失效備援服務(wù))進(jìn)行主備監(jiān)控及主備切換,但是因為主設(shè)備的轉(zhuǎn)移無法使得Redis客戶端始終連接同一個ip地址。目前,已知的方案有是采用haproxy(反向代理軟件)+keepalived(集群管理中保證集群高可用的服務(wù)軟件)+sentinel結(jié)合的方式,keepalived提供vip(虛擬ip)供客戶端連接并且管理haproxy failover(故障切換),haproxy判斷redis是否為主設(shè)備并且直連主設(shè)備,sentinel對redis進(jìn)行主備監(jiān)控及切換。

現(xiàn)有的加速方案存在兩個弊端:

1、該方案系統(tǒng)過度復(fù)雜。雖然一組sentinel跟haproxy可以對多個redis的主備進(jìn)行管理,但是一組keepalived只有一個vip用來映射一組Redis主備,如果需要管理多個redis主備,就需要多組keepalived。而且如果僅需要對一個redis主備進(jìn)行管理的話,系統(tǒng)成本太高。

2、該方案必然導(dǎo)致性能問題,因為所有連接都經(jīng)過haproxy轉(zhuǎn)發(fā),對于高速的Redis,相比HAProxy的長的等待時間來說確實會產(chǎn)生額外的負(fù)擔(dān)。



技術(shù)實現(xiàn)要素:

本發(fā)明要解決的技術(shù)問題是為了克服現(xiàn)有技術(shù)中分布式計算系統(tǒng)主備管理成本高且效率低下的缺陷,提供一種降低系統(tǒng)管理成本,提高系統(tǒng)內(nèi)客戶端工作效率以及各服務(wù)器主備變更速度的節(jié)點連接方法及分布式計算系統(tǒng)。

本發(fā)明是通過下述技術(shù)方案來解決上述技術(shù)問題:

一種節(jié)點連接方法,用于分布式計算系統(tǒng),所述分布式計算系統(tǒng)包括若干客戶端以及服務(wù)端,其特點在于,所述服務(wù)端包括映射表,所述節(jié)點連接方法包括:

在所述映射表中記錄節(jié)點信息以及節(jié)點間的映射關(guān)系;

客戶端根據(jù)節(jié)點信息訪問分布式計算系統(tǒng)的服務(wù)側(cè);

獲取所述節(jié)點信息在所述映射表中對應(yīng)的目標(biāo)節(jié)點;

所述客戶端連接所述目標(biāo)節(jié)點。

本申請利用服務(wù)端的映射表存儲映射關(guān)系,節(jié)點信息中包括客戶端需要訪問的節(jié)點,所述節(jié)點可以為真實節(jié)點也可以為虛擬節(jié)點,客戶端根據(jù)節(jié)點信息在映射表中查找對應(yīng)目標(biāo)節(jié)點,所述目標(biāo)節(jié)點為真實節(jié)點,也就是說,當(dāng)節(jié)點信息記錄的節(jié)點是虛擬節(jié)點時,客戶端需要根據(jù)映射關(guān)系中虛擬節(jié)點對應(yīng)的真實節(jié)點來訪問真實節(jié)點。所述服務(wù)端可以為第三端,獨立于計算存儲用的服務(wù)器。

上述分布式計算系統(tǒng)實現(xiàn)了RedisProxy(Redis代理)的概念,利用虛擬節(jié)點代理真實節(jié)點,一個Redis集群有多個redis節(jié)點,其中一個master多個slave,如果把一個Redis集群當(dāng)做是一個虛擬的Redis節(jié)點,這樣RedisClient連接redis server就無需考慮所連接的是集群還是單實例,這樣對RedisClient是友好的。

較佳地,所述節(jié)點連接方法包括:

判斷所述分布式計算系統(tǒng)中是否存在主備變更,若是則將變更后節(jié)點間的映射關(guān)系更新至所述映射表中;

通過最新映射表獲取所述節(jié)點信息對應(yīng)的所述目標(biāo)節(jié)點。

本申請中系統(tǒng)可以監(jiān)聽主備的變更,當(dāng)存在機器故障或添加新機器時,系統(tǒng)能夠快速的做出反應(yīng),提高系統(tǒng)內(nèi)客戶端工作效率以及各服務(wù)器主備變更速度。

較佳地,所述節(jié)點包括真實節(jié)點和虛擬節(jié)點,所述主備變更包括分布式計算系統(tǒng)新增主備和主備切換,所述判斷所述分布式計算系統(tǒng)中是否存在主備變更包括:

判斷主備變更是否為主備切換,若是則在映射表中將虛擬節(jié)點映射的主節(jié)點切換為之前的備節(jié)點;或,

判斷主備變更是否為新增主備,若是則在映射表中添加新增主備的節(jié)點映射關(guān)系;

其中,主節(jié)點、備節(jié)點均為真實實例。

本申請中,主備切換是指當(dāng)主機出故障宕機后,備用機接替主機的工作來使系統(tǒng)能夠繼續(xù)提供正常的服務(wù),當(dāng)出現(xiàn)這種情況是映射表中的映射關(guān)系發(fā)生改變,映射表需要將虛擬節(jié)點對應(yīng)的出問題的主節(jié)點替換為備節(jié)點,客戶端監(jiān)聽映射表發(fā)生變化后,連接更新的備節(jié)點。

新增主備是指在原有的系統(tǒng)中添加新的服務(wù)器,當(dāng)出現(xiàn)這種情況時可以將虛擬節(jié)點分配給新增服務(wù)器中的真實節(jié)點,映射表中的映射關(guān)系也會發(fā)生改變,客戶端監(jiān)聽映射表發(fā)生變化后,連接更新的備節(jié)點。

對主備的監(jiān)聽可以通過sentinel實現(xiàn),當(dāng)主備變更后映射表發(fā)生改變,客戶端可以判斷映射表是否發(fā)生改變,當(dāng)判斷映射關(guān)系變動后連接最新的正確的真實節(jié)點。

較佳地,所述獲取所述節(jié)點信息在所述映射表中對應(yīng)的真實節(jié)點包括:

客戶端訪問映射表;

客戶端根據(jù)所述節(jié)點信息判斷待訪問節(jié)點是否為虛擬節(jié)點,若是則在所述映射表中獲取待訪問節(jié)點對應(yīng)的真實節(jié)點并訪問,若否則直接訪問所述待訪問節(jié)點。

較佳地,所述節(jié)點連接方法還包括:

客戶端訪問真實節(jié)點后,通過監(jiān)聽所述映射表得到訪問的真實節(jié)點是否有變更,若是則重連變更后的真實節(jié)點。

較佳地,所述節(jié)點信息包括主機名及端口號的信息,所述客戶端根據(jù)主機名及端口名的命名規(guī)則識別待訪問節(jié)點。

節(jié)點名可以為主機名跟端口的結(jié)合,例如host001:1,host001:2,host002:1??梢约s定規(guī)則:host01為虛擬,host001為真實(即數(shù)字為兩位數(shù)的為虛擬的redis主機名),主節(jié)點為host001:1,備節(jié)點為host002:1。

較佳地,所述分布式系統(tǒng)包括用于監(jiān)控主備變更的sentinel端,所述映射表記錄于zookeeper,所述節(jié)點連接方法包括:

所述sentinel端判斷是否發(fā)生主備變更,若是則通過通知腳本將變更后的映射關(guān)系寫入zookeeper。

本發(fā)明還提供一種分布式計算系統(tǒng),所述分布式計算系統(tǒng)包括若干客戶端以及服務(wù)端,其特點在于,所述服務(wù)端包括映射表,所述服務(wù)端還包括記錄模塊,所述客戶端包括訪問模塊、獲取模塊及連接模塊,

所述記錄模塊用于在所述映射表中記錄節(jié)點信息以及節(jié)點間的映射關(guān)系;

所述訪問模塊用于根據(jù)節(jié)點信息訪問分布式計算系統(tǒng)的服務(wù)側(cè);

所述獲取模塊用于獲取所述節(jié)點信息在所述映射表中對應(yīng)的目標(biāo)節(jié)點;

連接模塊用于連接所述目標(biāo)節(jié)點。

較佳地,所述服務(wù)端還包括判斷模塊及更新模塊,

所述判斷模塊用于判斷所述分布式計算系統(tǒng)中是否存在主備變更,若是則調(diào)用所述更新模塊;

所述更新模塊用于將變更后節(jié)點間的映射關(guān)系更新至所述映射表中;

所述獲取模塊用于通過最新映射表獲取所述節(jié)點信息對應(yīng)的所述目標(biāo)節(jié)點。

較佳地,所述節(jié)點包括真實節(jié)點和虛擬節(jié)點,所述主備變更包括分布式計算系統(tǒng)新增主備和主備切換,所述服務(wù)端還包括處理模塊,

所述判斷模塊還用于判斷主備變更是否為主備切換,若是則調(diào)用所述處理模塊;

所述處理模塊用于在映射表中將虛擬節(jié)點映射的節(jié)點切換為之前的備節(jié)點;

或,

所述判斷模塊還用于判斷主備變更是否為新增主備,若是則調(diào)用所述處理模塊;

所述處理模塊用于在映射表中添加新增主備的節(jié)點映射關(guān)系;

其中,主節(jié)點、備節(jié)點均為真實實例。

較佳地,所述客戶端包括識別模塊,

所述識別模塊用于在客戶端訪問映射表后,根據(jù)所述節(jié)點信息判斷待訪問的節(jié)點是否為虛擬節(jié)點,若是則調(diào)用所述獲取模塊在所述映射表中獲取待訪問節(jié)點對應(yīng)的真實節(jié)點并訪問,若否則調(diào)用所述連接模塊直接訪問所述待訪問節(jié)點。

較佳地,所述客戶端包括監(jiān)聽模塊,

所述監(jiān)聽模塊用于在客戶端訪問真實節(jié)點后,通過監(jiān)聽所述映射表判斷真實節(jié)點是否有變更,若是則重連變更后的真實節(jié)點。

本發(fā)明的積極進(jìn)步效果在于:本發(fā)明能夠簡化分布式計算系統(tǒng)中redis客戶端到redis服務(wù)端的連接方法,降低系統(tǒng)部署成本,提高redis客戶端與redis服務(wù)端連接的性能。

具體地,本申請的系統(tǒng)及方法無需使用現(xiàn)有常規(guī)的keepalived和haproxy復(fù)雜系統(tǒng),只采用sentinel和zookeeper的方式,sentinel進(jìn)行同樣主備切換通過sentinel的通知腳本將master信息寫入zookeeper之中,不僅能夠降低系統(tǒng)使用成本,還可以提高效率。

附圖說明

為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作一簡單地介紹,顯而易見地,下面描述中的附圖為本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員而言,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。

圖1為實施例1的分布式計算系統(tǒng)的局部結(jié)構(gòu)示意圖。

圖2為實施例1的節(jié)點連接方法的流程圖。

圖3為實施例3的節(jié)點連接方法的流程圖。

具體實施方式

為使本發(fā)明實施例的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例為本發(fā)明一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。

實施例1

本實施例提供一種分布式計算系統(tǒng),所述分布式計算系統(tǒng)包括若干客戶端以及服務(wù)端,所述服務(wù)端包括一個映射表,所述映射表記錄于服務(wù)端的zookeeper。所述服務(wù)端還包括記錄模塊,所述客戶端均包括訪問模塊、獲取模塊、識別模塊、監(jiān)聽模塊及連接模塊。

所述記錄模塊用于在所述映射表中記錄節(jié)點信息以及節(jié)點間的映射關(guān)系。

所述訪問模塊用于根據(jù)節(jié)點信息訪問分布式計算系統(tǒng)的服務(wù)側(cè),所述節(jié)點信息記錄的節(jié)點可能為虛擬節(jié)點也可能為真實節(jié)點。

所述識別模塊用于在客戶端訪問映射表后,根據(jù)所述節(jié)點信息判斷待訪問節(jié)點是否為虛擬節(jié)點,若是則調(diào)用所述獲取模塊在所述映射表中獲取待訪問節(jié)點對應(yīng)的真實節(jié)點,若否則調(diào)用所述連接模塊直接訪問所述待訪問節(jié)點。

所述連接模塊用于訪問真實節(jié)點,當(dāng)節(jié)點信息中的節(jié)點為虛擬節(jié)點時,根據(jù)映射表獲取真實節(jié)點,即目標(biāo)節(jié)點。當(dāng)節(jié)點信息中的節(jié)點為真實節(jié)點時,連接模塊直接連接目標(biāo)節(jié)點。

所述節(jié)點信息包括主機名及端口號的信息,所述客戶端根據(jù)主機名及端口名的命名規(guī)則識別待訪問節(jié)點。

節(jié)點信息中的節(jié)點名可以為主機名跟端口的結(jié)合,例如host001:1,host001:2,host002:1??梢约s定規(guī)則:host01為虛擬,host001為真實(即數(shù)字為兩位數(shù)的為虛擬的redis主機名),主節(jié)點為host001:1,備節(jié)點為host002:1。

通過節(jié)點名可以判斷出節(jié)點信息中包括的節(jié)點是真實節(jié)點還是虛擬節(jié)點。

參見圖1,本實施例中,服務(wù)端具有sentinel功能,即服務(wù)端包括用于監(jiān)控主備變更的sentinel端,所述sentinel端包括判斷模塊及處理模塊。

所述判斷模塊用于判斷所述分布式計算系統(tǒng)中是否存在主備切換,若是則調(diào)用所述處理模塊。

所述處理模塊用于在映射表中將虛擬節(jié)點映射的節(jié)點切換為之前的備節(jié)點,也就主機宕掉了后,虛擬節(jié)點需要與備機中節(jié)點對應(yīng)上。

其中,主節(jié)點、備節(jié)點均為真實實例。

sentinel端通過通知腳本將對應(yīng)關(guān)系寫入zookeeper中。

所述監(jiān)聽模塊用于在客戶端訪問真實節(jié)點后,通過監(jiān)聽zookeeper的映射表判斷真實節(jié)點是否有變更,若是則重連變更后的真實節(jié)點。

利用上述分布式計算系統(tǒng),本實施例還提供一種節(jié)點連接方法,所述節(jié)點連接方法包括:

步驟100、在所述映射表中記錄節(jié)點信息以及節(jié)點間的映射關(guān)系。

所述節(jié)點信息包括主機名及端口號的信息,所述客戶端根據(jù)主機名及端口名的命名規(guī)則識別待訪問節(jié)點。

節(jié)點信息中的節(jié)點名可以為主機名跟端口的結(jié)合,例如host001:1,host001:2,host002:1??梢约s定規(guī)則:host01為虛擬,host001為真實(即數(shù)字為兩位數(shù)的為虛擬的redis主機名),主節(jié)點為host001:1,備節(jié)點為host002:1。

步驟101、客戶端根據(jù)節(jié)點信息訪問分布式計算系統(tǒng)的服務(wù)側(cè)。

步驟102、獲取所述節(jié)點信息在所述映射表中對應(yīng)的目標(biāo)節(jié)點。

步驟103、所述客戶端連接所述目標(biāo)節(jié)點。

客戶端根據(jù)節(jié)點信息能夠判斷訪問的節(jié)點是真實節(jié)點還是虛擬節(jié)點,客戶端訪問映射表,并若是虛擬節(jié)點則在所述映射表中獲取待訪問節(jié)點對應(yīng)的真實節(jié)點并訪問,若是真實節(jié)點則直接訪問所述待訪問節(jié)點。

步驟104、客戶端監(jiān)聽服務(wù)側(cè)Zookeeper判斷是否存在主備變更,若是則執(zhí)行步驟105,若否則再次執(zhí)行步驟104。

步驟105、客戶端斷開當(dāng)前目標(biāo)節(jié)點的連接,返回步驟102。

所述主備變更包括主備切換和新增主備。當(dāng)主備切換時,本方法在映射表中將虛擬節(jié)點映射的節(jié)點切換為之前的備節(jié)點,也就是主機宕掉了后,虛擬節(jié)點需要與備機中節(jié)點對應(yīng)上。

當(dāng)新增主備時,本方法在映射表中添加新增主備的節(jié)點映射關(guān)系,客戶端可以按照節(jié)點信息及新的映射表連接更新后的節(jié)點。

所述客戶端通過監(jiān)聽所述映射表得到訪問的真實節(jié)點是否有變更,若是則重連變更后的真實節(jié)點。

本實施例的節(jié)點連接方法及分布式計算系統(tǒng)能夠簡化分布式計算系統(tǒng)的系統(tǒng)結(jié)構(gòu),降低系統(tǒng)管理成本,提高系統(tǒng)內(nèi)客戶端工作效率以及各服務(wù)器主備變更速度。

實施例2

本實施例與實施例1基本相同,不同之處僅在于:

所述判斷模塊用于判斷所述分布式計算系統(tǒng)中是否存在新增主備,若是則調(diào)用所述處理模塊;

所述處理模塊用于在映射表中添加新增主備的節(jié)點映射關(guān)系。

利用上述分布式計算系統(tǒng),本實施例的節(jié)點連接方法與實施例1的不同之處在于:

判斷主備變更是否為新增主備,若是則在映射表中添加新增主備的節(jié)點映射關(guān)系;

其中,主節(jié)點、備節(jié)點均為真實實例。

本實施例的節(jié)點連接方法及分布式計算系統(tǒng)能夠簡化分布式計算系統(tǒng)的系統(tǒng)結(jié)構(gòu),降低系統(tǒng)管理成本,提高系統(tǒng)內(nèi)客戶端工作效率以及各服務(wù)器主備變更速度。

實施例3

參見圖3,本實施例與實施例1基本相同,不同之處僅在于:

步驟103后包括:

步驟200、sentinel監(jiān)聽所述分布式計算系統(tǒng)中是否存在主備變更,若是則執(zhí)行步驟201,若否則再次執(zhí)行步驟200。

步驟201、根據(jù)變更信息生成通知腳本。

步驟202、執(zhí)行所述通知腳本,將變更信息寫入zookeeper中,再次執(zhí)行步驟200。

本實施例在實施例1上進(jìn)一步優(yōu)化,當(dāng)出現(xiàn)主備變更后客戶端斷開當(dāng)前連接然后根據(jù)映射表連接最新的節(jié)點,另一方面服務(wù)側(cè)將主備變更的信息更新,變更信息寫入zookeeper。

以上所描述的裝置實施例僅僅是示意性的,其中所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部模塊來實現(xiàn)本實施例方案的目的。本領(lǐng)域普通技術(shù)人員在不付出創(chuàng)造性的勞動的情況下,即可以理解并實施。

通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到各實施方式可借助軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件。基于這樣的理解,上述技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品可以存儲在計算機可讀存儲介質(zhì)中,如ROM/RAM、磁碟、光盤等,包括若干指令用以使得一臺計算機設(shè)備(可以是個人計算機,服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行各個實施例或者實施例的某些部分所述的方法。

最后應(yīng)說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
习水县| 德保县| 丹凤县| 长岛县| 逊克县| 工布江达县| 绥宁县| 花莲市| 彰武县| 马山县| 巴林右旗| 来宾市| 灵寿县| 来凤县| 金昌市| 白山市| 长沙县| 乃东县| 鄂温| 曲阳县| 霸州市| 左云县| 桦川县| 湖北省| 成武县| 东安县| 赫章县| 元谋县| 乐都县| 威宁| 嘉峪关市| 都兰县| 合作市| 玛多县| 昆明市| 邓州市| 开化县| 乐陵市| 寿阳县| 喀什市| 平凉市|