国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種時(shí)序數(shù)據(jù)庫的集群化方法及系統(tǒng)與流程

      文檔序號:12596486閱讀:223來源:國知局
      一種時(shí)序數(shù)據(jù)庫的集群化方法及系統(tǒng)與流程

      本發(fā)明涉及數(shù)據(jù)庫領(lǐng)域,更具體的說,涉及一種時(shí)序數(shù)據(jù)庫的集群化方法及系統(tǒng)。



      背景技術(shù):

      隨著云計(jì)算大數(shù)據(jù)的不斷發(fā)展,用戶對數(shù)據(jù)的高可用、資源彈性擴(kuò)容、規(guī)??蔁o限擴(kuò)展等需求越來越強(qiáng)烈。另一方面,目前數(shù)據(jù)庫領(lǐng)域的大多數(shù)產(chǎn)品,如mysql、influxdb等,其單機(jī)版本在生產(chǎn)環(huán)境中已經(jīng)經(jīng)受過檢驗(yàn),表現(xiàn)出了良好的穩(wěn)定性,但是卻一直沒有很好的集群化版本或方案,導(dǎo)致使用規(guī)模往往被限制在單臺機(jī)器的負(fù)載能力上,無法很好的擴(kuò)展。

      提高現(xiàn)有數(shù)據(jù)庫的橫向擴(kuò)展能力,使其擁有高可用、無限擴(kuò)展、彈性擴(kuò)容、自動容災(zāi)等能力,是亟待解決的問題。而解決這些問題的一個(gè)基本方法,就是將單機(jī)實(shí)例集群化。集群化就是將多個(gè)單機(jī)實(shí)例通過一定的組織方式聯(lián)合起來,使多個(gè)實(shí)例可以協(xié)作完成用戶的請求,從而提供用戶更高的擴(kuò)展性和負(fù)載。但是在解決集群化過程中還會遇到數(shù)據(jù)容災(zāi)等問題。



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

      本發(fā)明所要解決的技術(shù)問題是提供一種提供數(shù)據(jù)容災(zāi)的時(shí)序數(shù)據(jù)庫的集群化方法及系統(tǒng)。

      本發(fā)明的目的是通過以下技術(shù)方案來實(shí)現(xiàn)的:

      一種時(shí)序數(shù)據(jù)庫的集群化方法,包括步驟:

      將多個(gè)時(shí)序數(shù)據(jù)庫構(gòu)建為一個(gè)組;

      一個(gè)組負(fù)責(zé)一個(gè)時(shí)間段的數(shù)據(jù)寫入與查詢請求;

      一個(gè)組或多個(gè)組連接起來構(gòu)成一個(gè)鏈;

      以鏈為單元處理數(shù)據(jù)寫入與查詢請求;

      將所有的鏈統(tǒng)一管理;

      根據(jù)時(shí)序數(shù)據(jù)庫狀態(tài)將一個(gè)新的組加入到鏈中,并將寫入請求切換到新的組上。

      進(jìn)一步的,根據(jù)資源使用情況將鏈設(shè)置為共享或獨(dú)占。彈性擴(kuò)容,用戶可以根據(jù)實(shí)際需求,選擇與他人共享資源或者獨(dú)占資源。

      進(jìn)一步的,將多個(gè)時(shí)序數(shù)據(jù)庫構(gòu)建為一個(gè)組包括:

      同組的多個(gè)時(shí)序數(shù)據(jù)庫實(shí)例部署在不同的服務(wù)器上、同組的實(shí)例網(wǎng)絡(luò)訪問速度相當(dāng)、同組的實(shí)例磁盤存儲空間相當(dāng)、同組的時(shí)序數(shù)據(jù)庫實(shí)例各自保存一份完整的用戶數(shù)據(jù)和一個(gè)時(shí)序數(shù)據(jù)庫實(shí)例僅被一個(gè)組選中中的至少一項(xiàng)。

      有利于數(shù)據(jù)的安全和調(diào)用,有利于資源的合理分配和充分應(yīng)用,提高整體的反應(yīng)速度。

      進(jìn)一步的,一個(gè)組負(fù)責(zé)一個(gè)時(shí)間段的數(shù)據(jù)寫入與查詢請求包括:

      組有一個(gè)時(shí)間范圍、組根據(jù)寫入的數(shù)據(jù)點(diǎn)和/或時(shí)間戳接收寫入、同組的所有實(shí)例都寫入數(shù)據(jù)、查詢數(shù)據(jù)的范圍會被縮小至該組的范圍之內(nèi)和通過查詢同組的任意實(shí)例實(shí)現(xiàn)查詢數(shù)據(jù)中的至少一項(xiàng)。

      可以更方便的管理數(shù)據(jù),查找更方便。查詢的范圍會被縮小至該組的范圍之內(nèi),其中即查詢的起始時(shí)間和組的起始時(shí)間相比取一個(gè)更晚的時(shí)間,而查詢范圍的結(jié)束時(shí)間和組的結(jié)束時(shí)間相比,取一個(gè)更早的時(shí)間;

      進(jìn)一步的,一個(gè)組或多個(gè)組連接起來構(gòu)成一個(gè)鏈包括:

      同一個(gè)鏈中的組按時(shí)間順序前后緊密銜接,前一個(gè)組的結(jié)束時(shí)間與其后的組的起始時(shí)間相同;

      根據(jù)組的磁盤用量進(jìn)行組切換動作;

      鏈中的任意兩個(gè)組彼此之間互相獨(dú)立。

      鏈中的兩個(gè)連接的組按時(shí)間連接更緊密,任意兩個(gè)組彼此之間互相獨(dú)立,方便數(shù)據(jù)查找和寫入。

      進(jìn)一步的,組切換動作包括:

      鏈中加入一個(gè)新的組,以切換時(shí)的當(dāng)前時(shí)間為界,決定上一個(gè)組的結(jié)束時(shí)間以及新的組的開始時(shí)間。

      切換以時(shí)間為界更加安全準(zhǔn)確。

      進(jìn)一步的,根據(jù)時(shí)序數(shù)據(jù)庫狀態(tài)將一個(gè)新的組加入到鏈中,并將寫入請求切換到新的組上包括:

      選擇一個(gè)新的組,且該組當(dāng)前狀態(tài)沒有被任何鏈引用;

      將鏈中最后一個(gè)組的結(jié)束時(shí)間與鏈中將要加入的新組的開始時(shí)間設(shè)置為相同;

      將請求根據(jù)時(shí)間戳導(dǎo)向新的組。

      進(jìn)一步的,以鏈為單元處理用戶的數(shù)據(jù)寫入與查詢請求包括:

      根據(jù)寫入數(shù)據(jù)請求的時(shí)間戳寫入鏈中對應(yīng)時(shí)間范圍的組;

      根據(jù)查詢請求的查詢的時(shí)間范圍,從涉及到的組中查詢數(shù)據(jù)并歸并后返回。

      寫入和查詢更加方便快捷,數(shù)據(jù)更加安全。

      進(jìn)一步的,將所有的鏈統(tǒng)一管理包括:

      多個(gè)用戶使用多個(gè)的鏈或共享同一個(gè)鏈;

      一個(gè)用戶有一個(gè)或多個(gè)鏈;

      任意兩個(gè)鏈之間彼此隔離。

      進(jìn)一步的,根據(jù)資源使用情況將鏈設(shè)置為共享或獨(dú)占包括:

      根據(jù)資源使用情況將鏈從共享切換成獨(dú)占;或根據(jù)資源使用情況將鏈從獨(dú)占切換成共享。

      本發(fā)明的另一優(yōu)選方案,一種時(shí)序數(shù)據(jù)庫集群化系統(tǒng),包括:

      信息收集模塊,用于收集不同機(jī)器上的時(shí)序數(shù)據(jù)庫實(shí)例信息;

      組調(diào)度模塊,用于將不同的時(shí)序數(shù)據(jù)庫實(shí)例組合成多個(gè)組,將組與組鏈接形成鏈,并分配資源,記錄時(shí)序數(shù)據(jù)庫實(shí)例的狀態(tài);

      元數(shù)據(jù)管理模塊,用于記錄用戶數(shù)據(jù)與時(shí)序數(shù)據(jù)庫鏈的對應(yīng)關(guān)系;

      用戶請求處理模塊,用于通過查看元數(shù)據(jù)管理模塊,獲取用戶數(shù)據(jù)與時(shí)序數(shù)據(jù)庫對應(yīng)關(guān)系,并到對應(yīng)組寫入或查詢數(shù)據(jù);

      添加模塊,用于為鏈添加新組,并進(jìn)行組切換。

      進(jìn)一步的,組調(diào)度模塊包括:

      組成模塊,用于從不同服務(wù)器上選取網(wǎng)絡(luò)傳輸速率相當(dāng)、磁盤剩余空間相當(dāng)?shù)?、且沒有被其他組引用的時(shí)序數(shù)據(jù)庫實(shí)例組成一個(gè)組;

      檢測模塊,用于檢測實(shí)例狀態(tài),當(dāng)組中某個(gè)實(shí)例出現(xiàn)故障時(shí),處理用戶請求時(shí)排除該實(shí)例,當(dāng)某個(gè)組所有實(shí)例均不可用時(shí)進(jìn)行組切換;

      鏈分裂模塊,用于將原有的鏈分裂為兩條或多條鏈,其中包括獨(dú)占一條或多條鏈資源的新鏈和原有的舊鏈;

      鏈合并模塊,用于將多條鏈合并為一條鏈。

      進(jìn)一步的,元數(shù)據(jù)管理模塊包括:

      定位模塊,用于定位訪問對應(yīng)的具體時(shí)序數(shù)據(jù)庫實(shí)例;

      更新模塊,用于資源改變時(shí)更新元數(shù)據(jù)。

      進(jìn)一步的,用戶請求處理模塊包括:

      寫入請求模塊,用于響應(yīng)寫入請求,根據(jù)元數(shù)據(jù)管理模塊查找到對應(yīng)的鏈,并根據(jù)時(shí)間戳寫入到對應(yīng)鏈的對應(yīng)組,寫入對應(yīng)鏈的所有實(shí)例后發(fā)送成功信息;

      查詢請求模塊,用于響應(yīng)查詢請求,根據(jù)元數(shù)據(jù)管理模塊查找到對應(yīng)的鏈,根據(jù)查詢的范圍找到涉及的組,將查詢范圍縮小至各個(gè)組的范圍,再去各個(gè)組分別執(zhí)行查詢,并將結(jié)果匯總發(fā)送完整的查詢結(jié)果。

      本發(fā)明由于根據(jù)時(shí)序數(shù)據(jù)庫狀態(tài)將一個(gè)新的組加入到鏈中,并將寫入請求切換到新的組上,當(dāng)實(shí)際進(jìn)行負(fù)載的組出現(xiàn)故障時(shí),系統(tǒng)可以自動切換到新的組,實(shí)現(xiàn)自動容災(zāi),當(dāng)用戶的磁盤用量快滿時(shí),可以通過切換組的方式,將用戶的請求導(dǎo)入到別的組,從而使磁盤用量沒有上限,無限擴(kuò)展,多個(gè)時(shí)序數(shù)據(jù)庫構(gòu)建為一個(gè)組,當(dāng)集群中一個(gè)時(shí)序數(shù)據(jù)庫實(shí)例出現(xiàn)故障時(shí),并不會影響用戶的使用,可用由其他實(shí)例來承擔(dān)負(fù)載。

      附圖說明

      圖1是本發(fā)明實(shí)施例的一種時(shí)序數(shù)據(jù)庫的集群化方法示意圖;

      圖2是本發(fā)明實(shí)施例的組切換流程圖;

      圖3是本發(fā)明實(shí)施例的鏈分裂前示意圖;

      圖4是本發(fā)明實(shí)施例的鏈分裂示意圖;

      圖5是本發(fā)明實(shí)施例的數(shù)據(jù)流示意圖。

      具體實(shí)施方式

      在更加詳細(xì)地討論示例性實(shí)施例之前應(yīng)當(dāng)提到的是,一些示例性實(shí)施例被描述成作為流程圖描繪的處理或方法。雖然流程圖將各項(xiàng)操作描述成順序的處理,但是其中的許多操作可以被并行地、并發(fā)地或者同時(shí)實(shí)施。此外,各項(xiàng)操作的順序可以被重新安排。當(dāng)其操作完成時(shí)所述處理可以被終止,但是還可以具有未包括在附圖中的附加步驟。所述處理可以對應(yīng)于方法、函數(shù)、規(guī)程、子例程、子程序等等。

      在上下文中所稱“計(jì)算機(jī)設(shè)備”,也稱為“電腦”,是指可以通過運(yùn)行預(yù)定程序或指令來執(zhí)行數(shù)值計(jì)算和/或邏輯計(jì)算等預(yù)定處理過程的智能電子設(shè)備,其可以包括處理器與存儲器,由處理器執(zhí)行在存儲器中預(yù)存的存續(xù)指令來執(zhí)行預(yù)定處理過程,或是由ASIC、FPGA、DSP等硬件執(zhí)行預(yù)定處理過程,或是由上述二者組合來實(shí)現(xiàn)。計(jì)算機(jī)設(shè)備包括但不限于服務(wù)器、個(gè)人電腦、筆記本電腦、平板電腦、智能手機(jī)等。

      所述計(jì)算機(jī)設(shè)備包括用戶設(shè)備與網(wǎng)絡(luò)設(shè)備。其中,所述用戶設(shè)備或客戶端包括但不限于電腦、智能手機(jī)、PDA等;所述網(wǎng)絡(luò)設(shè)備包括但不限于單個(gè)網(wǎng)絡(luò)服務(wù)器、多個(gè)網(wǎng)絡(luò)服務(wù)器組成的服務(wù)器組或基于云計(jì)算(Cloud Computing)的由大量計(jì)算機(jī)或網(wǎng)絡(luò)服務(wù)器構(gòu)成的云,其中,云計(jì)算是分布式計(jì)算的一種,由一群松散耦合的計(jì)算機(jī)集組成的一個(gè)超級虛擬計(jì)算機(jī)。其中,所述計(jì)算機(jī)設(shè)備可單獨(dú)運(yùn)行來實(shí)現(xiàn)本發(fā)明,也可接入網(wǎng)絡(luò)并通過與網(wǎng)絡(luò)中的其他計(jì)算機(jī)設(shè)備的交互操作來實(shí)現(xiàn)本發(fā)明。其中,所述計(jì)算機(jī)設(shè)備所處的網(wǎng)絡(luò)包括但不限于互聯(lián)網(wǎng)、廣域網(wǎng)、城域網(wǎng)、局域網(wǎng)、VPN網(wǎng)絡(luò)等

      需要說明的是,所述用戶設(shè)備、客戶端、網(wǎng)絡(luò)設(shè)備和網(wǎng)絡(luò)等僅為舉例,其他現(xiàn)有的或今后可能出現(xiàn)的計(jì)算機(jī)設(shè)備或網(wǎng)絡(luò)如可適用于本發(fā)明,也應(yīng)包含在本發(fā)明保護(hù)范圍以內(nèi),并以引用方式包含于此。

      后面所討論的方法(其中一些通過流程圖示出)可以通過硬件、軟件、固件、中間件、微代碼、硬件描述語言或者其任意組合來實(shí)施。當(dāng)用軟件、固件、中間件或微代碼來實(shí)施時(shí),用以實(shí)施必要任務(wù)的程序代碼或代碼段可以被存儲在機(jī)器或計(jì)算機(jī)可讀介質(zhì)(比如存儲介質(zhì))中。(一個(gè)或多個(gè))處理器可以實(shí)施必要的任務(wù)。

      這里所公開的具體結(jié)構(gòu)和功能細(xì)節(jié)僅僅是代表性的,并且是用于描述本發(fā)明的示例性實(shí)施例的目的。但是本發(fā)明可以通過許多替換形式來具體實(shí)現(xiàn),并且不應(yīng)當(dāng)被解釋成僅僅受限于這里所闡述的實(shí)施例。

      應(yīng)當(dāng)理解的是,雖然在這里可能使用了術(shù)語“第一”、“第二”等等來描述各個(gè)單元,但是這些單元不應(yīng)當(dāng)受這些術(shù)語限制。使用這些術(shù)語僅僅是為了將一個(gè)單元與另一個(gè)單元進(jìn)行區(qū)分。舉例來說,在不背離示例性實(shí)施例的范圍的情況下,第一單元可以被稱為第二單元,并且類似地第二單元可以被稱為第一單元。這里所使用的術(shù)語“和/或”包括其中一個(gè)或更多所列出的相關(guān)聯(lián)項(xiàng)目的任意和所有組合。

      應(yīng)當(dāng)理解的是,當(dāng)一個(gè)單元被稱為“連接”或“耦合”到另一單元時(shí),其可以直接連接或耦合到所述另一單元,或者可以存在中間單元。與此相對,當(dāng)一個(gè)單元被稱為“直接連接”或“直接耦合”到另一單元時(shí),則不存在中間單元。應(yīng)當(dāng)按照類似的方式來解釋被用于描述單元之間的關(guān)系的其他詞語(例如“處于...之間”相比于“直接處于...之間”,“與...鄰近”相比于“與...直接鄰近”等等)。

      這里所使用的術(shù)語僅僅是為了描述具體實(shí)施例而不意圖限制示例性實(shí)施例。除非上下文明確地另有所指,否則這里所使用的單數(shù)形式“一個(gè)”、“一項(xiàng)”還意圖包括復(fù)數(shù)。還應(yīng)當(dāng)理解的是,這里所使用的術(shù)語“包括”和/或“包含”規(guī)定所陳述的特征、整數(shù)、步驟、操作、單元和/或組件的存在,而不排除存在或添加一個(gè)或更多其他特征、整數(shù)、步驟、操作、單元、組件和/或其組合。

      還應(yīng)當(dāng)提到的是,在一些替換實(shí)現(xiàn)方式中,所提到的功能/動作可以按照不同于附圖中標(biāo)示的順序發(fā)生。舉例來說,取決于所涉及的功能/動作,相繼示出的兩幅圖實(shí)際上可以基本上同時(shí)執(zhí)行或者有時(shí)可以按照相反的順序來執(zhí)行。

      下面結(jié)合附圖和較佳的實(shí)施例對本發(fā)明作進(jìn)一步說明。

      如圖1所示,一種時(shí)序數(shù)據(jù)庫的集群化方法,包括步驟:

      S1:將多個(gè)時(shí)序數(shù)據(jù)庫構(gòu)建為一個(gè)組;

      S2:一個(gè)組負(fù)責(zé)一個(gè)時(shí)間段的數(shù)據(jù)寫入與查詢請求;

      S3:一個(gè)組或多個(gè)組連接起來構(gòu)成一個(gè)鏈;

      S4:以鏈為單元處理數(shù)據(jù)寫入與查詢請求;

      S5:將所有的鏈統(tǒng)一管理;

      S6:根據(jù)時(shí)序數(shù)據(jù)庫狀態(tài)將一個(gè)新的組加入到鏈中,并將寫入請求切換到新的組上。

      由于根據(jù)時(shí)序數(shù)據(jù)庫狀態(tài)將一個(gè)新的組加入到鏈中,并將寫入請求切換到新的組上,當(dāng)實(shí)際進(jìn)行負(fù)載的組出現(xiàn)故障時(shí),系統(tǒng)可以自動切換到新的組,實(shí)現(xiàn)自動容災(zāi),當(dāng)用戶的磁盤用量快滿時(shí),可以通過切換組的方式,將用戶的請求導(dǎo)入到別的組,從而使磁盤用量沒有上限,無限擴(kuò)展,多個(gè)時(shí)序數(shù)據(jù)庫構(gòu)建為一個(gè)組,當(dāng)集群中一個(gè)時(shí)序數(shù)據(jù)庫實(shí)例出現(xiàn)故障時(shí),并不會影響用戶的使用,可用由其他實(shí)例來承擔(dān)負(fù)載。

      其中,根據(jù)資源使用情況將鏈設(shè)置為共享或獨(dú)占。彈性擴(kuò)容,用戶可以根據(jù)實(shí)際需求,選擇與他人共享資源或者獨(dú)占資源。

      其中,將多個(gè)時(shí)序數(shù)據(jù)庫構(gòu)建為一個(gè)組包括:

      同組的多個(gè)時(shí)序數(shù)據(jù)庫實(shí)例部署在不同的服務(wù)器上、同組的實(shí)例網(wǎng)絡(luò)訪問速度相當(dāng)、同組的實(shí)例磁盤存儲空間相當(dāng)、同組的時(shí)序數(shù)據(jù)庫實(shí)例各自保存一份完整的用戶數(shù)據(jù)和一個(gè)時(shí)序數(shù)據(jù)庫實(shí)例僅被一個(gè)組選中中的至少一項(xiàng)。有利于數(shù)據(jù)的安全和調(diào)用,有利于資源的合理分配和充分應(yīng)用,提高整體的反應(yīng)速度。將多個(gè)時(shí)序數(shù)據(jù)庫構(gòu)建為一個(gè)組,構(gòu)建時(shí)保證:將同組的多個(gè)時(shí)序數(shù)據(jù)庫實(shí)例部署在不同的服務(wù)器上;為同組的實(shí)例選擇網(wǎng)絡(luò)訪問速度相當(dāng)?shù)膶?shí)例構(gòu)建為同一個(gè)組;為同組的實(shí)例選擇磁盤存儲空間相當(dāng)?shù)膶?shí)例構(gòu)建為同一個(gè)組;同組的時(shí)序數(shù)據(jù)庫實(shí)例各自保存一份完整的用戶數(shù)據(jù);被選中的時(shí)序數(shù)據(jù)庫實(shí)例不能再被別的組選中。

      其中,一個(gè)組負(fù)責(zé)一個(gè)時(shí)間段的數(shù)據(jù)寫入與查詢請求包括:

      組有一個(gè)時(shí)間范圍、組根據(jù)寫入的數(shù)據(jù)點(diǎn)和/或時(shí)間戳接收寫入、同組的所有實(shí)例都寫入數(shù)據(jù)、查詢數(shù)據(jù)的范圍會被縮小至該組的范圍之內(nèi)和通過查詢同組的任意實(shí)例實(shí)現(xiàn)查詢數(shù)據(jù)中的至少一項(xiàng)。

      可以更方便的管理數(shù)據(jù),查找更方便。構(gòu)建的每個(gè)組負(fù)責(zé)一個(gè)特定時(shí)間段的數(shù)據(jù)寫入與查詢請求:每個(gè)組都有一個(gè)時(shí)間范圍,通過起始時(shí)間和結(jié)束時(shí)間來約束;當(dāng)用戶寫入的數(shù)據(jù)點(diǎn),時(shí)間戳屬于該組的時(shí)間范圍才接受,否則拒絕寫入;當(dāng)用戶寫入數(shù)據(jù)時(shí),同組的所有實(shí)例都寫入成功才算該組寫入成功;當(dāng)用戶查詢數(shù)據(jù)時(shí),查詢的范圍會被縮小至該組的范圍之內(nèi),即查詢的起始時(shí)間和組的起始時(shí)間相比取一個(gè)更晚的時(shí)間,而查詢范圍的結(jié)束時(shí)間和組的結(jié)束時(shí)間相比,取一個(gè)更早的時(shí)間;當(dāng)用戶查詢到同組的任意實(shí)例時(shí),一旦查詢一個(gè)實(shí)例成功,便認(rèn)為成功。

      其中,一個(gè)組或多個(gè)組連接起來構(gòu)成一個(gè)鏈包括:

      同一個(gè)鏈中的組按時(shí)間順序前后緊密銜接,前一個(gè)組的結(jié)束時(shí)間與其后的組的起始時(shí)間相同;

      根據(jù)組的磁盤用量進(jìn)行組切換動作;

      鏈中的任意兩個(gè)組彼此之間互相獨(dú)立。

      鏈中的兩個(gè)連接的組按時(shí)間連接更緊密,任意兩個(gè)組彼此之間互相獨(dú)立,方便數(shù)據(jù)查找和寫入。

      其中,組切換動作包括:

      鏈中加入一個(gè)新的組,以切換時(shí)的當(dāng)前時(shí)間為界,決定上一個(gè)組的結(jié)束時(shí)間以及新的組的開始時(shí)間。

      切換以時(shí)間為界更加安全準(zhǔn)確。將實(shí)例組與組之間根據(jù)時(shí)間順序進(jìn)行銜接,多個(gè)組連接起來構(gòu)成一個(gè)鏈:同一個(gè)鏈中的組按時(shí)間順序前后緊密銜接,前一個(gè)組的結(jié)束時(shí)間與其后的組的起始時(shí)間相同;當(dāng)一個(gè)組的磁盤用量快要耗盡時(shí),可以進(jìn)行組切換動作,此時(shí)鏈中會多加入一個(gè)組,以切換時(shí)的當(dāng)前時(shí)間為界,決定上一個(gè)組的結(jié)束時(shí)間以及新的組的開始時(shí)間;鏈中的所有組,彼此之間互相獨(dú)立,互不影響,資源隔離。

      其中,根據(jù)時(shí)序數(shù)據(jù)庫狀態(tài)將一個(gè)新的組加入到鏈中,并將寫入請求切換到新的組上包括:

      選擇一個(gè)新的組,且該組當(dāng)前狀態(tài)沒有被任何鏈引用;

      將鏈中最后一個(gè)組的結(jié)束時(shí)間與鏈中將要加入的新組的開始時(shí)間設(shè)置為相同;

      將請求根據(jù)時(shí)間戳導(dǎo)向新的組。

      其中,以鏈為單元處理用戶的數(shù)據(jù)寫入與查詢請求包括:

      根據(jù)寫入數(shù)據(jù)請求的時(shí)間戳寫入鏈中對應(yīng)時(shí)間范圍的組;

      根據(jù)查詢請求的查詢的時(shí)間范圍,從涉及到的組中查詢數(shù)據(jù)并歸并后返回。

      寫入和查詢更加方便快捷,數(shù)據(jù)更加安全。以鏈為單元處理用戶的數(shù)據(jù)寫入與查詢請求:用戶寫入數(shù)據(jù)的請求,根據(jù)時(shí)間戳寫入鏈中對應(yīng)時(shí)間范圍的組;用戶的查詢請求,根據(jù)查詢的時(shí)間范圍,從涉及到的組中查詢數(shù)據(jù)并歸并后返回給用戶。

      其中,將所有的鏈統(tǒng)一管理包括:

      多個(gè)用戶使用多個(gè)的鏈或共享同一個(gè)鏈;

      一個(gè)用戶有一個(gè)或多個(gè)鏈;

      任意兩個(gè)鏈之間彼此隔離。

      其中,根據(jù)資源使用情況將鏈設(shè)置為共享或獨(dú)占包括:

      根據(jù)資源使用情況將鏈從共享切換成獨(dú)占;或根據(jù)資源使用情況將鏈從獨(dú)占切換成共享。

      將所有的鏈統(tǒng)一管理起來為用戶分配資源:用戶可以在資源不足或?yàn)榱斯收匣謴?fù),快速將一個(gè)新的實(shí)例組加入到鏈中,并將所有寫入請求切換到新的組上;根據(jù)資源使用情況,用戶之間可以共享同一個(gè)鏈,也可以獨(dú)占一個(gè)鏈。

      本實(shí)施例的一種時(shí)序數(shù)據(jù)庫的集群化方法提高時(shí)序數(shù)據(jù)庫的高可用能力,提高數(shù)據(jù)庫的橫向擴(kuò)展能力,擁有高可用、無限擴(kuò)展、彈性擴(kuò)容、自動容災(zāi)等能力。將多個(gè)單機(jī)實(shí)例通過一定的組織方式聯(lián)合起來,使多個(gè)實(shí)例可以協(xié)作完成用戶的請求,從而提供用戶更高的擴(kuò)展性和負(fù)載。

      本實(shí)施例的有益效果:

      高可用:當(dāng)集群中一個(gè)時(shí)序數(shù)據(jù)庫實(shí)例出現(xiàn)故障時(shí),并不會影響用戶的使用,可用由其他實(shí)例來承擔(dān)負(fù)載;

      無限擴(kuò)展:當(dāng)用戶的磁盤用量快滿時(shí),可以通過切換組的方式,將用戶的請求導(dǎo)入到別的組,從而使磁盤用量沒有上限;

      彈性擴(kuò)容:用戶可以根據(jù)實(shí)際需求,選擇與他人共享資源或者獨(dú)占資源,并可以自由選擇修改共享與獨(dú)占;

      自動容災(zāi):當(dāng)實(shí)際進(jìn)行負(fù)載的組出現(xiàn)故障時(shí),系統(tǒng)可以自動切換到新的組,實(shí)現(xiàn)自動容災(zāi)。

      具體的,以influxdb作為被集群化的時(shí)序數(shù)據(jù)庫實(shí)例作為依據(jù),一個(gè)具體但非限制性的實(shí)施方案,可以分為如下幾個(gè)步驟:

      首先需要將多個(gè)influxdb部署在多個(gè)不同的服務(wù)器上,然后在每個(gè)機(jī)器安裝一個(gè)代理服務(wù),獲取不同服務(wù)器上influxdb的IP、端口、磁盤剩余空間、網(wǎng)絡(luò)訪問延遲等信息,上報(bào)給組調(diào)度模塊并記錄。

      調(diào)度模塊獲得上報(bào)信息后,將磁盤用量、網(wǎng)絡(luò)寫入延遲數(shù)值上最相近、并且擁有不同IP的幾個(gè)構(gòu)建為一個(gè)組,用戶寫入的數(shù)據(jù),同組的每個(gè)實(shí)例都保存完整的一份。

      當(dāng)用戶需要使用時(shí)序數(shù)據(jù)庫服務(wù)時(shí),為用戶分配一個(gè)資源空閑的鏈,當(dāng)鏈不存在時(shí),創(chuàng)建一個(gè)時(shí)序數(shù)據(jù)庫鏈,并選擇一個(gè)空閑的組加入鏈中,鏈的初始狀態(tài)只有一個(gè)組,當(dāng)然也可以初始狀態(tài)有多個(gè)組。

      元數(shù)據(jù)管理模塊在分配完畢后,記錄下用戶創(chuàng)建的資源所在的鏈。

      當(dāng)用戶有寫入請求時(shí),請求處理模塊從元數(shù)據(jù)管理模塊獲取用戶資源對應(yīng)的鏈信息,按照數(shù)據(jù)時(shí)間戳寫入對應(yīng)組,寫入成功后返回給用戶。

      當(dāng)用戶有查詢請求時(shí),請求處理模塊從元數(shù)據(jù)管理模塊獲取用戶資源所在的鏈,根據(jù)用戶查詢的條件,將查詢語句分解到各個(gè)組去查詢,對于每一個(gè)組,縮小查詢范圍至該組的時(shí)間范圍,隨機(jī)查詢一個(gè)實(shí)例獲取查詢結(jié)果;當(dāng)請求處理模塊獲取鏈中所有涉及到的組的查詢結(jié)果以后,根據(jù)用戶的查詢語句,進(jìn)行歸并,以查詢最大值為例,則在所有返回結(jié)果中找一個(gè)最大值,再返回給用戶。

      當(dāng)用戶數(shù)據(jù)寫入使得磁盤快要存滿時(shí),或者當(dāng)influxdb實(shí)例組出現(xiàn)故障時(shí),可以通過組調(diào)度模塊進(jìn)行組切換操作,此時(shí)的步驟如圖2所示,開始切換時(shí),首先找到空閑的組,將新組加入到鏈中,這一步要將鏈中最后的組結(jié)束時(shí)間設(shè)置為空閑組的開始時(shí)間,然后修改元數(shù)據(jù)表,此時(shí)當(dāng)用戶再有請求時(shí),查詢元數(shù)據(jù)表,新的時(shí)間戳即對應(yīng)新的組,切換完成。

      當(dāng)用戶需要從共享狀態(tài)變?yōu)楠?dú)享狀態(tài)時(shí),可以通過調(diào)度模塊進(jìn)行鏈分裂操作,此時(shí)的步驟如圖3、圖4所示,分裂前是一個(gè)組構(gòu)成的鏈,其中有兩個(gè)用戶的資源,他們是共享的,分別為user1和user2,分裂后,user1獨(dú)占了一組新的資源,user1的鏈構(gòu)成是實(shí)例組1和實(shí)例組3,而user2是原來的共享用戶,他的鏈變?yōu)榱藢?shí)例組1合實(shí)例組2,其中實(shí)例組1合實(shí)例組2使用的influxdb是一樣的,但是邏輯上組已經(jīng)切換了。所以分裂組實(shí)際上是一個(gè)組切換的過程,只是原來的鏈切換后對應(yīng)的influxdb實(shí)例依舊是原來的。切換過后,實(shí)例組3可以設(shè)定其所在的鏈不允許再分配給其他用戶使用,這樣就保證了實(shí)例組3的獨(dú)占。

      當(dāng)用戶需要從獨(dú)占變?yōu)楣蚕頃r(shí),只要重新設(shè)定實(shí)例組3可以被分配給其他用戶使用即可。

      經(jīng)過鏈切換后,舊有的數(shù)據(jù)實(shí)際依舊在原來的influxdb實(shí)例中,不影響用戶使用,也不會出現(xiàn)大規(guī)模數(shù)據(jù)的遷移。

      整個(gè)架構(gòu)實(shí)施完畢后,如圖5所示,當(dāng)用戶請求到達(dá)時(shí),首先發(fā)送到用戶請求處理模塊,然后去元數(shù)據(jù)管理模塊獲得用戶元數(shù)據(jù)對應(yīng)關(guān)系,再從組調(diào)度模塊獲得涉及的鏈和在用戶請求范圍內(nèi)的實(shí)例組,最終在實(shí)例組獲得查詢結(jié)果后一一返回,在用戶請求處理模塊進(jìn)行結(jié)果的歸并后反饋給用戶。

      本發(fā)明的另一優(yōu)選實(shí)施例,一種時(shí)序數(shù)據(jù)庫集群化系統(tǒng),包括:

      信息收集模塊,用于收集不同機(jī)器上的時(shí)序數(shù)據(jù)庫實(shí)例信息;用于收集不同機(jī)器上的時(shí)序數(shù)據(jù)庫實(shí)例信息,收集的信息包括但不限于服務(wù)器上時(shí)序數(shù)據(jù)庫實(shí)例的IP、端口、磁盤剩余空間、網(wǎng)絡(luò)訪問延遲等信息,并定時(shí)發(fā)送更新信息上報(bào)給集群化系統(tǒng)。

      組調(diào)度模塊,用于將不同的時(shí)序數(shù)據(jù)庫實(shí)例組合成多個(gè)組,將組與組鏈接形成鏈,并為用戶分配資源,記錄時(shí)序數(shù)據(jù)庫實(shí)例的狀態(tài);

      元數(shù)據(jù)管理模塊,用于記錄用戶數(shù)據(jù)與時(shí)序數(shù)據(jù)庫鏈的對應(yīng)關(guān)系;

      用戶請求處理模塊,用于通過查看元數(shù)據(jù)管理模塊,獲取用戶數(shù)據(jù)與時(shí)序數(shù)據(jù)庫對應(yīng)關(guān)系,并到對應(yīng)組寫入或查詢數(shù)據(jù);

      添加模塊,用于為鏈添加新組,并進(jìn)行組切換。

      其中,組調(diào)度模塊包括:

      組成模塊,用于從不同服務(wù)器上選取網(wǎng)絡(luò)傳輸速率相當(dāng)、磁盤剩余空間相當(dāng)?shù)摹⑶覜]有被其他組引用的時(shí)序數(shù)據(jù)庫實(shí)例組成一個(gè)組;

      檢測模塊,用于檢測實(shí)例狀態(tài),當(dāng)組中某個(gè)實(shí)例出現(xiàn)故障時(shí),處理用戶請求時(shí)排除該實(shí)例,當(dāng)某個(gè)組所有實(shí)例均不可用時(shí)進(jìn)行組切換;

      鏈分裂模塊,用于將原有的鏈分裂為兩條或多條鏈,其中包括獨(dú)占一條或多條鏈資源的新鏈和原有的舊鏈;

      鏈合并模塊,用于將多條鏈合并為一條鏈。

      其中,元數(shù)據(jù)管理模塊包括:

      定位模塊,用于定位訪問對應(yīng)的具體時(shí)序數(shù)據(jù)庫實(shí)例;

      更新模塊,用于資源改變時(shí)更新元數(shù)據(jù)。

      其中,用戶請求處理模塊包括:

      寫入請求模塊,用于響應(yīng)寫入請求,根據(jù)元數(shù)據(jù)管理模塊查找到對應(yīng)的鏈,并根據(jù)時(shí)間戳寫入到對應(yīng)鏈的對應(yīng)組,寫入對應(yīng)鏈的所有實(shí)例后發(fā)送成功信息;

      查詢請求模塊,用于響應(yīng)查詢請求,根據(jù)元數(shù)據(jù)管理模塊查找到對應(yīng)的鏈,根據(jù)查詢的范圍找到涉及的組,將查詢范圍縮小至各個(gè)組的范圍,再去各個(gè)組分別執(zhí)行查詢,并將結(jié)果匯總發(fā)送完整的查詢結(jié)果。

      本發(fā)明的再一優(yōu)選實(shí)施例,一種時(shí)序數(shù)據(jù)庫集群化系統(tǒng),包括:

      信息收集模塊,用于收集不同機(jī)器上的時(shí)序數(shù)據(jù)庫實(shí)例信息;

      組調(diào)度模塊,用于將不同的時(shí)序數(shù)據(jù)庫實(shí)例組合成多個(gè)組,將組與組鏈接形成鏈,并為用戶分配資源,記錄時(shí)序數(shù)據(jù)庫實(shí)例的狀態(tài);

      元數(shù)據(jù)管理模塊,用于記錄用戶數(shù)據(jù)與時(shí)序數(shù)據(jù)庫鏈的對應(yīng)關(guān)系;對于用戶的訪問,定位其對應(yīng)的具體時(shí)序數(shù)據(jù)庫實(shí)例;

      用戶請求處理模塊,通過查看元數(shù)據(jù)管理模塊,獲取用戶數(shù)據(jù)與時(shí)序數(shù)據(jù)庫對應(yīng)關(guān)系,并到對應(yīng)組寫入或查詢數(shù)據(jù);

      其中,信息收集模塊,還可以用于收集不同機(jī)器上的時(shí)序數(shù)據(jù)庫實(shí)例信息;還用于收集不同機(jī)器上的時(shí)序數(shù)據(jù)庫實(shí)例信息,收集的信息包括但不限于服務(wù)器上時(shí)序數(shù)據(jù)庫實(shí)例的IP、端口、磁盤剩余空間、網(wǎng)絡(luò)訪問延遲等信息,并定時(shí)發(fā)送更新信息上報(bào)給集群化系統(tǒng)。

      其中,組調(diào)度模塊,還可以用于從不同服務(wù)器上選取網(wǎng)絡(luò)傳輸速率相當(dāng)、磁盤剩余空間相當(dāng)?shù)?、且沒有被其他組引用的時(shí)序數(shù)據(jù)庫實(shí)例,組成一個(gè)組;可以為鏈添加新組,并進(jìn)行組切換,如鏈中最后一個(gè)組的磁盤使用量超過規(guī)定的值或組出現(xiàn)服務(wù)故障等情況時(shí);實(shí)例、組狀態(tài)更新,定時(shí)檢測實(shí)例狀態(tài),當(dāng)組中某個(gè)實(shí)例出現(xiàn)故障時(shí),處理用戶請求時(shí)排除該實(shí)例,當(dāng)某個(gè)組所有實(shí)例均不可用時(shí)進(jìn)行組切換;鏈分裂功能,當(dāng)用戶想要獨(dú)占組資源時(shí),可以將原有的鏈分裂為兩條或多條鏈,其中包括想要獨(dú)占一條或多條鏈資源的用戶的新鏈和原有的舊鏈;鏈合并功能,當(dāng)用戶不需要獨(dú)占鏈資源時(shí),可以將多條鏈合并為一條鏈。

      其中,用戶請求處理模塊,還可以用于用戶增刪改資源時(shí),對于元數(shù)據(jù)更新,用戶的寫入請求,根據(jù)元數(shù)據(jù)管理模塊,查找到對應(yīng)的鏈,并根據(jù)時(shí)間戳寫入到對應(yīng)鏈的對應(yīng)組,當(dāng)組的所有實(shí)例都寫入成功后才返回成功;用戶的查詢請求,根據(jù)元數(shù)據(jù)管理模塊,查找到對應(yīng)的鏈,根據(jù)查詢的范圍,找到涉及的組,然后將查詢范圍縮小至各個(gè)組的范圍,再去各個(gè)組分別執(zhí)行查詢,最終將結(jié)果匯總聚合,返回給用戶完整的查詢結(jié)果。

      以上內(nèi)容是結(jié)合具體的優(yōu)選實(shí)施方式對本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍。

      當(dāng)前第1頁1 2 3 
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1