欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種數(shù)據(jù)訪問(wèn)方法及系統(tǒng)與流程

文檔序號(hào):11156837閱讀:309來(lái)源:國(guó)知局
一種數(shù)據(jù)訪問(wèn)方法及系統(tǒng)與制造工藝

本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,尤其涉及一種數(shù)據(jù)訪問(wèn)方法及系統(tǒng)。



背景技術(shù):

隨著互聯(lián)網(wǎng)和云計(jì)算的快速發(fā)展,各行各業(yè)的業(yè)務(wù)需求復(fù)雜膨脹且用戶(hù)量急劇增長(zhǎng),如今的大型網(wǎng)站,面對(duì)這樣的業(yè)務(wù)量和用戶(hù)量,往往是通過(guò)使用高性能的服務(wù)器、高性能的數(shù)據(jù)庫(kù)、高效率的編程語(yǔ)言、高性能的Web容器等方式來(lái)解決這種需求。但如果服務(wù)器出現(xiàn)宕機(jī),一般會(huì)影響大范圍的用戶(hù),特別是當(dāng)大量用戶(hù)同時(shí)訪問(wèn)服務(wù)器的情況下,單純的在網(wǎng)絡(luò)中加硬件等方式是不能保證服務(wù)在高并發(fā)場(chǎng)景的高可用的。

現(xiàn)有的網(wǎng)絡(luò)架構(gòu),比如,12306火車(chē)票訂票網(wǎng)站的web服務(wù)架構(gòu),當(dāng)某個(gè)Web服務(wù)器出現(xiàn)宕機(jī)時(shí),該Web服務(wù)器將不能處理自己負(fù)責(zé)的訪問(wèn)請(qǐng)求,導(dǎo)致發(fā)出這些請(qǐng)求的客戶(hù)端不能正常接收所請(qǐng)求的訪問(wèn)數(shù)據(jù),從而降低了數(shù)據(jù)訪問(wèn)的成功率,進(jìn)而降低了用戶(hù)的網(wǎng)絡(luò)體驗(yàn)。



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

有鑒于此,本發(fā)明實(shí)施例的主要目的在于提供一種數(shù)據(jù)訪問(wèn)方法及系統(tǒng),能夠提高數(shù)據(jù)訪問(wèn)的成功率。

本發(fā)明提供了一種數(shù)據(jù)訪問(wèn)方法,所述方法應(yīng)用于一種數(shù)據(jù)訪問(wèn)系統(tǒng),所述系統(tǒng)包括至少一個(gè)客戶(hù)端、第一負(fù)載服務(wù)器、前端服務(wù)器集群和后端服務(wù)器集群;所述方法包括:

所述第一負(fù)載服務(wù)器在接收到所述客戶(hù)端發(fā)送的訪問(wèn)請(qǐng)求后,采樣第一負(fù)載均衡算法為所述客戶(hù)端分配一目標(biāo)前端服務(wù)器,并向所述客戶(hù)端發(fā)送攜帶所述目標(biāo)前端服務(wù)器信息的分配消息,其中,所述目標(biāo)前端服務(wù)器為所述前端服務(wù)器集群中的一臺(tái)處于正常工作狀態(tài)的服務(wù)器;

所述客戶(hù)端在接收到所述分配消息后,向所述目標(biāo)前端服務(wù)器發(fā)送業(yè)務(wù)請(qǐng)求;

所述目標(biāo)前端服務(wù)器在接收到所述業(yè)務(wù)請(qǐng)求后,獲取為所述業(yè)務(wù)請(qǐng)求分配的目標(biāo)后端服務(wù)器的信息,并向所述目標(biāo)后端服務(wù)器發(fā)送所述業(yè)務(wù)請(qǐng)求,其中,所述目標(biāo)后端服務(wù)器為所述后端服務(wù)器集群中的一臺(tái)服務(wù)器;

所述目標(biāo)后端服務(wù)器在接收到所述業(yè)務(wù)請(qǐng)求后,獲取所述業(yè)務(wù)請(qǐng)求所請(qǐng)求的目標(biāo)數(shù)據(jù),并通過(guò)所述目標(biāo)前端服務(wù)器向所述客戶(hù)端返回所述目標(biāo)數(shù)據(jù)。

可選的,所述系統(tǒng)還包括Zookeeper集群,所述Zookeeper集群用于監(jiān)測(cè)所述前端服務(wù)器集群的運(yùn)行狀態(tài);

所述采用第一負(fù)載均衡算法為所述客戶(hù)端分配一目標(biāo)前端服務(wù)器,包括:

獲取所述Zookeeper集群反饋的所述前端服務(wù)器集群的運(yùn)行狀態(tài),根據(jù)所述運(yùn)行狀態(tài)確定處于正常工作狀態(tài)的全部前端服務(wù)器;

采用第一負(fù)載均衡算法,從所述全部前端服務(wù)器中為所述客戶(hù)端分配一目標(biāo)前端服務(wù)器。

可選的,所述系統(tǒng)還包括第二負(fù)載服務(wù)器,所述方法還包括:

所述第二負(fù)載服務(wù)器采樣第二負(fù)載均衡算法,為所述業(yè)務(wù)請(qǐng)求分配一目標(biāo)后端服務(wù)器;

則,所述獲取為所述業(yè)務(wù)請(qǐng)求分配的目標(biāo)后端服務(wù)器的信息,包括:

獲取所述第二負(fù)載服務(wù)器返回的所述目標(biāo)后端服務(wù)器的信息。

可選的,所述第二負(fù)載均衡算法為一致性Hash算法。

可選的,所述目標(biāo)前端服務(wù)器與所述目標(biāo)后端服務(wù)器之間通過(guò)遠(yuǎn)程過(guò)程調(diào)用協(xié)議RPC組件進(jìn)行數(shù)據(jù)傳輸。

可選的,所述方法還包括:

所述目標(biāo)后端服務(wù)器通過(guò)所述目標(biāo)前端服務(wù)器向所述客戶(hù)端推送信息。

本發(fā)明還提供了一種數(shù)據(jù)訪問(wèn)系統(tǒng),所述系統(tǒng)包括至少一個(gè)客戶(hù)端、第一負(fù)載服務(wù)器、前端服務(wù)器集群和后端服務(wù)器集群;

所述第一負(fù)載服務(wù)器,用于在接收到所述客戶(hù)端發(fā)送的訪問(wèn)請(qǐng)求后,采樣第一負(fù)載均衡算法為所述客戶(hù)端分配一目標(biāo)前端服務(wù)器,并向所述客戶(hù)端發(fā)送攜帶所述目標(biāo)前端服務(wù)器信息的分配消息,其中,所述目標(biāo)前端服務(wù)器為所述前端服務(wù)器集群中的一臺(tái)處于正常工作狀態(tài)的服務(wù)器;

所述客戶(hù)端,用于在接收到所述分配消息后,向所述目標(biāo)前端服務(wù)器發(fā)送業(yè)務(wù)請(qǐng)求;

所述目標(biāo)前端服務(wù)器,用于在接收到所述業(yè)務(wù)請(qǐng)求后,獲取為所述業(yè)務(wù)請(qǐng)求分配的目標(biāo)后端服務(wù)器的信息,并向所述目標(biāo)后端服務(wù)器發(fā)送所述業(yè)務(wù)請(qǐng)求,其中,所述目標(biāo)后端服務(wù)器為所述后端服務(wù)器集群中的一臺(tái)服務(wù)器;

所述目標(biāo)后端服務(wù)器,用于在接收到所述業(yè)務(wù)請(qǐng)求后,獲取所述業(yè)務(wù)請(qǐng)求所請(qǐng)求的目標(biāo)數(shù)據(jù),并通過(guò)所述目標(biāo)前端服務(wù)器向所述客戶(hù)端返回所述目標(biāo)數(shù)據(jù)。

可選的,所述系統(tǒng)還包括Zookeeper集群,所述Zookeeper集群用于監(jiān)測(cè)所述前端服務(wù)器集群的運(yùn)行狀態(tài);

所述第一負(fù)載服務(wù)器,包括:

狀態(tài)獲取單元,用于獲取所述Zookeeper集群反饋的所述前端服務(wù)器集群的運(yùn)行狀態(tài),根據(jù)所述運(yùn)行狀態(tài)確定處于正常工作狀態(tài)的全部前端服務(wù)器;

負(fù)載均衡單元,用于采用第一負(fù)載均衡算法,從所述全部前端服務(wù)器中為所述客戶(hù)端分配一目標(biāo)前端服務(wù)器。

可選的,所述系統(tǒng)還包括第二負(fù)載服務(wù)器;

所述第二負(fù)載服務(wù)器,用于采樣第二負(fù)載均衡算法,為所述業(yè)務(wù)請(qǐng)求分配一目標(biāo)后端服務(wù)器;

則,所述目標(biāo)后端服務(wù)器,具體用于獲取所述第二負(fù)載服務(wù)器返回的所述目標(biāo)后端服務(wù)器的信息。

可選的,所述第二負(fù)載均衡算法為一致性Hash算法。

本發(fā)明實(shí)施例提供的數(shù)據(jù)訪問(wèn)方法及系統(tǒng),第一負(fù)載服務(wù)器在接收到客戶(hù)端發(fā)送的訪問(wèn)請(qǐng)求后,采樣第一負(fù)載均衡算法為客戶(hù)端分配一目標(biāo)前端服務(wù)器,并向客戶(hù)端發(fā)送攜帶目標(biāo)前端服務(wù)器信息的分配消息,其中,所述目標(biāo)前端服務(wù)器為前端服務(wù)器集群中的一臺(tái)處于正常工作狀態(tài)的服務(wù)器;客戶(hù)端在接收到該分配消息后,向目標(biāo)前端服務(wù)器發(fā)送業(yè)務(wù)請(qǐng)求;目標(biāo)前端服務(wù)器在接收到業(yè)務(wù)請(qǐng)求后,獲取為業(yè)務(wù)請(qǐng)求分配的目標(biāo)后端服務(wù)器的信息,并向目標(biāo)后端服務(wù)器發(fā)送該業(yè)務(wù)請(qǐng)求,其中,所述目標(biāo)后端服務(wù)器為后端服務(wù)器集群中的一臺(tái)服務(wù)器;目標(biāo)后端服務(wù)器在接收到業(yè)務(wù)請(qǐng)求后,獲取業(yè)務(wù)請(qǐng)求所請(qǐng)求的目標(biāo)數(shù)據(jù),并通過(guò)目標(biāo)前端服務(wù)器向客戶(hù)端返回所述目標(biāo)數(shù)據(jù)。可見(jiàn),通過(guò)為客戶(hù)端分配一處于正常工作狀態(tài)的服務(wù)器進(jìn)行請(qǐng)求連接,可以提高客戶(hù)端獲取所請(qǐng)求訪問(wèn)數(shù)據(jù)的幾率,從而提高了數(shù)據(jù)訪問(wèn)的成功率。

附圖說(shuō)明

為了更清楚地說(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ù)這些附圖獲得其他的附圖。

圖1示出了數(shù)據(jù)訪問(wèn)方法的流程示意圖;

圖2示出了數(shù)據(jù)訪問(wèn)系統(tǒng)的組成示意圖之一;

圖3示出了數(shù)據(jù)訪問(wèn)系統(tǒng)的組成示意圖之二。

具體實(shí)施方式

為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(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í)施例之前,首先介紹本發(fā)明實(shí)施例涉及的名詞術(shù)語(yǔ):

1、用戶(hù)客戶(hù)端User Client:指發(fā)起請(qǐng)求的客戶(hù)端設(shè)備。

2、前端服務(wù)器Front Server:主要用來(lái)做Socket連接承載維持,保持連接狀態(tài),不做具體業(yè)務(wù)處理和規(guī)劃。

3、后端服務(wù)器Backend Server:主要用來(lái)做業(yè)務(wù)處理服務(wù)。

4、用戶(hù)連接標(biāo)識(shí)符:主要是用戶(hù)客戶(hù)端User Client與前端服務(wù)器Front Server連接時(shí),產(chǎn)生的服務(wù)器連接句柄id(即單臺(tái)服務(wù)器某個(gè)socket連接的唯一標(biāo)識(shí))。

5、Zookeeper:采用分布式服務(wù)框架,是Apache Hadoop的一個(gè)子項(xiàng)目,它主要是用來(lái)解決分布式應(yīng)用中經(jīng)常遇到的一些數(shù)據(jù)管理問(wèn)題,如:統(tǒng)一命名服務(wù)、狀態(tài)同步服務(wù)、集群管理、分布式應(yīng)用配置項(xiàng)的管理等。

6、RPC:即遠(yuǎn)程過(guò)程調(diào)用協(xié)議(Remote Procedure Call Protocol),它是一種通過(guò)網(wǎng)絡(luò)從遠(yuǎn)程計(jì)算機(jī)程序上請(qǐng)求服務(wù),而不需要了解底層網(wǎng)絡(luò)技術(shù)的協(xié)議。

7、一致性Hash算法:具體原理是,先構(gòu)造一個(gè)長(zhǎng)度為232的整數(shù)環(huán),這個(gè)環(huán)被稱(chēng)為一致性Hash環(huán),將服務(wù)器節(jié)點(diǎn)的Hash值(其分布也為[0,232-1])放置在這個(gè)Hash環(huán)上,然后根據(jù)需要緩存到服務(wù)器的數(shù)據(jù)的Key值,計(jì)算該Key值的Hash值(其分布也為[0,232-1]),接著在Hash環(huán)上順時(shí)針查找距離這個(gè)Key值的Hash值最近的服務(wù)器節(jié)點(diǎn),并將數(shù)據(jù)存儲(chǔ)到該服務(wù)器節(jié)點(diǎn)上,從而完成了Key到服務(wù)器節(jié)點(diǎn)的映射查找。所以,每個(gè)服務(wù)器節(jié)點(diǎn)僅需維護(hù)少量相鄰節(jié)點(diǎn)的信息,并且在節(jié)點(diǎn)加入/退出系統(tǒng)時(shí),僅有相關(guān)的少量節(jié)點(diǎn)參與到拓?fù)涞木S護(hù)中,這樣,可以保證在服務(wù)器宕機(jī)下線的情況下,能夠讓盡量多的請(qǐng)求路由到原來(lái)的服務(wù)器節(jié)點(diǎn),從而保證服務(wù)器集群的高可用。

在當(dāng)今移動(dòng)互聯(lián)網(wǎng)、云計(jì)算和大數(shù)據(jù)的成熟和快速發(fā)展的時(shí)代,對(duì)于能夠瞄準(zhǔn)用戶(hù)需求的產(chǎn)品,用戶(hù)數(shù)量能夠在短時(shí)間內(nèi)指數(shù)型增長(zhǎng),然而,面對(duì)用戶(hù)數(shù)量的增長(zhǎng),尤其是短時(shí)間內(nèi)的指數(shù)型增長(zhǎng),不得不面臨一些嚴(yán)峻的技術(shù)挑戰(zhàn),比如,如何支持高并發(fā)、如何避免因?yàn)閱闻_(tái)機(jī)器當(dāng)機(jī)導(dǎo)致服務(wù)不可用、如何避免在服務(wù)容量不足時(shí)導(dǎo)致的用戶(hù)體驗(yàn)下降,等等。因此,在網(wǎng)絡(luò)系統(tǒng)構(gòu)建之初就采用高可用和可伸縮架構(gòu),將能有效避免這些問(wèn)題。

為避免上述問(wèn)題,本發(fā)明實(shí)施例提供的數(shù)據(jù)訪問(wèn)系統(tǒng),在水平和垂直方向都做分層處理。具體地,在水平方向上,主要是在現(xiàn)有服務(wù)器容量或性能不足的情況下,能夠在現(xiàn)有網(wǎng)絡(luò)架構(gòu)中直接增加服務(wù)器,同時(shí),在增加的服務(wù)器中部署同樣的代碼;在垂直方向上,主要是將服務(wù)器的職能進(jìn)行分離,比如,部分服務(wù)器用來(lái)實(shí)現(xiàn)Socket連接、另一部分服務(wù)器用來(lái)實(shí)現(xiàn)業(yè)務(wù)服務(wù)等;這樣,便能夠靈活的應(yīng)對(duì)業(yè)務(wù)或者并發(fā)連接數(shù)高等場(chǎng)景。

本發(fā)明實(shí)施例主要是采用前端服務(wù)器集群和后端服務(wù)器集群分離的形式,做到水平和垂直方向的職能劃分,達(dá)到功能與邏輯上的分層,此外,使用Zookeeper管理集群或者具有集群監(jiān)控管理的開(kāi)源服務(wù),能夠在集群部分故障時(shí)及時(shí)反饋,能保證大部分現(xiàn)有服務(wù)和用戶(hù)能夠正常進(jìn)行流程,做到高并發(fā)高可用的目的。

下面具體介紹本發(fā)明實(shí)施例。

參見(jiàn)圖1,為本發(fā)明實(shí)施例提供的數(shù)據(jù)訪問(wèn)方法的流程示意圖,該方法可以應(yīng)用于圖2所示的一種數(shù)據(jù)訪問(wèn)系統(tǒng),該系統(tǒng)包括至少一個(gè)客戶(hù)端、第一負(fù)載服務(wù)器、前端服務(wù)器集群和后端服務(wù)器集群。該方法包括以下步驟S101-S104:

S101:所述第一負(fù)載服務(wù)器在接收到所述客戶(hù)端發(fā)送的訪問(wèn)請(qǐng)求后,采樣第一負(fù)載均衡算法為所述客戶(hù)端分配一目標(biāo)前端服務(wù)器,并向所述客戶(hù)端發(fā)送攜帶所述目標(biāo)前端服務(wù)器信息的分配消息;其中,所述目標(biāo)前端服務(wù)器為所述前端服務(wù)器集群中的一臺(tái)處于正常工作狀態(tài)的服務(wù)器。

參見(jiàn)圖2,關(guān)于所述前端服務(wù)器集群,其包括至少一個(gè)前端服務(wù)器,前端服務(wù)器主要用于承載連接,可以利用開(kāi)源協(xié)議SocketIO為每個(gè)前端服務(wù)器配置分布式承載連接組件。這樣,當(dāng)用戶(hù)客戶(hù)端請(qǐng)求一后端服務(wù)器做實(shí)時(shí)業(yè)務(wù)處理時(shí),用戶(hù)客戶(hù)端先是發(fā)起一個(gè)超文本傳輸協(xié)議(HyperText Transfer Protocol,簡(jiǎn)稱(chēng)HTTP)或者一個(gè)傳輸控制協(xié)議(Transmission Control Protocol,簡(jiǎn)稱(chēng)TCP)請(qǐng)求,該請(qǐng)求經(jīng)過(guò)域名系統(tǒng)(Domain Name System,簡(jiǎn)稱(chēng)DNS)等解析到第一負(fù)載服務(wù)器后,第一負(fù)載服務(wù)器利用負(fù)載均衡算法計(jì)算出一前端服務(wù)器域名分配給用戶(hù)客戶(hù)端。

在本實(shí)施例中,圖2所示系統(tǒng)還包括Zookeeper集群,所述Zookeeper集群用于監(jiān)測(cè)所述前端服務(wù)器集群的運(yùn)行狀態(tài)。具體地,可以通過(guò)建立Zookeeper服務(wù)管理集群,穩(wěn)定的監(jiān)控各個(gè)前端服務(wù)器的運(yùn)行狀態(tài),動(dòng)態(tài)的向第一負(fù)載服務(wù)器反饋宕機(jī)或者其他情形導(dǎo)致不能正常工作的前端服務(wù)器的狀態(tài)信息,以便第一負(fù)載服務(wù)器調(diào)整負(fù)載均衡分配策略,從正常工作的所有前端服務(wù)器中為客戶(hù)端分配一服務(wù)器,以便利用分配的服務(wù)器承載客戶(hù)端的請(qǐng)求連接。

為便于描述,本實(shí)施例將分配給用戶(hù)客戶(hù)端的這一前端服務(wù)器稱(chēng)為目標(biāo)前端服務(wù)器。

基于上述內(nèi)容,S101中的“采用第一負(fù)載均衡算法為所述客戶(hù)端分配一目標(biāo)前端服務(wù)器”,可以包括步驟A1-A2:

A1:第一負(fù)載服務(wù)獲取Zookeeper集群反饋的前端服務(wù)器集群的運(yùn)行狀態(tài),根據(jù)所述運(yùn)行狀態(tài)確定處于正常工作狀態(tài)的全部前端服務(wù)器。

由于Zookeeper集群可以實(shí)時(shí)監(jiān)控各個(gè)前端服務(wù)器的運(yùn)行狀態(tài),并將所述運(yùn)行狀態(tài)信息反饋給第一負(fù)載服務(wù)器,第一負(fù)載服務(wù)器便可以根據(jù)所述運(yùn)行狀態(tài)判斷前端服務(wù)器集群中哪些服務(wù)器處于正常工作狀態(tài)(能夠承載連接)、哪些服務(wù)器處于不正常的工作狀態(tài)(不能承載連接)。

A2:第一負(fù)載服務(wù)采用第一負(fù)載均衡算法,從所述全部前端服務(wù)器中為所述客戶(hù)端分配一目標(biāo)前端服務(wù)器。

第一負(fù)載服務(wù)器可以采用負(fù)載均衡算法將各個(gè)客戶(hù)端的請(qǐng)求連接均衡分配到各個(gè)正常工作的前端服務(wù)器上。

這樣,如果出現(xiàn)高并發(fā)場(chǎng)景即很多客戶(hù)端同時(shí)發(fā)起連接請(qǐng)求,本實(shí)施例可以合理地將連接請(qǐng)求負(fù)載到不同的前端服務(wù)器上,從而把單機(jī)服務(wù)的壓力(無(wú)論是硬件還是軟件等方面),均衡的進(jìn)行了平均分發(fā)。此外,通過(guò)把各個(gè)前端服務(wù)器注冊(cè)到分布式管理開(kāi)源組件Zookeeper進(jìn)行管理,通過(guò)宕機(jī)檢測(cè)反饋機(jī)制(即Zookeeper分布式集群管理功能),將檢測(cè)結(jié)果同步到第一負(fù)載服務(wù)器,從而使第一負(fù)載服務(wù)器感知各個(gè)前端服務(wù)器的狀態(tài),以便客戶(hù)端的連接請(qǐng)求到達(dá)第一負(fù)載服務(wù)器后,為其分配到正常的前端服務(wù)器進(jìn)行連接。所以,本實(shí)施例采用的分布式連接層,可以有效應(yīng)對(duì)高并發(fā)和高可用的應(yīng)用場(chǎng)景。

S102:所述客戶(hù)端在接收到所述分配消息后,向所述目標(biāo)前端服務(wù)器發(fā)送業(yè)務(wù)請(qǐng)求。

當(dāng)為客戶(hù)端分配了一前端服務(wù)器即所述目標(biāo)前端服務(wù)器后,比如,圖2中的前端服務(wù)器1,客戶(hù)端再發(fā)起真正的Socket業(yè)務(wù)請(qǐng)求,以與前端服務(wù)器1建立業(yè)務(wù)連接。

S103:所述目標(biāo)前端服務(wù)器在接收到所述業(yè)務(wù)請(qǐng)求后,獲取為所述業(yè)務(wù)請(qǐng)求分配的目標(biāo)后端服務(wù)器的信息,并向所述目標(biāo)后端服務(wù)器發(fā)送所述業(yè)務(wù)請(qǐng)求;其中,所述目標(biāo)后端服務(wù)器為所述后端服務(wù)器集群中的一臺(tái)服務(wù)器。

在一些實(shí)施方式中,所述目標(biāo)前端服務(wù)器與所述目標(biāo)后端服務(wù)器之間可以通過(guò)遠(yuǎn)程過(guò)程調(diào)用協(xié)議RPC組件進(jìn)行數(shù)據(jù)傳輸。

在一些實(shí)施方式中,圖2所示系統(tǒng)還可以包括第二負(fù)載服務(wù)器,則,本實(shí)施例的數(shù)據(jù)訪問(wèn)方法還可以包括:所述第二負(fù)載服務(wù)器采樣第二負(fù)載均衡算法,為所述業(yè)務(wù)請(qǐng)求分配一目標(biāo)后端服務(wù)器,具體地,所述第二負(fù)載均衡算法可以為一致性Hash算法。

在這種實(shí)施方式中,對(duì)于各種各樣的業(yè)務(wù)場(chǎng)景需求,例如,直播秀場(chǎng)等實(shí)時(shí)互動(dòng)場(chǎng)景,當(dāng)每一前端服務(wù)器(其可以不處理具體業(yè)務(wù))承載著大量客戶(hù)端發(fā)起的業(yè)務(wù)請(qǐng)求連接時(shí),每一前端服務(wù)器可以把每一請(qǐng)求連接的連接信息發(fā)送至第二負(fù)載服務(wù)器,所述連接信息可以包括:用戶(hù)連接標(biāo)識(shí)符、前端服務(wù)器標(biāo)識(shí)Front Server Id、客戶(hù)端類(lèi)型Client type等。由于后端服務(wù)器集群的各個(gè)服務(wù)器節(jié)點(diǎn)的Hash值可以被放置在一Hash環(huán)上,所以,第二負(fù)載服務(wù)器可以通過(guò)一致性Hash算法,即根據(jù)所述連接信息中的某個(gè)特征信息(比如,用戶(hù)訪問(wèn)的秀場(chǎng)房間號(hào)或客戶(hù)端IP地址)的Key值,計(jì)算該Key值的Hash值,在Hash環(huán)上順時(shí)針查找距離這個(gè)Key值的Hash值最近的后端服務(wù)器節(jié)點(diǎn),將所述請(qǐng)求信息路由到該后端服務(wù)器上,為便于描述,將該后端服務(wù)器稱(chēng)為目標(biāo)后端服務(wù)器,比如,假設(shè)目標(biāo)后端服務(wù)器為后端服務(wù)器1,則將所述請(qǐng)求信息發(fā)送到后端服務(wù)器1上。

基于上述內(nèi)容,S101中的“獲取為所述業(yè)務(wù)請(qǐng)求分配的目標(biāo)后端服務(wù)器的信息”,可以包括:獲取所述第二負(fù)載服務(wù)器返回的所述目標(biāo)后端服務(wù)器的信息。

可見(jiàn),本實(shí)施例可以對(duì)后端服務(wù)器進(jìn)行容災(zāi)處理,即通過(guò)一致性Hash算法,當(dāng)出現(xiàn)服務(wù)宕機(jī)的后端服務(wù)器,也能在一定程度上保證對(duì)大部分的請(qǐng)求進(jìn)行響應(yīng),只影響了分配給宕機(jī)的后端服務(wù)器的客戶(hù)端請(qǐng)求,只要用戶(hù)自動(dòng)重連socket,并負(fù)載到其他正常后端服務(wù)器,這在一定程度上保證了業(yè)務(wù)機(jī)的高可用性。

S104:所述目標(biāo)后端服務(wù)器在接收到所述業(yè)務(wù)請(qǐng)求后,獲取所述業(yè)務(wù)請(qǐng)求所請(qǐng)求的目標(biāo)數(shù)據(jù),并通過(guò)所述目標(biāo)前端服務(wù)器向所述客戶(hù)端返回所述目標(biāo)數(shù)據(jù)。

此時(shí),各個(gè)后端服務(wù)器會(huì)對(duì)接收到的所述請(qǐng)求信息進(jìn)行管理并獲取所述請(qǐng)求信息所請(qǐng)求的數(shù)據(jù),然后,通過(guò)所述請(qǐng)求信息中的前端服務(wù)器標(biāo)識(shí)Front Server Id鎖定所述目標(biāo)前端服務(wù)器,通過(guò)RPC組件向所述目標(biāo)前端服務(wù)器的連接層發(fā)送客戶(hù)端所請(qǐng)求的目標(biāo)數(shù)據(jù),接著,所述目標(biāo)前端服務(wù)器根據(jù)用戶(hù)連接標(biāo)識(shí)符尋找Socket句柄向所述客戶(hù)端發(fā)送所述目標(biāo)數(shù)據(jù)。

通過(guò)上述流程,完成了用戶(hù)客戶(hù)端到目標(biāo)后端服務(wù)端的一個(gè)高并發(fā)業(yè)務(wù)分層和路由。

進(jìn)一步地,在一些實(shí)施方式中,本實(shí)施例提供的數(shù)據(jù)訪問(wèn)方法還可以包括:所述目標(biāo)后端服務(wù)器通過(guò)所述目標(biāo)前端服務(wù)器向所述客戶(hù)端推送信息。

在這種實(shí)施方式中,后端服務(wù)器可以主動(dòng)發(fā)送消息到各個(gè)用戶(hù)客戶(hù)端?;诤蠖朔?wù)器集群的設(shè)計(jì),后端服務(wù)器可以對(duì)客戶(hù)端信息(即所述連接信息)進(jìn)行管理,比如,將用戶(hù)連接標(biāo)識(shí)符,前端服務(wù)器標(biāo)識(shí)Front Server Id、以及客戶(hù)端來(lái)源信息等做分組管理。后端服務(wù)器可以提供統(tǒng)一的方法封裝(底層通過(guò)統(tǒng)一的RPC方法調(diào)用前端服務(wù)器)推送用戶(hù)感興趣的消息到客戶(hù)端。

本發(fā)明實(shí)施例提供的數(shù)據(jù)訪問(wèn)方法,第一負(fù)載服務(wù)器在接收到客戶(hù)端發(fā)送的訪問(wèn)請(qǐng)求后,采樣第一負(fù)載均衡算法為客戶(hù)端分配一目標(biāo)前端服務(wù)器,并向客戶(hù)端發(fā)送攜帶目標(biāo)前端服務(wù)器信息的分配消息,其中,所述目標(biāo)前端服務(wù)器為前端服務(wù)器集群中的一臺(tái)處于正常工作狀態(tài)的服務(wù)器;客戶(hù)端在接收到該分配消息后,向目標(biāo)前端服務(wù)器發(fā)送業(yè)務(wù)請(qǐng)求;目標(biāo)前端服務(wù)器在接收到業(yè)務(wù)請(qǐng)求后,獲取為業(yè)務(wù)請(qǐng)求分配的目標(biāo)后端服務(wù)器的信息,并向目標(biāo)后端服務(wù)器發(fā)送該業(yè)務(wù)請(qǐng)求,其中,所述目標(biāo)后端服務(wù)器為后端服務(wù)器集群中的一臺(tái)服務(wù)器;目標(biāo)后端服務(wù)器在接收到業(yè)務(wù)請(qǐng)求后,獲取業(yè)務(wù)請(qǐng)求所請(qǐng)求的目標(biāo)數(shù)據(jù),并通過(guò)目標(biāo)前端服務(wù)器向客戶(hù)端返回所述目標(biāo)數(shù)據(jù)。可見(jiàn),通過(guò)為客戶(hù)端分配一處于正常工作狀態(tài)的服務(wù)器進(jìn)行請(qǐng)求連接,可以提高客戶(hù)端獲取所請(qǐng)求訪問(wèn)數(shù)據(jù)的幾率,從而提高了數(shù)據(jù)訪問(wèn)的成功率。

參見(jiàn)圖3,為本發(fā)明實(shí)施例提供的數(shù)據(jù)訪問(wèn)系統(tǒng)的組成示意圖,所述系統(tǒng)包括至少一個(gè)客戶(hù)端301、第一負(fù)載服務(wù)器302、前端服務(wù)器集群303和后端服務(wù)器集群304;

所述第一負(fù)載服務(wù)器302,用于在接收到所述客戶(hù)端301發(fā)送的訪問(wèn)請(qǐng)求后,采樣第一負(fù)載均衡算法為所述客戶(hù)端分配一目標(biāo)前端服務(wù)器,并向所述客戶(hù)端發(fā)送攜帶所述目標(biāo)前端服務(wù)器信息的分配消息,其中,所述目標(biāo)前端服務(wù)器為所述前端服務(wù)器集群303中的一臺(tái)處于正常工作狀態(tài)的服務(wù)器;

所述客戶(hù)端301,用于在接收到所述分配消息后,向所述目標(biāo)前端服務(wù)器發(fā)送業(yè)務(wù)請(qǐng)求;

所述目標(biāo)前端服務(wù)器,用于在接收到所述業(yè)務(wù)請(qǐng)求后,獲取為所述業(yè)務(wù)請(qǐng)求分配的目標(biāo)后端服務(wù)器的信息,并向所述目標(biāo)后端服務(wù)器發(fā)送所述業(yè)務(wù)請(qǐng)求,其中,所述目標(biāo)后端服務(wù)器為所述后端服務(wù)器集群304中的一臺(tái)服務(wù)器;

所述目標(biāo)后端服務(wù)器,用于在接收到所述業(yè)務(wù)請(qǐng)求后,獲取所述業(yè)務(wù)請(qǐng)求所請(qǐng)求的目標(biāo)數(shù)據(jù),并通過(guò)所述目標(biāo)前端服務(wù)器向所述客戶(hù)端301返回所述目標(biāo)數(shù)據(jù)。

在一些實(shí)施方式中,所述系統(tǒng)還包括Zookeeper集群,所述Zookeeper集群用于監(jiān)測(cè)所述前端服務(wù)器集群的運(yùn)行狀態(tài);

所述第一負(fù)載服務(wù)器302,包括:

狀態(tài)獲取單元,用于獲取所述Zookeeper集群反饋的所述前端服務(wù)器集群的運(yùn)行狀態(tài),根據(jù)所述運(yùn)行狀態(tài)確定處于正常工作狀態(tài)的全部前端服務(wù)器;

負(fù)載均衡單元,用于采用第一負(fù)載均衡算法,從所述全部前端服務(wù)器中為所述客戶(hù)端分配一目標(biāo)前端服務(wù)器。

在一些實(shí)施方式中,所述系統(tǒng)還包括第二負(fù)載服務(wù)器;

所述第二負(fù)載服務(wù)器,用于采樣第二負(fù)載均衡算法,為所述業(yè)務(wù)請(qǐng)求分配一目標(biāo)后端服務(wù)器;

則,所述目標(biāo)后端服務(wù)器,具體用于獲取所述第二負(fù)載服務(wù)器返回的所述目標(biāo)后端服務(wù)器的信息。

在一些實(shí)施方式中,所述第二負(fù)載均衡算法為一致性Hash算法。

在一些實(shí)施方式中,所述目標(biāo)前端服務(wù)器與所述目標(biāo)后端服務(wù)器之間通過(guò)遠(yuǎn)程過(guò)程調(diào)用協(xié)議RPC組件進(jìn)行數(shù)據(jù)傳輸。

在一些實(shí)施方式中,所述目標(biāo)后端服務(wù)器,還用于通過(guò)所述目標(biāo)前端服務(wù)器向所述客戶(hù)端301推送信息。

通過(guò)以上的實(shí)施方式的描述可知,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法中的全部或部分步驟可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn)?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品可以存儲(chǔ)在存儲(chǔ)介質(zhì)中,如ROM/RAM、磁碟、光盤(pán)等,包括若干指令用以使得一臺(tái)計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者諸如媒體網(wǎng)關(guān)等網(wǎng)絡(luò)通信設(shè)備,等等)執(zhí)行本發(fā)明各個(gè)實(shí)施例或者實(shí)施例的某些部分所述的方法。

需要說(shuō)明的是,對(duì)于實(shí)施例公開(kāi)的系統(tǒng)而言,由于其與實(shí)施例公開(kāi)的方法相對(duì)應(yīng),所以描述的比較簡(jiǎn)單,相關(guān)之處參見(jiàn)方法部分說(shuō)明即可。

還需要說(shuō)明的是,在本文中,諸如第一和第二等之類(lèi)的關(guān)系術(shù)語(yǔ)僅僅用來(lái)將一個(gè)實(shí)體或者操作與另一個(gè)實(shí)體或操作區(qū)分開(kāi)來(lái),而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者設(shè)備所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括所述要素的過(guò)程、方法、物品或者設(shè)備中還存在另外的相同要素。

對(duì)所公開(kāi)的實(shí)施例的上述說(shuō)明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專(zhuān)業(yè)技術(shù)人員來(lái)說(shuō)將是顯而易見(jiàn)的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開(kāi)的原理和新穎特點(diǎn)相一致的最寬的范圍。

當(dāng)前第1頁(yè)1 2 3 
網(wǎng)友詢(xún)問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
封丘县| 兴安县| 平舆县| 新野县| 米林县| 昔阳县| 云阳县| 高要市| 静海县| 吴川市| 玉田县| 渑池县| 赫章县| 河东区| 沙河市| 如东县| 南安市| 武宁县| 电白县| 河津市| 榕江县| 陆良县| 建昌县| 五家渠市| 东乡族自治县| 运城市| 湖口县| 余庆县| 阜平县| 彭山县| 青冈县| 天全县| 南昌县| 慈利县| 武功县| 三亚市| 郎溪县| 连南| 广州市| 吕梁市| 桃园县|