成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

高質(zhì)量的MySQL服務(wù)

IT那活兒 / 3494人閱讀
高質(zhì)量的MySQL服務(wù)


一、何謂高質(zhì)量的MySQL服務(wù)


伴隨互聯(lián)網(wǎng)的高速發(fā)展,對業(yè)務(wù)系統(tǒng)的能力要求也越來越高,做為底層提供數(shù)據(jù)服務(wù)的MySQL數(shù)據(jù)庫更是如此;基本的MySQL集群模式雖提供了高可用、高并發(fā)的服務(wù)能力,但突然的高并發(fā),或流量并沒被業(yè)務(wù)架構(gòu)層層過濾,最終過載的流量流向數(shù)據(jù)庫,這時MySQL的服務(wù)能力就會降低,甚至雪崩。

高質(zhì)量的MySQL服務(wù)就是時時提供高可用、高效、高穩(wěn)定的能力,杜絕雪崩產(chǎn)生。


二、服務(wù)高質(zhì)量實(shí)現(xiàn)


本文采用限流、超時SQL攔截的手段來保證MySQL服務(wù)的高質(zhì)量,但MySQL數(shù)據(jù)庫本身或現(xiàn)有集群模式并沒提供這種能力。因此需設(shè)計(jì)一個數(shù)據(jù)庫中間件來提供這種能力,事前杜絕這些隱患,保證后端MySQL服務(wù)的高質(zhì)量。下圖為數(shù)據(jù)庫中間件產(chǎn)品的主要功用模塊,簡單說明以下幾個:

1)SQL解析器:對客戶端發(fā)來的sql語句進(jìn)行解析處理,以便進(jìn)行sql的路由操作。

2)SQL攔截器:對耗時超過閥值的SQL進(jìn)行攔截,直接返回錯誤,不再路由至后端MySQL數(shù)據(jù)庫。

3)SQL路由器:對解析后的sql語句,依據(jù)讀寫分隔、分片配置信息,轉(zhuǎn)發(fā)至相應(yīng)后端MySQL節(jié)點(diǎn)。

4)限流器:限制后端MySQL節(jié)點(diǎn)的QPS能力,降低突增流量帶來的影響。


    2.1 限流

限流的方式有很多種,以下為目前常見的限流方式:

  • 通過限制單位時間段內(nèi)調(diào)用量來限流

  • 通過限制系統(tǒng)的并發(fā)調(diào)用程度來限流

  • 使用漏桶(Leaky Bucket)算法來進(jìn)行限流

  • 使用令牌桶(Token Bucket)算法來進(jìn)行限流

    令牌桶算法

本產(chǎn)品采用令牌桶算法進(jìn)行業(yè)務(wù)的限流,下面簡單介紹下令牌桶算法

1)以固定頻率往桶中添加令牌,如果桶滿,則丟棄

2)請求到來時,從桶中取N個令牌

3)如果桶中現(xiàn)有令牌數(shù)>=N,則執(zhí)行請求,并銷毀N個令牌

4)如果桶中現(xiàn)有令牌數(shù)

    程序?qū)崿F(xiàn)邏輯

首先程序?qū)崿F(xiàn)一個令牌桶算法模塊,以MySQL最大QPS為頻率向桶中添加令牌,以后每個數(shù)據(jù)庫請求都需訪問該模塊,以判讀該請求是否可以執(zhí)行。

1)初始化N個令牌桶

后端有多少M(fèi)ySQL節(jié)點(diǎn),則初始化多少個令牌桶,并與節(jié)點(diǎn)綁定。以相應(yīng)節(jié)點(diǎn)最大QPS為頻率,即1/QPS秒向桶中添加一個令牌

2)令牌請求

客戶端請求的SQL經(jīng)過解析后,由SQL路由器轉(zhuǎn)發(fā)至某一個后端MySQL節(jié)點(diǎn)時,請求相應(yīng)令牌桶中的令牌,請求滿足,則執(zhí)行相應(yīng)SQL

3)令牌不足

如果請求不滿足,則把SQL放入相應(yīng)節(jié)點(diǎn)隊(duì)列中等待,直到有令牌滿足或隊(duì)列滿時直接返回錯誤。


    2.2 超時SQL攔截

超時SQL攔截的意思是,耗時的SQL語句直接返回錯誤,不再路由轉(zhuǎn)發(fā)至后端節(jié)點(diǎn);當(dāng)某類sql運(yùn)行時長超過閥值,并達(dá)到一定次數(shù)后,記錄下該類sql的id,下次再有這類sql請求時,中間件直接攔截并返回錯誤。

程序?qū)崿F(xiàn)這種邏輯的方法有很多種,比如使用map結(jié)構(gòu),以sql的id做為key,或者以數(shù)組方式記錄下超時sql的id,但這類方式占用內(nèi)存較高,并且效率很低;再比如使用redis數(shù)據(jù)庫,以sql_id做為key來緩存這些數(shù)據(jù),雖說redis效率比較高,但每次sql請求都要訪問一次,總體來說效率還是比較低的。

本產(chǎn)品以降低內(nèi)存使用、提高效率為目的,采用的是位圖算法。

    位圖算法(bitmap)

在一個結(jié)構(gòu)中,用一個比特位來描述一個數(shù)據(jù)的狀態(tài),這種結(jié)構(gòu)就稱為位圖。位圖實(shí)際上是哈希表的一種變形,它的主要使用場景為:

  • 大數(shù)據(jù)濾重

  • 大數(shù)據(jù)查詢、定位

  • 大數(shù)據(jù)排序

它的主要優(yōu)點(diǎn)為:

  • 節(jié)省內(nèi)存

  • 位操作,效率更快

程序?qū)崿F(xiàn)邏輯

程序?qū)崿F(xiàn)一個位圖模塊,主要有設(shè)置(set)、查詢(get)、清除(clear)sqlid等方法。

1)初始化位圖模塊

初始化一個容量為2^20的byte數(shù)組為bitmap,占用內(nèi)存128K,可記錄百萬類SQL

2)SQL請求過濾

每個SQL請求到來時,生成該類sql的數(shù)字標(biāo)識符id,用該id與bitmap進(jìn)行位與運(yùn)算,如果為0,則執(zhí)行sql,否則直接返回。

3)SQL請求超時

如果sql運(yùn)行時長超過閥值,并達(dá)到固定次數(shù)后,用該sqlid 與bitmap進(jìn)行位或運(yùn)算,以達(dá)到在bitmap中記錄的目錄。

4)超時SQL入庫

超時sql異步入庫,以達(dá)到后期優(yōu)化處理的目的。


 三、 總  結(jié) 


本文以限流、超時SQL攔截兩個手段來達(dá)到提高M(jìn)ySQL服務(wù)質(zhì)量的目的。限流是為了攔截突增流量,保證Mysql服務(wù)的穩(wěn)定;超時SQL攔截是為了提高M(jìn)ySQL服務(wù)效率,減低MySQL服務(wù)器資源使用率。


END


文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/129977.html

相關(guān)文章

  • MySQL創(chuàng)立者:云計(jì)算必須建在開源之上

    摘要:創(chuàng)立者云計(jì)算必須建在開源之上的成功是歸功于全世界成千上萬的傳道者開創(chuàng)開源公司新的盈利模式于年加入,擔(dān)任。云計(jì)算潛力的發(fā)揮,必須建立在開源之上在公司任職期間,看到云計(jì)算將成為一種新的計(jì)算趨勢。 云計(jì)算,IT行業(yè)最熱門的技術(shù)之一,開源云計(jì)算則被認(rèn)為IT的發(fā)展趨勢。Marten Mickos,作為開源數(shù)據(jù)庫MySQL創(chuàng)立者、開源云計(jì)算平臺Eucalyptus(桉樹)公司CEO,除被稱為開源軟件...

    VishKozus 評論0 收藏0
  • MySQL入門教程 - 收藏集 - 掘金

    摘要:數(shù)據(jù)庫數(shù)據(jù)庫入門教程系列工具掘金工具共同編輯,修正錯誤,這里點(diǎn)擊進(jìn)去在這里持續(xù)更新由于軟件是基于模式的數(shù)據(jù)庫管理系統(tǒng)一個客戶機(jī)服務(wù)器,因此在日常各種工作中,可以通過各種客戶端軟件來與數(shù)據(jù)庫管理系統(tǒng)關(guān)聯(lián)。 MySQL入門教程系列-1.5 如何學(xué)習(xí)MySQL - 掘金 在這里持續(xù)更新 MySQL入門教程系列-1.5 如何學(xué)習(xí)MySQL 如何學(xué)習(xí) MySQL 這是一個偽命題,每個人都有適合自...

    張利勇 評論0 收藏0
  • Sonar 安裝使用推薦

    摘要:安裝使用文檔代碼質(zhì)量相信是每個團(tuán)隊(duì)的最高追求之一,質(zhì)量高的團(tuán)隊(duì),開發(fā)成本維護(hù)成本都很低同樣人數(shù)的團(tuán)隊(duì),一年內(nèi)高質(zhì)量團(tuán)隊(duì)是低質(zhì)量團(tuán)隊(duì)產(chǎn)出的倍打個比方,一個團(tuán)隊(duì)開發(fā)完產(chǎn)品,行代碼出一個和行代碼一個的團(tuán)隊(duì)。 SonarQube Scanner 安裝使用文檔 代碼質(zhì)量相信是每個團(tuán)隊(duì)的最高追求之一,質(zhì)量高的團(tuán)隊(duì),開發(fā)成本、維護(hù)成本都很低;同樣人數(shù)的團(tuán)隊(duì),一年內(nèi)高質(zhì)量團(tuán)隊(duì)是低質(zhì)量團(tuán)隊(duì)產(chǎn)出的10倍;...

    lily_wang 評論0 收藏0

發(fā)表評論

0條評論

IT那活兒

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<