亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

海量日志寫入數(shù)據(jù)庫的方法、裝置和日志容災系統(tǒng)的制作方法

文檔序號:8339613閱讀:841來源:國知局
海量日志寫入數(shù)據(jù)庫的方法、裝置和日志容災系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及數(shù)據(jù)存儲領(lǐng)域,具體涉及海量日志寫入數(shù)據(jù)庫的方法、裝置和日志容災系統(tǒng)。
【背景技術(shù)】
[0002]日志是對用戶在終端或通過終端所進行的一些行為的記錄,這種記錄一旦被保存下來,便可以作為以后查詢、跟蹤和分析的依據(jù)。日志的類型很多,常見的例如網(wǎng)站日志,是記錄Web服務(wù)器接收處理請求以及運行時錯誤等各種原始信息的文件,網(wǎng)站日志最大的意義是記錄網(wǎng)站運營中空間的運營情況和被訪問請求的記錄等內(nèi)容。再如,在電話系統(tǒng)中,每產(chǎn)生一次通話,日志系統(tǒng)將會記錄該通話的雙方號碼、起始時間、產(chǎn)生的話費等,這些內(nèi)容也被稱為日志。類似的還有銀行的存取款記錄和即時通信軟件的登錄記錄等也可以稱為日
O
[0003]產(chǎn)生日志的裝置可以是處理業(yè)務(wù)的終端(例如,ATM機),也可以是處理該業(yè)務(wù)的后臺服務(wù)器(例如,電話交換機和計費服務(wù)器等),而接收和保存日志的服務(wù)器被稱為日志服務(wù)器。日志可以由日志服務(wù)器保存在文件中,也可以通過向數(shù)據(jù)庫寫入日志從而將日志保存在數(shù)據(jù)庫中,其中,后者因為其易管理性而成為主流。
[0004]現(xiàn)有技術(shù)提供的一種將日志寫入數(shù)據(jù)庫的方法是首先將日志產(chǎn)生裝置和日志服務(wù)器分開,即采用專門的日志服務(wù)器來接收和保存日志。日志產(chǎn)生裝置將日志發(fā)送到日志服務(wù)器特定的網(wǎng)絡(luò)端口(通常需要定義內(nèi)部協(xié)議),日志服務(wù)器負責監(jiān)聽特定的網(wǎng)絡(luò)端口,一旦有日志到達,就將日志接收下來,保存到磁盤,其中,保存到磁盤的一種方式是將日志直接插入到數(shù)據(jù)庫,另一種方式先將日志保存到文件,再用數(shù)據(jù)庫插入裝置(inserter)讀取文件內(nèi)容,將日志一次一行地或一次多行地插入到數(shù)據(jù)庫中。
[0005]然而,對于上述現(xiàn)有的將日志寫入數(shù)據(jù)庫的方法,在保存日志時無論采取上述兩種保存方式中的哪一種,都面臨一個重要的問題:磁盤輸入輸出(Input/Output,I/O)的速度趕不上網(wǎng)絡(luò)I/O的速度。在海量日志即日志量很大時會導致日志來不及寫而丟失,嚴重情況下,日志的丟失率可達90%甚至更高。

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

[0006]本發(fā)明實施例提供海量日志寫入數(shù)據(jù)庫的方法、裝置和日志容災系統(tǒng),以在日志產(chǎn)生裝置產(chǎn)生大量日志時減小日志入庫的丟失率。
[0007]本發(fā)明實施例提供一種海量日志寫入數(shù)據(jù)庫的方法,所述方法包括:
[0008]將日志產(chǎn)生裝置生成并通過接口服務(wù)器發(fā)送的日志寫入緩沖區(qū)進行緩存;
[0009]從所述緩沖區(qū)讀取所述日志;
[0010]按照順序?qū)懘疟P的操作方式將所述讀取的日志保存至數(shù)據(jù)庫。
[0011]本發(fā)明另一實施例提供一種海量日志寫入數(shù)據(jù)庫的裝置,所述裝置包括:
[0012]緩存模塊,用于將日志產(chǎn)生裝置生成并通過接口服務(wù)器發(fā)送的日志寫入緩沖區(qū)進行緩存;
[0013]讀取模塊,用于從所述緩沖區(qū)讀取所述日志;
[0014]寫入模塊,用于按照順序?qū)懘疟P的操作方式將所述讀取的日志保存至數(shù)據(jù)庫。
[0015]本發(fā)明另一實施例提供一種日志容災系統(tǒng),所述系統(tǒng)包括接口服務(wù)器、主日志服務(wù)器和備日志服務(wù)器;
[0016]所述接口服務(wù)器,用于將日志產(chǎn)生裝置生成的日志按照同一日志內(nèi)容制作成正本和副本的方式分別發(fā)送至所述主日志服務(wù)器和備日志服務(wù)器;
[0017]所述主日志服務(wù)器或備日志服務(wù)器用于執(zhí)行如下方法步驟:將日志產(chǎn)生裝置生成并通過接口服務(wù)器發(fā)送的日志寫入緩沖區(qū)進行緩存;從所述緩沖區(qū)讀取所述日志;按照順序?qū)懘疟P的操作方式將所述讀取的日志保存至數(shù)據(jù)庫。
[0018]從上述本發(fā)明實施例可知,一方面,由于日志在寫入數(shù)據(jù)前可在緩沖區(qū)進行緩存,由此可以減輕在網(wǎng)絡(luò)I/o速度較大時日志入庫的寫磁盤壓力,另一方面,在從緩沖區(qū)讀取日志后,是按照順序?qū)懘疟P的操作方式將所述讀取的日志保存至數(shù)據(jù)庫,由于順序?qū)懘疟P的速度遠遠大于隨機寫磁盤的速度,因此,本發(fā)明實施例提供的日志入庫時寫磁盤的方式大大提高了日志寫入數(shù)據(jù)庫的速度,減小了由于網(wǎng)絡(luò)I/o速度較大時導致的日志入庫的丟失率。
【附圖說明】
[0019]圖1是本發(fā)明實施例提供的海量日志寫入數(shù)據(jù)庫的方法的基本流程示意圖;
[0020]圖2是本發(fā)明實施例提供的海量日志寫入數(shù)據(jù)庫的裝置邏輯結(jié)構(gòu)示意圖;
[0021]圖3是本發(fā)明另一實施例提供的海量日志寫入數(shù)據(jù)庫的裝置邏輯結(jié)構(gòu)示意圖;
[0022]圖4是本發(fā)明另一實施例提供的海量日志寫入數(shù)據(jù)庫的裝置邏輯結(jié)構(gòu)示意圖;
[0023]圖5_a是本發(fā)明另一實施例提供的海量日志寫入數(shù)據(jù)庫的裝置邏輯結(jié)構(gòu)示意圖;
[0024]圖5_b是本發(fā)明另一實施例提供的海量日志寫入數(shù)據(jù)庫的裝置邏輯結(jié)構(gòu)示意圖;
[0025]圖5-c是本發(fā)明另一實施例提供的海量日志寫入數(shù)據(jù)庫的裝置邏輯結(jié)構(gòu)示意圖;
[0026]圖6是本發(fā)明實施例提供的日志容災系統(tǒng)邏輯結(jié)構(gòu)示意圖;
[0027]圖7是本發(fā)明實施例提供的實現(xiàn)海量日志寫入數(shù)據(jù)庫的系統(tǒng)架構(gòu)圖。
【具體實施方式】
[0028]本發(fā)明實施例提供海量日志寫入數(shù)據(jù)庫的方法,所述方法包括:將日志產(chǎn)生裝置生成并通過接口服務(wù)器發(fā)送的日志寫入緩沖區(qū)進行緩存;從所述緩沖區(qū)讀取所述日志;按照順序?qū)懘疟P的操作方式將所述讀取的日志保存至數(shù)據(jù)庫。本發(fā)明實施例還提供相應(yīng)的海量日志寫入數(shù)據(jù)庫的裝置和日志容災系統(tǒng)。以下分別進行詳細說明。
[0029]本發(fā)明實施例的海量日志寫入數(shù)據(jù)庫的方法可應(yīng)用于日志服務(wù)器,其執(zhí)行主體可以是日志服務(wù)器或者其中的功能模塊。本發(fā)明實施例提供的海量日志寫入數(shù)據(jù)庫的方法的基本流程可參考圖1,主要包括步驟SlOl至步驟S103,詳細說明如下:
[0030]S101,將日志產(chǎn)生裝置生成并通過接口服務(wù)器發(fā)送的日志寫入緩沖區(qū)進行緩存。
[0031]在本發(fā)明實施例中,可以使用共享內(nèi)存實現(xiàn)緩沖區(qū),即本發(fā)明實施例的緩沖區(qū)可以為環(huán)狀緩沖區(qū)。作為本發(fā)明一個實施例,將日志產(chǎn)生裝置生成并通過接口服務(wù)器發(fā)送的日志寫入緩沖區(qū)進行緩存可以是將所述日志產(chǎn)生裝置生成并通過接口服務(wù)器發(fā)送的日志從所述環(huán)狀緩沖區(qū)的尾部寫入所述環(huán)狀緩沖區(qū),即,假設(shè)環(huán)狀緩沖區(qū)大小為K個字節(jié)(byte),其當前的頭部是第H字節(jié),尾部是第T字節(jié),向環(huán)狀緩沖區(qū)寫入日志時,從第(T+1)%K個字節(jié)開始寫,其中,符號“%”表示將T+1與K相除后對結(jié)果取余。也就是說,如果Τ+1=Κ,那么從緩沖區(qū)的第O個字節(jié)開始寫,這樣就實現(xiàn)了環(huán)狀緩沖區(qū)。在本發(fā)明實施例中,環(huán)狀緩沖區(qū)應(yīng)該足夠大,例如,能容納500萬條日志(即假設(shè)每條日志200字節(jié),共需要IG內(nèi)存空間),以免緩沖區(qū)容易溢出,造成日志丟失。
[0032]S102,從緩沖區(qū)讀取日志。
[0033]從緩沖區(qū)讀取日志時,是從環(huán)狀緩沖區(qū)的頭部開始讀取,分為兩種情況,即:若Η+Ν<Κ,則將環(huán)狀緩沖區(qū)的第H字節(jié)至第Η+Ν -1字節(jié)的日志內(nèi)容導出;若Η+Ν彡K,則讀取環(huán)狀緩沖區(qū)的第H字節(jié)至第K 一 I字節(jié)以及第O字節(jié)至第N— I —Κ+Η字節(jié)的日志內(nèi)容,此處,H為所述環(huán)狀緩沖區(qū)當前頭部對應(yīng)的字節(jié)所在的序號,N為單條數(shù)據(jù)所占字節(jié)數(shù),K為所述環(huán)狀緩沖區(qū)的大小,其量綱為字節(jié)(by te )。
[0034]S103,按照順序?qū)懘疟P的操作方式將讀取的日志保存至數(shù)據(jù)庫。
[0035]在本發(fā)明實施例中,按照順序?qū)懘疟P的操作方式將讀取的日志保存至數(shù)據(jù)庫時,是調(diào)用騰訊(Tencent)公司自行研發(fā)的mysql入庫引擎直接向磁盤(這里可以是硬盤)寫數(shù)據(jù),具體地,按照順序?qū)懘疟P的操作方式將讀取的日志保存至數(shù)據(jù)庫包括如下S1031和S1032:
[0036]S1031,以MyIsam格式將讀取的日志寫入數(shù)據(jù)庫所在的磁盤形成MyIsam格式的數(shù)據(jù)庫表。
[0037]MyIsam格式的數(shù)據(jù)庫表(以下將“MyIsam格式的數(shù)據(jù)庫表”簡稱為“MyIsam表”)包括MYD文件、MYI文件和frm文件等三個文件,其中,frm文件存放MyIsam表的結(jié)構(gòu),MYI文件存放MyIsam表的索引以及記錄條數(shù)等相關(guān)信息,MYD文件存放MyIsam表的數(shù)據(jù)。這些文件在沒有索引并且只增加新數(shù)據(jù)的操作的情況下,增加一條新記錄會改變兩個文件=MYD文件會順序增長,MYI文件中的記錄條數(shù)會變化?;谏鲜鯩YD文件和MYI文件的特性、mysql數(shù)據(jù)庫的開源特點、MYD文件、MYI文件以及frm文件的組成格式,本發(fā)明實施例可以MyIsam格式將從環(huán)狀緩沖區(qū)讀取的日志寫入數(shù)據(jù)庫所在的磁盤形成MyIsam格式的數(shù)據(jù)庫表。直接寫磁盤文件生成MyIsam表的方式繞開mysql的入庫接口,繞開了 mysql本身的詞法語法語義分析,可以得到很大的性能優(yōu)化。
[0038]S1032,在寫入新的日志數(shù)據(jù)時從MYD文件的尾部追加數(shù)據(jù)。
[0039]上述MYD文件存放的是MyIsam表數(shù)據(jù),即需要保存到數(shù)據(jù)庫的日志數(shù)據(jù)。MYD文件按照如下方式存儲數(shù)據(jù),即,每一條日志都會保存為一段有一定格式的數(shù)據(jù),每一段數(shù)據(jù)順序保存下去(類似于排隊),如
當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1