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

日志收集集群負載均衡的方法及裝置制造方法

文檔序號:7806864閱讀:188來源:國知局
日志收集集群負載均衡的方法及裝置制造方法
【專利摘要】本發(fā)明公開了一種日志收集集群負載均衡的方法及裝置。所述方法包括:通過zookeeper同步日志服務(wù)器的狀態(tài)信息;根據(jù)日志服務(wù)器的狀態(tài)信息確定日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針的數(shù)組;接收日志客戶端發(fā)送來的日志;以輪詢數(shù)組的方式確定為所述日志分配的日志服務(wù)器的指針;將所述日志轉(zhuǎn)發(fā)到確定的為所述日志分配的日志服務(wù)器的指針所指向的日志服務(wù)器。本發(fā)明通過zookeeper實現(xiàn)日志收集服務(wù)器與日志服務(wù)器之間的通信,由于zookeeper是一個集群,避免了單點故障的問題;根據(jù)日志服務(wù)器的狀態(tài)信息為接收到的日志分配日志服務(wù)器進行存儲,實現(xiàn)了負載均衡。
【專利說明】日志收集集群負載均衡的方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明實施例涉及網(wǎng)絡(luò)技術(shù),尤其涉及一種日志收集集群負載均衡的方法及裝置。
【背景技術(shù)】
[0002]日志收集集群,是多臺日志收集服務(wù)器組成的服務(wù)集群,日志發(fā)送客戶端向集群發(fā)送數(shù)據(jù),數(shù)據(jù)會保存到集群的機器中,并提供數(shù)據(jù)的訪問接口。現(xiàn)有技術(shù)中,日志收集集群的實現(xiàn)方法包括:上傳服務(wù)器接收中央控制器發(fā)送的攜帶至少一個節(jié)點收集服務(wù)器的地址信息的日志上傳通知消息,并保存接收到的每個節(jié)點收集服務(wù)器的地址信息;上傳服務(wù)器從保存的節(jié)點收集服務(wù)器的地址信息中選定一個待接收日志的節(jié)點收集服務(wù)器的地址信息;上傳服務(wù)器根據(jù)所述選定的地址信息,將本地磁盤存儲的日志發(fā)送給節(jié)點收集服務(wù)器;節(jié)點收集服務(wù)器將來自上傳服務(wù)器的日志匯總到中央收集服務(wù)器。
[0003]但是,現(xiàn)有技術(shù)中,由一個中央控制器實現(xiàn)上傳服務(wù)器與節(jié)點收集服務(wù)器的通信,如果該中央控制器出現(xiàn)問題,整個系統(tǒng)便不能繼續(xù)工作,存在單點故障問題;現(xiàn)有技術(shù)沒有考慮中央收集服務(wù)器的負載問題,當中央收集服務(wù)器為單臺機器時,能承受的流量是有限的,如果流量超過限制值就會發(fā)生失包,造成日志丟失,當中央收集服務(wù)器是一個集群時,沒有考慮負載均衡的問題。

【發(fā)明內(nèi)容】

[0004]有鑒于此,本發(fā)明實施例提供一種日志收集集群負載均衡的方法及裝置,以解決單點故障問題,實現(xiàn)負載均衡。
[0005]第一方面,本發(fā)明實施例提供了一種日志收集集群負載均衡的方法,所述方法包括:
[0006]通過zookeeper同步日志服務(wù)器的狀態(tài)信息;
[0007]根據(jù)日志服務(wù)器的狀態(tài)信息確定日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針的數(shù)組;
[0008]接收日志客戶端發(fā)送來的日志;
[0009]以輪詢數(shù)組的方式確定為所述日志分配的日志服務(wù)器的指針;
[0010]將所述日志轉(zhuǎn)發(fā)到確定的為所述日志分配的日志服務(wù)器的指針所指向的日志服務(wù)器。
[0011]第二方面,本發(fā)明實施例還提供了一種日志收集集群負載均衡的裝置,所述裝置包括:
[0012]同步模塊,用于通過zookeeper同步日志服務(wù)器的狀態(tài)信息;
[0013]第一確定模塊,用于根據(jù)日志服務(wù)器的狀態(tài)信息確定日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針的數(shù)組;
[0014]接收模塊,用于接收日志客戶端發(fā)送來的日志;
[0015]第二確定模塊,用于以輪詢數(shù)組的方式確定為所述日志分配的日志服務(wù)器的指針;
[0016]轉(zhuǎn)發(fā)模塊,用于將所述日志轉(zhuǎn)發(fā)到所述第二確定模塊確定的為所述日志分配的日志服務(wù)器的指針所指向的日志服務(wù)器。
[0017]本發(fā)明實施例提供的日志收集集群負載均衡的方法及裝置,通過zooke印er同步日志服務(wù)器的狀態(tài)信息,并根據(jù)日志服務(wù)器的狀態(tài)信息確定日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針的數(shù)組,以輪詢數(shù)組的方式確定為接收到的日志客戶端發(fā)送來的日志分配的日志服務(wù)器的指針,將所述日志轉(zhuǎn)發(fā)到該指針所指向的日志服務(wù)器。通過zookeeper實現(xiàn)日志收集服務(wù)器與日志服務(wù)器之間的通信,由于zookeeper是一個集群,避免了單點故障的問題;日志從發(fā)送到最終保存,只在日志服務(wù)器上寫了一次的磁盤,中間的過程均是經(jīng)過網(wǎng)絡(luò)和內(nèi)存的處理,性能相比寫磁盤好很多;根據(jù)日志服務(wù)器的狀態(tài)信息為接收到的日志分配日志服務(wù)器進行存儲,實現(xiàn)了負載均衡。
【專利附圖】

【附圖說明】
[0018]圖1是本發(fā)明第一實施例提供的一種日志收集集群負載均衡的方法的流程圖;
[0019]圖2是本發(fā)明第二實施例提供的一種日志收集集群負載均衡的裝置的示意圖。
【具體實施方式】
[0020]下面結(jié)合附圖和實施例對本發(fā)明作進一步的詳細說明??梢岳斫獾氖牵颂幩枋龅木唧w實施例僅僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部內(nèi)容。
[0021]圖1示出了本發(fā)明的第一實施例。
[0022]圖1是本發(fā)明第一實施例提供的一種日志收集集群負載均衡的方法的流程圖,該方法適用于日志收集集群的負載均衡,可由日志收集服務(wù)器執(zhí)行。其中,負載均衡,是指對日志的處理,應(yīng)該根據(jù)集群中日志服務(wù)器的當前負荷,將處理日志的任務(wù)分配給集群中的機器,以保證日志集群的正常可用。在一個日志收集集群中,可以包括多臺日志客戶端、一臺或者多臺日志收集服務(wù)器、zookeeper、多臺日志服務(wù)器。其中,zookeeper是一個集群。該方法具體包括如下步驟:
[0023]步驟110,通過zookeeper同步日志服務(wù)器的狀態(tài)信息。
[0024]日志服務(wù)器啟動后便連接上zookeeper, zookeeper便可獲取日志服務(wù)器的狀態(tài)信息,其中,日志服務(wù)器的狀態(tài)信息包括日志服務(wù)器可用或者不可用,及日志服務(wù)器的優(yōu)先級值。其中,各個日志服務(wù)器的優(yōu)先級值可根據(jù)每個日志服務(wù)器的磁盤存儲量來確定,優(yōu)先級值越大表示可存儲的日志越多,當某個日志服務(wù)器的優(yōu)先級值為O時,表示該日志服務(wù)器不再接收日志進行存儲。日志收集服務(wù)器從啟動開始,便連接上zooke印er,實時獲取zookeeper上的日志服務(wù)器的狀態(tài)信息,即zookeeper上的日志服務(wù)器的狀態(tài)信息有變化時,便通過調(diào)用回調(diào)函數(shù)通知日志收集服務(wù)器,實現(xiàn)日志收集服務(wù)器通過zookeeper同步日志服務(wù)器的狀態(tài)信息。
[0025]其中,zookeeper是一個針對大型分布式系統(tǒng)的可靠協(xié)調(diào)系統(tǒng),提供的功能包括:配置維護、名字服務(wù)、分布式同步、組服務(wù)等。zookeeper表現(xiàn)出來是一個分布式名字服務(wù),就好像文件系統(tǒng)那樣,是一些虛擬的目錄與文件,其中的文件有持久化與非持久化之分。持久化文件就是,建立文件的客戶端與zookeeper的tcp連接斷開后,文件依然會存在于zookeeper中;非持久化文件,在維持客戶端與zookeeper的tcp連接的session斷開后,文件就隨之被刪除。另外,zookeeper有回調(diào)的機制,客戶端可對名字服務(wù)中的節(jié)點進行狀態(tài)監(jiān)控,當相應(yīng)節(jié)點的內(nèi)容有變化時,會執(zhí)行相應(yīng)的回調(diào)函數(shù),實現(xiàn)對zookeeper的節(jié)點的內(nèi)容的監(jiān)控。該日志收集集群負載均衡的方法中,日志服務(wù)器在zooke印er中是非持久節(jié)點,以便于有日志服務(wù)器出現(xiàn)問題時zooke印er可以隨時刪除該節(jié)點。
[0026]優(yōu)選的,通過zookeeper同步日志服務(wù)器的狀態(tài)信息,包括:
[0027]連接zookeeper,獲取zookeeper的日志服務(wù)器目錄,其中,所述日志服務(wù)器目錄包括日志服務(wù)器列表和日志服務(wù)器的優(yōu)先級值;
[0028]監(jiān)控zookeeper的日志服務(wù)器目錄;
[0029]如果zooke^er的日志服務(wù)器目錄發(fā)生變化,則更新自身保存的日志服務(wù)器列表和/或日志服務(wù)器的優(yōu)先級值。
[0030]日志收集服務(wù)器從啟動開始便連接上zookeeper,獲取zookeeper中的日志服務(wù)器目錄,其中,所述日志服務(wù)器目錄包括日志服務(wù)器列表和日志服務(wù)器的優(yōu)先級值,日志服務(wù)器在zookeeper中是非持久節(jié)點,以便于有日志服務(wù)器出現(xiàn)問題時zookeeper可以隨時刪除該節(jié)點,即更新日志服務(wù)器目錄;日志收集服務(wù)器通過zook^per的回調(diào)函數(shù)實現(xiàn)對zookeeper的日志服務(wù)器目錄的監(jiān)控,當日志服務(wù)器目錄有變化時,zookeeper會通過調(diào)用回調(diào)函數(shù)向日志收集服務(wù)器發(fā)送日志服務(wù)器目錄的變化信息;如果zook^per的日志服務(wù)器目錄發(fā)生變化,日志服務(wù)器目錄發(fā)生變化有可能是增加或者刪除了某個日志服務(wù)器(即有日志服務(wù)器啟動了日志服務(wù)程序或者關(guān)閉了日志服務(wù)程序)或者是某個日志服務(wù)器的優(yōu)先級值改變了,當增加或者刪除了某個日志服務(wù)器時日志收集服務(wù)器更新自身保存的日志服務(wù)器列表和日志服務(wù)器的優(yōu)先級值,當某個日志服務(wù)器的優(yōu)先級值改變時,日志收集服務(wù)器更新該日志服務(wù)器的優(yōu)先級值。
[0031]步驟120,根據(jù)日志服務(wù)器的狀態(tài)信息確定日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針的數(shù)組。
[0032]日志收集服務(wù)器根據(jù)日志服務(wù)器的狀態(tài)信息(即日志服務(wù)器可用或者不可用,及各個日志服務(wù)器的優(yōu)先級值),申請一個數(shù)組長度為各個日志服務(wù)器的優(yōu)先級值之和的數(shù)組,用于存儲各個日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針,以便于后續(xù)實現(xiàn)通過確定為日志分配的日志服務(wù)器的指針確定為日志分配的日志服務(wù)器,實現(xiàn)負載均衡。當zook^per中的日志服務(wù)器節(jié)點為非持久化節(jié)點時,日志服務(wù)器的狀態(tài)信息便是可用的日志服務(wù)器及相應(yīng)的優(yōu)先級值,這時,日志收集服務(wù)器便可以申請一個數(shù)組長度為可用的日志服務(wù)器的優(yōu)先級值之和的數(shù)組,用于存儲可用的各個日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針,在該數(shù)組中,用于存儲日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針的數(shù)量與該日志服務(wù)器的優(yōu)先級值相等。日志收集服務(wù)器按照各個日志服務(wù)器的優(yōu)先級值隨機向該日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針的數(shù)組中放入指向各個日志服務(wù)器的指針。
[0033]優(yōu)選的,根據(jù)日志服務(wù)器的狀態(tài)信息確定日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針的數(shù)組,包括:
[0034]從zook^per中獲取日志服務(wù)器列表和各個日志服務(wù)器的優(yōu)先級值;
[0035]計算日志服務(wù)器列表中各個日志服務(wù)器的優(yōu)先級值的總和;
[0036]申請一個大小為所述日志服務(wù)器的優(yōu)先級值的總和的數(shù)組的空間;[0037]根據(jù)日志服務(wù)器的優(yōu)先級值隨機向數(shù)組放入日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針。
[0038]例如:日志服務(wù)器列表存在三個日志服務(wù)器/log/server/log_serverl、/log/server/log_server2 和 /log/server/log_se;rver3,各自的優(yōu)先級值分別為 2、2、3 ;計算日志服務(wù)器列表中各個日志服務(wù)器的優(yōu)先級值的總和,則為2+2+3 = 7 ;申請一個數(shù)組的空間,其大小為優(yōu)先級值總和7 ;以抽獎的形式,隨機向數(shù)組放入日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針,如:首先對log_serverl抽第一次,利用rand(l, 7),抽到5,由數(shù)組的第I個位置開始數(shù),空的才算數(shù),數(shù)到第5個,第5個就放入log_serverl的指針,由于log_serverl的優(yōu)先級值為2,則再對Log_serverl抽第二次,rand (I, 6),抽到2,2就放入log_serverl指針;由于log_serverl的優(yōu)先級為2,所以抽2次,接下來對log_server2進行隨機分配;log_server2抽第一次,rand(1,5),抽到5,由第I個開始數(shù),空的才算數(shù),數(shù)到第5個,也就是數(shù)組的第7個位置(前面2和5都被占了),放入log_server2的指針;如此類推,就能把日志服務(wù)器的指針,按優(yōu)先級打散到數(shù)組中去。則日志收集服務(wù)器對日志進行存儲時,會按照該數(shù)組為日志分配存儲該日志的日志服務(wù)器,對于該例子來說,會有2/7的日志會存儲到log_serverl,有2/7的日志會存儲到log_server2,有3/7的日志會存儲到log_server2,從而實現(xiàn)了負載均衡。
[0039]步驟130,接收日志客戶端發(fā)送來的日志。
[0040]日志客戶端產(chǎn)生的日志,會發(fā)送到日志收集服務(wù)器,日志收集服務(wù)器接收日志客戶端發(fā)送來的日志,保存到自己的內(nèi)存中。日志客戶端向日志收集服務(wù)器發(fā)送日志時用端口來區(qū)分不同業(yè)務(wù),如500端口用來發(fā)送郵件日志。
[0041]步驟140,以輪詢數(shù)組的方式確定為所述日志分配的日志服務(wù)器的指針。
[0042]日志收集服務(wù)器通過對接收到的日志進行計數(shù),通過該計數(shù)對日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針的數(shù)組的數(shù)組長度進行求余計算,以確定為所述日志分配的日志服務(wù)器的指針所處日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針的數(shù)組的位置,從而確定為所述日志分配的日志服務(wù)器的指針。
[0043]優(yōu)選的,以輪詢數(shù)組的方式確定為所述日志分配的日志服務(wù)器的指針,包括:
[0044]通過計數(shù)器對接收到的日志進行計數(shù);
[0045]通過下式計算為所述日志分配的日志服務(wù)器的指針位于數(shù)組中的位置:
[0046]ind = index % Ien
[0047]其中,ind為日志服務(wù)器指針位于數(shù)組中的位置,index為計數(shù)器的計數(shù),Ien為日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針的數(shù)組的數(shù)組長度,%表示求余,上式表示的即為輪詢數(shù)組的方式;
[0048]根據(jù)日志服務(wù)器的指針位于數(shù)組中的位置確定為所述日志分配的日志服務(wù)器的指針。
[0049]步驟150,將所述日志轉(zhuǎn)發(fā)到確定的為所述日志分配的日志服務(wù)器的指針所指向的日志服務(wù)器。
[0050]日志收集服務(wù)器將接收到的日志轉(zhuǎn)發(fā)到確定的為所述日志分配的日志服務(wù)器的指針所指向的日志服務(wù)器,由日志服務(wù)器將該日志存儲到該日志服務(wù)器的磁盤中。
[0051]優(yōu)選的,所述日志收集集群負載均衡的方法還包括:
[0052]日志服務(wù)器啟動日志服務(wù)程序,連接zookeeper ;[0053]zookeeper在zookeeper的日志服務(wù)器節(jié)點中建立所述日志服務(wù)器的非持久化節(jié)點,并設(shè)置所述日志服務(wù)器的優(yōu)先級值。
[0054]當新增日志服務(wù)器(也用于所有的日志服務(wù)器啟動開始)時,該新增的日志服務(wù)器會啟動日志服務(wù)程序,連接上zookeeper, zookeeper會在zookeeper的日志服務(wù)器節(jié)點(/log/server)中建立所述日志服務(wù)器的非持久化節(jié)點,如/log/server/log_serverl,并把節(jié)點內(nèi)容設(shè)置為0,日志收集服務(wù)器通過zook^per的命令行接收人為設(shè)置的所述日志服務(wù)器的優(yōu)先級值,如將/log/server/logjerverl的優(yōu)先級值設(shè)置為2,則該日志服務(wù)器便可以接收到日志。
[0055]優(yōu)選的,所述日志收集集群負載均衡的方法還包括:
[0056]當日志服務(wù)器磁盤滿或有問題時,通過zookeeper將該磁盤滿或有問題的日志服務(wù)器的優(yōu)先級設(shè)置為O ;
[0057]該磁盤滿或有問題的日志服務(wù)器關(guān)閉日志服務(wù)程序。
[0058]當日志服務(wù)器磁盤滿或出現(xiàn)問題時,需要下架該日志服務(wù)器,首先通過zook^per將該磁盤滿或有問題的日志服務(wù)器的優(yōu)先級設(shè)置為0,這里優(yōu)先級的設(shè)置是通過接收人為對優(yōu)先級的設(shè)置命令而實現(xiàn)的,讓所有日志收集器不再向該磁盤滿或有問題的日志服務(wù)器發(fā)送日志;然后該磁盤滿或有問題的日志服務(wù)器關(guān)閉日志服務(wù)程序。
[0059]本實施例通過zookeeper同步日志服務(wù)器的狀態(tài)信息,并根據(jù)日志服務(wù)器的狀態(tài)信息確定日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針的數(shù)組,以輪詢數(shù)組的方式確定為接收到的日志客戶端發(fā)送來的日志分配的日 志服務(wù)器的指針,將所述日志轉(zhuǎn)發(fā)到該指針所指向的日志服務(wù)器。通過zookeeper實現(xiàn)日志收集服務(wù)器與日志服務(wù)器之間的通信,由于zookeeper是一個集群,避免了單點故障的問題;日志從發(fā)送到最終保存,只在日志服務(wù)器上寫了一次的磁盤,中間的過程均是經(jīng)過網(wǎng)絡(luò)和內(nèi)存的處理,性能相比寫磁盤好很多;根據(jù)日志服務(wù)器的狀態(tài)信息為接收到的日志分配日志服務(wù)器進行存儲,實現(xiàn)了負載均衡。
[0060]圖2示出了本發(fā)明的第二實施例。
[0061]圖2是本發(fā)明第二實施例提供的一種日志收集集群負載均衡的裝置的示意圖。本實施例提供的日志收集集群負載均衡的裝置用于實現(xiàn)第一實施例提供的日志收集集群負載均衡的方法。如圖2所示,本實施例所述的日志收集集群負載均衡的裝置包括:同步模塊210、第一確定模塊220、接收模塊230、第二確定模塊240和轉(zhuǎn)發(fā)模塊250。
[0062]其中,同步模塊210用于通過zookeeper同步日志服務(wù)器的狀態(tài)信息。
[0063]優(yōu)選的,所述同步模塊包括:
[0064]連接子模塊,用于連接zookeeper,獲取zookeeper的日志服務(wù)器目錄,其中,所述日志服務(wù)器目錄包括日志服務(wù)器列表和日志服務(wù)器的優(yōu)先級值;
[0065]監(jiān)控子模塊,用于監(jiān)控zook^per的日志服務(wù)器目錄;
[0066]更新子模塊,用于如果zook^per的日志服務(wù)器目錄發(fā)生變化,則更新自身保存的日志服務(wù)器列表和/或日志服務(wù)器的優(yōu)先級值。
[0067]第一確定模塊220,用于根據(jù)日志服務(wù)器的狀態(tài)信息確定日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針的數(shù)組。
[0068]優(yōu)選的,所述第一確定模塊包括:
[0069]獲取子模塊,用于從zook^per中獲取日志服務(wù)器列表和各個日志服務(wù)器的優(yōu)先級值;
[0070]第一計算子模塊,用于計算日志服務(wù)器列表中各個日志服務(wù)器的優(yōu)先級值的總和;
[0071]申請子模塊,用于申請一個大小為所述日志服務(wù)器的優(yōu)先級值的總和的數(shù)組的空間;
[0072]存儲子模塊,用于根據(jù)日志服務(wù)器的優(yōu)先級值隨機向數(shù)組放入日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針。
[0073]接收模塊230用于接收日志客戶端發(fā)送來的日志。
[0074]第二確定模塊240用于以輪詢數(shù)組的方式確定為所述日志分配的日志服務(wù)器的指針。
[0075]優(yōu)選的,所述第二確定模塊包括:
[0076]計數(shù)子模塊,用于通過計數(shù)器對接收到的日志進行計數(shù);
[0077]第二計算子模塊,用于通過下式計算為所述日志分配的日志服務(wù)器的指針位于數(shù)組中的位置:
[0078]ind = index % Ien
[0079]其中,ind為日志服務(wù)器指針位于數(shù)組中的位置,index為計數(shù)器的計數(shù),Ien為日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針的數(shù)組的數(shù)組長度,%表示求余;
[0080]確定子模塊,用于根據(jù)日志服務(wù)器的指針位于數(shù)組中的位置確定為所述日志分配的日志服務(wù)器的指針。
[0081]轉(zhuǎn)發(fā)模塊250用于將所述日志轉(zhuǎn)發(fā)到所述第二確定模塊確定的為所述日志分配的日志服務(wù)器的指針所指向的日志服務(wù)器。
[0082]優(yōu)選的,所述日志收集集群負載均衡的裝置還包括:
[0083]啟動模塊,配置于日志服務(wù)器中,用于啟動日志服務(wù)程序,連接zook^per ;
[0084]建立模塊,配置于zookeeper中,用于在zookeeper的日志服務(wù)器節(jié)點中建立所述日志服務(wù)器的非持久化節(jié)點,并設(shè)置所述日志服務(wù)器的優(yōu)先級值。
[0085]優(yōu)選的,所述日志收集集群負載均衡的裝置還包括:
[0086]設(shè)置模塊,配置于zook^per中,用于當日志服務(wù)器磁盤滿或有問題時,將該磁盤滿或有問題的日志服務(wù)器的優(yōu)先級設(shè)置為O ;
[0087]關(guān)閉模塊,配置于日志服務(wù)器中,用于關(guān)閉日志服務(wù)程序。
[0088]本實施例通過同步模塊210通過zookeeper同步日志服務(wù)器的狀態(tài)信息,第一確定模塊220根據(jù)日志服務(wù)器的狀態(tài)信息確定日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針的數(shù)組,接收模塊230接收日志客戶端發(fā)送來的日志,第二確定模塊240以輪詢數(shù)組的方式確定為所述日志分配的日志服務(wù)器的指針,轉(zhuǎn)發(fā)模塊250用于將所述日志轉(zhuǎn)發(fā)到所述第二確定模塊確定的為所述日志分配的日志服務(wù)器的指針所指向的日志服務(wù)器。通過zooke^er實現(xiàn)日志收集服務(wù)器與日志服務(wù)器之間的通信,由于zookwper是一個集群,避免了單點故障的問題;日志從發(fā)送到最終保存,只在日志服務(wù)器上寫了一次的磁盤,中間的過程均是經(jīng)過網(wǎng)絡(luò)和內(nèi)存的處理,性能相比寫磁盤好很多;根據(jù)日志服務(wù)器的狀態(tài)信息為接收到的日志分配日志服務(wù)器進行存儲,實現(xiàn)了負載均衡。
[0089]注意,上述僅為本發(fā)明的較佳實施例及所運用技術(shù)原理。本領(lǐng)域技術(shù)人員會理解,本發(fā)明不限于這里所述的特定實施例,對本領(lǐng)域技術(shù)人員來說能夠進行各種明顯的變化、重新調(diào)整和替代而不會脫離本發(fā)明的保護范圍。因此,雖然通過以上實施例對本發(fā)明進行了較為詳細的說明,但是本發(fā)明不僅僅限于以上實施例,在不脫離本發(fā)明構(gòu)思的情況下,還可以包括更多其他等效實施例,而本發(fā)明的范圍由所附的權(quán)利要求范圍決定。
【權(quán)利要求】
1.一種日志收集集群負載均衡的方法,其特征在于,所述方法包括: 通過zookeeper同步日志服務(wù)器的狀態(tài)信息; 根據(jù)日志服務(wù)器的狀態(tài)信息確定日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針的數(shù)組; 接收日志客戶端發(fā)送來的日志; 以輪詢數(shù)組的方式確定為所述日志分配的日志服務(wù)器的指針; 將所述日志轉(zhuǎn)發(fā)到確定的為所述日志分配的日志服務(wù)器的指針所指向的日志服務(wù)器。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,通過zookeeper同步日志服務(wù)器的狀態(tài)信息,包括: 連接zookeeper,獲取zookeeper的日志服務(wù)器目錄,其中,所述日志服務(wù)器目錄包括日志服務(wù)器列表和日志服務(wù)器的優(yōu)先級值; 監(jiān)控zookeeper的日志服務(wù)器目錄; 如果zook^per的日志服務(wù)器目錄發(fā)生變化,則更新自身保存的日志服務(wù)器列表和/或日志服務(wù)器的優(yōu)先級值。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,根據(jù)日志服務(wù)器的狀態(tài)信息確定日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針的數(shù)組,包括: 從zookeeper中獲取日志服務(wù)器列表和各個日志服務(wù)器的優(yōu)先級值; 計算日志服務(wù)器列表中各個日志服務(wù)器的優(yōu)先級值的總和; 申請一個大小為所述日志服務(wù)器的優(yōu)先級值的總和的數(shù)組的空間; 根據(jù)日志服務(wù)器的優(yōu)先級值隨機向數(shù)組放入日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,以輪詢數(shù)組的方式確定為所述日志分配的日志服務(wù)器的指針,包括: 通過計數(shù)器對接收到的日志進行計數(shù); 通過下式計算為所述日志分配的日志服務(wù)器的指針位于數(shù)組中的位置: ind = index % Ien 其中,ind為日志服務(wù)器指針位于數(shù)組中的位置,index為計數(shù)器的計數(shù),Ien為日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針的數(shù)組的數(shù)組長度,%表示求余; 根據(jù)日志服務(wù)器的指針位于數(shù)組中的位置確定為所述日志分配的日志服務(wù)器的指針。
5.根據(jù)權(quán)利要求1-4任一項所述的方法,其特征在于,還包括: 日志服務(wù)器啟動日志服務(wù)程序,連接zookeeper ; zookeeper在zookeeper的日志服務(wù)器節(jié)點中建立所述日志服務(wù)器的非持久化節(jié)點,并設(shè)置所述日志服務(wù)器的優(yōu)先級值。
6.根據(jù)權(quán)利要求1-4任一項所述的方法,其特征在于,還包括: 當日志服務(wù)器磁盤滿或有問題時,通過zookeeper將該磁盤滿或有問題的日志服務(wù)器的優(yōu)先級設(shè)置為O ; 該磁盤滿或有問題的日志服務(wù)器關(guān)閉日志服務(wù)程序。
7.一種日志收集集群負載均衡的裝置,其特征在于,所述裝置包括: 同步模塊,用于通過zookeeper同步日志服務(wù)器的狀態(tài)信息; 第一確定模塊,用于根據(jù)日志服務(wù)器的狀態(tài)信息確定日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針的數(shù)組;接收模塊,用于接收日志客戶端發(fā)送來的日志; 第二確定模塊,用于以輪詢數(shù)組的方式確定為所述日志分配的日志服務(wù)器的指針; 轉(zhuǎn)發(fā)模塊,用于將所述日志轉(zhuǎn)發(fā)到所述第二確定模塊確定的為所述日志分配的日志服務(wù)器的指針所指向的日志服務(wù)器。
8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述同步模塊包括: 連接子模塊,用于連接zookeeper,獲取zookeeper的日志服務(wù)器目錄,其中,所述日志服務(wù)器目錄包括日志服務(wù)器列表和日志服務(wù)器的優(yōu)先級值; 監(jiān)控子模塊,用于監(jiān)控zookeeper的日志服務(wù)器目錄; 更新子模塊,用于如果zook^per的日志服務(wù)器目錄發(fā)生變化,則更新自身保存的日志服務(wù)器列表和/或日志服務(wù)器的優(yōu)先級值。
9.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述第一確定模塊包括: 獲取子模塊,用于從zookeeper中獲取日志服務(wù)器列表和各個日志服務(wù)器的優(yōu)先級值; 第一計算子模 塊,用于計算日志服務(wù)器列表中各個日志服務(wù)器的優(yōu)先級值的總和;申請子模塊,用于申請一個大小為所述日志服務(wù)器的優(yōu)先級值的總和的數(shù)組的空間;存儲子模塊,用于根據(jù)日志服務(wù)器的優(yōu)先級值隨機向數(shù)組放入日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針。
10.根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述第二確定模塊包括: 計數(shù)子模塊,用于通過計數(shù)器對接收到的日志進行計數(shù); 第二計算子模塊,用于通過下式計算為所述日志分配的日志服務(wù)器的指針位于數(shù)組中的位置:
ind = index% Ien 其中,ind為日志服務(wù)器指針位于數(shù)組中的位置,index為計數(shù)器的計數(shù),Ien為日志服務(wù)器數(shù)據(jù)結(jié)構(gòu)的指針的數(shù)組的數(shù)組長度,%表示求余; 確定子模塊,用于根據(jù)日志服務(wù)器的指針位于數(shù)組中的位置確定為所述日志分配的日志服務(wù)器的指針。
11.根據(jù)權(quán)利要求7-10任一項所述的裝置,其特征在于,還包括: 啟動模塊,配置于日志服務(wù)器中,用于啟動日志服務(wù)程序,連接zookeeper; 建立模塊,配置于zookeeper中,用于在zookeeper的日志服務(wù)器節(jié)點中建立所述日志服務(wù)器的非持久化節(jié)點,并設(shè)置所述日志服務(wù)器的優(yōu)先級值。
12.根據(jù)權(quán)利要求7-10任一項所述的裝置,其特征在于,還包括: 設(shè)置模塊,配置于zookeeper中,用于當日志服務(wù)器磁盤滿或有問題時,將該磁盤滿或有問題的日志服務(wù)器的優(yōu)先級設(shè)置為O ; 關(guān)閉模塊,配置于日志服務(wù)器中,用于關(guān)閉日志服務(wù)程序。
【文檔編號】H04L29/08GK104023083SQ201410284585
【公開日】2014年9月3日 申請日期:2014年6月23日 優(yōu)先權(quán)日:2014年6月23日
【發(fā)明者】何作祥, 李坤祥, 黃衍博 申請人:廣東睿江科技有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
工布江达县| 肃南| 上高县| 堆龙德庆县| 无极县| 湾仔区| 邯郸市| 海盐县| 皋兰县| 崇文区| 太仓市| 章丘市| 潜江市| 夏津县| 高安市| 寻乌县| 南和县| 彩票| 平阳县| 通道| 东平县| 理塘县| 禹州市| 博白县| 文山县| 额尔古纳市| 措勤县| 汪清县| 芜湖市| 扎囊县| 玉林市| 巫山县| 酒泉市| 丰城市| 卢龙县| 眉山市| 灵山县| 嵩明县| 渭源县| 巴林左旗| 越西县|