精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

分庫分表中間件的高可用實踐

運維 數據庫運維
分庫分表中間件在我們一年多的錘煉下,基本解決了可用性和高性能的問題(只能說基本,肯定還有隱藏的坑要填),問題自然而然的就聚焦于高可用。本文就闡述了我們在這方面做出的一些工作。

[[398180]]

前言

分庫分表中間件在我們一年多的錘煉下,基本解決了可用性和高性能的問題(只能說基本,肯定還有隱藏的坑要填),問題自然而然的就聚焦于高可用。本文就闡述了我們在這方面做出的一些工作。

哪些高可用的問題

作為一個無狀態的中間件,高可用問題并沒有那么困難。但是盡量減少不可用期間的流量損失,還是需要一定的工作的。這些流量損失主要分布在:

  • (1)某臺中間件所在的物理機突然宕機。
  • (2)中間件的升級和發布。

由于我們的中間件是作為數據庫的代理提供給應用的,即應用把我們的中間件當做數據庫,如下圖所示:

所以出現上述問題后,業務上很難通過重試等操作去屏蔽這些影響。這就勢必需要我們在底層做一些操作,能夠自動的感知中間件的狀態從而有效避免流量的損失。

中間件所在物理機宕機的情況

物理機宕機其實是一種常見現象,這時候應用一瞬間就沒了響應。那么跑在上面的sql肯定也是失敗了的(準確來說是未知狀態,除非重新查詢后端數據庫,應用無法得知準確的狀態)。這部分流量我們肯定是無法挽救。我們所做的是在client端(Druid數據源)能夠快速的發現并剔除宕機的中間件節點。

發現并剔除不可用節點

通過心跳去發現不可用節點

自然而然的我們通過心跳來探查后端中間件的存活狀態。我們通過定時創建一個新連接ping(mysql的ping)一下然后立馬關閉來做心跳(這種做法便于我們區分正常流量和心跳流量,如果通過保持一個連接然后一直發送類似select ‘1’的sql這種方式的話區分流量會稍微麻煩點)。

為了防止網絡抖動造成的偶發性connect失敗,我們在三次connect都失敗后才判定某臺中間件處于不可用狀態。而這三次的探活卻延長了錯誤感知時間,所以我們三次connect的時間間隔是指數級衰減的,如下圖所示:

為何不在第一次connect失敗后,連續發送兩次connect呢?可能考慮到網絡的抖動可能會有一個時間窗口,如果在時間窗口內連續發了3次,出了這個時間窗口網絡又okay了,那么會錯誤的發現后端某節點不可用了,所以我們就做了指數級衰減的折衷。

通過錯誤計數去發現不可用節點

上述的心跳感知始終有一個時間窗口,當流量很大的時候,在這個時間窗口內使用這個不可用節點的都會失敗,所以我們可以使用錯誤計數去輔助不可用節點的感知(當然這個手段的實現還在計劃中)。

這邊有一個注意的點是,只能通過創建連接異常來計數,并不能通過read timeout之類的來計算。原因是,read timeout異??赡苁锹齭ql或者后端數據庫的問題導致,只有創建連接異常才能確定是中間件的問題(connection closed也可能是后端關閉了這個連接,并不代表整體不可用),如下圖所示:

一個請求使用若干個連接導致的問題

由于我們需要保證事務盡可能小,所以在一個請求里面多條sql并不使用同一個連接。在非事務(auto-commit)情況下,運行多少條sql就從連接池里面取出多少連接,并放回。保證事務小是非常重要的,但是這在中間件宕機的時候會導致一些問題,如下圖所示:

如上圖所示,在故障發現窗口期中(即還沒有確定某臺中間件不可用時),數據源是隨機選擇連接的。而這個連接就有一定1/N(N為中間件個數)的概率命中不可用中間件導致一條sql失敗進而導致整個請求失敗。我們做一個計算:

假設N為8,一個請求有20條sql,

那么在這個期間每個請求失敗的概率就為(1-(7/8)的20次方)=0.93,

即有93%的概率會失敗!

更為甚者,整個應用集群都會經歷這個階段,即每臺應用都有93%的概率失敗。

一臺中間件宕機導致整個服務在十幾秒內基本所有請求基本都失敗,這是不可忍受的。

采用sticky數據源解決問題

由于我們不能瞬間發現并確認中間件不可用,所以這個故障發現窗口肯定存在(當然,錯誤計數法會在很大程度上縮短發現時間)。但理想狀況下,宕機一臺,只損失1/N的流量就好了。我們采用了sticky數據源解決了這個問題,使得在概率上大致只損失1/N的流量,如下圖所示:

而配合錯誤計數的話,總流量的損失會更小(因為故障窗口短)

如上圖所示,只有在故障時間內隨機選擇到中間件2(不可用)的請求才會失敗,再讓我們看下整個應用集群的情況。

只有sticky到中間件2的請求流量才有損失,由于是隨機選擇,所以這個流量的損失應用在1/N。

中間件升級發布過程中的高可用

分庫分表中間件的升級發布不可避免。例如bug fix以及新功能添加等都需要重啟中間件。而重啟的時間也會導致不可用,與物理機宕機的情況相比是其不可用的時間點是可知的,重啟的動作也是可控的,那么我們就可以利用這些信息去做到流量的平滑無損。

讓client端感知即將下線

在筆者所知的很多做法中,讓client端感知下線是引入一個第三方協調者(例如zookeeper/etcd)。而我們并不想引入第三方的組件去做這個操作,因為這又會引入zookeeper的高可用問題,而且會讓client端的配置更加復雜。平滑無損的大致思路(狀態機)如下圖所示:

讓心跳流量感知下線而正常流量保持

我們可以復用之前client端檢測不可用的邏輯,即讓心跳的新建連接失敗,而正常請求的新建連接成功。這樣,client端就會認為Server不可用,而在內部剔除調這個server。由于我們只是模擬不可用,所以已經建立的連接和正常新建的連接(非心跳)都是正??捎玫?,如下圖所示:

心跳連接的創建在server端可以通過其第一條執行的是mysql的ping而正常流量第一條執行的是一條sql來區分(當然我們采用的Druid連接池在新建連接成功以后也會ping一下,所以采用了另一種方式區分,這個細節在這里就不闡述了)。

三次心跳失敗后,client端判定Server1失敗,需要將連接到server1的連接銷毀。其思路是,業務層用完連接返回連接池的時候,直接給close掉(當然這個是簡單的描述,實際操作到Druid數據源也是有細微的差別的)。

由于配置了一個connection最長保持時間,所以在這個時間之后肯定會對Server1的連接數為0

由于線上流量也不低,這個收斂時間是比較快的(進一步的做法,其實是主動去銷毀,不過我們尚未做這個操作)。

如何判定下線Server再也沒有流量

在上述小心翼翼的操作之后,在Server1下線的過程中,是不會有流量損失的。但是我們在Server端還需要判定何時不會再有新的流量,這個判定標準即是Server1沒有任何一個client端的連接。

這也是上面我們在執行完sql后銷毀連接從而可以讓連接數變為0的原因,如下圖所示:

當連接數為0后,我們就可以重新發布Server1(分庫分表中間件)了。對于這一點,我們寫了個腳本,其偽代碼如下所示:

  1. while(true){ 
  2.     count =`netstat -anp | grep port | grep ESTABLISHED | wc -l` 
  3.     if(0 == count){ 
  4.         // 流量已經為0,關掉服務器 
  5.         kill Server 
  6.         // 發布升級服務器 
  7.         public Server 
  8.         break 
  9.     }else
  10.         Sleep(30s) 
  11.     } 

將這個腳本接入發布平臺,即可進行滾動式上下線了。

現在可以解釋下recover_time為何要較長了,因為新建連接也會導致腳本計算出來的 connection count數量增加,所以需要一個時間窗口不去建立心跳,從而能讓這個腳本順利運行。

recover_time其實是非必要的

如果我們將心跳創建的端口號和正常流量的端口號分開,是不需要recover_time的,如下圖所示:

圖片

采用這種方案的話,會在很大程度上降低我們client端代碼的復雜度。

但是這樣無疑又給client端增加了一個新的配置,對使用人員就又多了一個負擔,還得在網絡上多一次開墻的操作,所以我們采取了recover_time的方案。

中間件的啟動順序問題

前面的過程是一個優雅下線的過程,但我們發現我們的中間件才上線的時候在某些情況下也不會優雅。即在中間件啟動時候,如果對后端數據庫剛建立的連接建立上去后由于某些原因斷開了,會導致中間件的reactor線程卡住一分鐘左右,這段時間無法服務,造成流量損失。所以我們在后端數據庫連接全部創建成功后,再啟動reactor的accept線程從而接收新的流量,從而解決這一問題,如下圖所示:

總結

筆者個人感覺高可用比高性能還要復雜。因為高性能可以在線下反復的去壓測,通過壓測的數據去分析瓶頸,提高性能。而高可用需要應付線上各種千奇百怪的現象,本篇博客講述的高可用方案只是我們工作的一小部分,還有很大一部分精力是處理中間件本身的問題上。但只要不放過任何一個點,將問題都能夠分析清楚并解決,就會讓系統越來越好。

本文轉載自微信公眾號「解Bug之路」,可以通過以下二維碼關注。轉載本文請聯系解Bug之路公眾號。

 

責任編輯:武曉燕 來源: 解Bug之路
相關推薦

2023-03-10 18:20:07

客戶端開源中間件

2022-09-21 16:09:28

消息中間件

2019-11-12 09:54:20

分庫分表數據

2020-11-06 15:30:23

分庫分表Sharding-JD數據庫

2022-09-03 18:00:05

消息中間件MQ

2023-09-26 00:45:11

MySQL拆表分片

2024-07-26 00:16:11

2019-01-29 14:55:50

數據庫中間件分庫分表

2020-04-10 17:00:33

Mycat分庫分表SpringBoot

2016-11-11 21:00:46

中間件

2011-05-24 15:10:48

2021-02-11 08:21:02

中間件開發CRUD

2010-04-13 10:37:47

核高基中間件

2018-07-29 12:27:30

云中間件云計算API

2018-02-01 10:19:22

中間件服務器系統

2018-05-02 16:23:24

中間件RPC容器

2013-03-13 10:37:22

中間件Windows

2015-02-07 21:52:45

PaaS中間件

2023-01-11 21:11:37

RabbitMQRocketMQ消息中間件

2024-03-28 12:55:00

消息中間件RocketMQ
點贊
收藏

51CTO技術棧公眾號

亚洲日本无吗高清不卡| 日韩欧美激情在线| 欧美18视频| 成人免费一区二区三区| 91精品动漫在线观看| 欧美videossexotv100| 凹凸国产熟女精品视频| 色网站免费在线观看| 国产·精品毛片| 国产999精品久久久| 午夜剧场免费在线观看| 精品午夜电影| 欧美另类高清zo欧美| 成人精品视频在线播放| 国产福利在线观看| 国产精品一二三四| 国产精品草莓在线免费观看| 2025国产精品自拍| 久久不见久久见免费视频7| 7777精品伊人久久久大香线蕉经典版下载| 欧美视频免费看欧美视频| 国产中文字幕在线播放| 成人自拍视频在线| 成人有码视频在线播放| 中文在线第一页| 欧美女激情福利| 日韩中文第一页| 懂色av粉嫩av蜜乳av| 在线免费观看亚洲| 91久久免费观看| 久久视频这里有精品| 日本在线观看免费| 国产无一区二区| 精品国产综合久久| www日本高清| 理论电影国产精品| 国产精品91久久久| 欧美一级片免费在线观看| 51精产品一区一区三区| 在线精品播放av| 亚洲成人网在线播放| 凹凸av导航大全精品| 欧美精品三级在线观看| www黄色av| 筱崎爱全乳无删减在线观看| 亚洲亚洲人成综合网络| 400部精品国偷自产在线观看 | 亚洲一区自拍| 久久久久一本一区二区青青蜜月| 国产精品成人免费观看| 99精品电影| www.欧美精品一二三区| www中文在线| 欧美电影免费播放| 日韩在线精品一区| 国产麻豆a毛片| 久久亚洲精品中文字幕蜜潮电影| 亚洲欧洲激情在线| 小早川怜子久久精品中文字幕| 天堂99x99es久久精品免费| 亚洲电影天堂av| 喷水视频在线观看| 欧美91在线| 日韩高清有码在线| 国产男男chinese网站| 蜜臀久久99精品久久一区二区| 日韩精品极品在线观看播放免费视频| aaaa黄色片| 伊人久久大香线蕉综合网蜜芽| 亚洲欧美日韩精品久久亚洲区| 天天躁日日躁aaaxxⅹ | 无码毛片aaa在线| av香蕉成人| 亚洲一区二区三区视频在线播放| 99久久国产综合精品五月天喷水| 操人在线观看| 91国产成人在线| 亚洲美女性囗交| 精品欧美视频| 亚洲精品动漫久久久久| 成人片黄网站色大片免费毛片| 国产亚洲精品美女久久久久久久久久| 伊人久久久久久久久久久| 欧美日韩国产黄色| 一区二区三区毛片免费| 久久人人爽人人爽人人片av高清| 亚洲午夜18毛片在线看| 热久久国产精品| 亚洲综合中文字幕68页| 五十路在线观看| 国产日韩影视精品| 先锋影音男人资源| 色在线中文字幕| 欧美日韩国产系列| 亚洲色图欧美日韩| 欧美美女一区| 欧美极品美女视频网站在线观看免费| 69成人免费视频| 国产一区欧美日韩| 蜜桃视频成人| 福利在线视频网站| 欧美性生交大片免网| 九九精品久久久| 红杏aⅴ成人免费视频| 永久555www成人免费| 麻豆亚洲av成人无码久久精品| 久久久久国产精品一区三寸| 91久久精品美女| 蜜桃免费在线| 亚洲综合视频网| 黄色永久免费网站| 亚洲激情播播| 欧美精品电影免费在线观看| 午夜一级黄色片| caoporm超碰国产精品| 在线观看福利一区| 丝袜老师在线| 欧美成人aa大片| 国产精品18在线| 美女久久一区| 精品视频一区在线| caopo在线| 欧美群妇大交群中文字幕| 波多野结衣 在线| 韩国在线视频一区| 亚洲xxx自由成熟| 91精品大全| 色嗨嗨av一区二区三区| 国产无套精品一区二区三区| 四季av一区二区凹凸精品| 日本成熟性欧美| 少妇精品视频一区二区| 亚洲精品国产第一综合99久久| 91人人澡人人爽人人精品| 国产在线播放精品| 欧美精品国产精品日韩精品| 国产精品免费无遮挡| 亚洲国产精品黑人久久久| 黑人糟蹋人妻hd中文字幕| 国产成人精品亚洲线观看| 成人97在线观看视频| 一道本无吗一区| 国产精品欧美精品| 美女黄色片视频| 奇米色欧美一区二区三区| 欧美一级淫片丝袜脚交| 五月婷婷综合久久| 欧美日韩黄色大片| 一级国产黄色片| 99视频一区| 久久久久久国产精品一区| a级片免费在线观看| 日韩免费电影一区| 国产精品99无码一区二区| 国产aⅴ精品一区二区三区色成熟| xxxxxx在线观看| 日韩激情欧美| 国内免费精品永久在线视频| 欧美自拍偷拍第一页| 性久久久久久久| 超碰97人人干| 欧美a一区二区| 亚洲高清精品中出| 国产精品18| 欧美日韩成人在线视频| 好吊视频一二三区| 欧美日韩国产在线播放| 精品欧美一区二区久久久| 欧美aⅴ一区二区三区视频| 国产日韩视频在线播放| 久久一级大片| 午夜精品美女自拍福到在线| 日本一级在线观看| 欧洲精品在线观看| 亚洲欧美综合7777色婷婷| 国内精品国产三级国产a久久| 国产一级片91| 亚州精品视频| 国产精品综合不卡av| 污视频在线看网站| 日韩国产精品视频| 在线观看中文字幕av| 亚洲激情在线播放| 亚洲精品视频大全| 久久黄色级2电影| 欧美这里只有精品| 国产精品片aa在线观看| 成人久久久久久久| 久热在线观看视频| 最近2019免费中文字幕视频三| 精品人妻一区二区三区换脸明星| 五月综合激情网| 欧美激情 一区| 成人在线视频一区二区| 免费国产成人av| 欧美精品不卡| 五月婷婷一区| 国产欧美自拍一区| 国产欧美日韩精品丝袜高跟鞋| sm在线观看| 中文字幕亚洲欧美一区二区三区 | 伊人情人网综合| 久久亚洲黄色| 成人在线一区二区| 都市激情亚洲一区| 欧美激情极品视频| 成年人视频免费在线观看| 欧美成va人片在线观看| 无码人妻精品一区二区三区9厂| 亚洲免费电影在线| 最新中文字幕av| 成人免费三级在线| 91精品国产三级| 日本网站在线观看一区二区三区 | 国产精品无码无卡无需播放器| 国产成人高清在线| 孩娇小videos精品| 六月天综合网| 99热亚洲精品| 午夜精品免费| 一本久道久久综合狠狠爱亚洲精品| 日韩一级电影| 国产精品一区二区三区观看| 国产精品1区| 91久久精品在线| 国产成人福利夜色影视| 欧美又大又硬又粗bbbbb| 国产一级做a爱免费视频| 久久日一线二线三线suv| 国产精品欧美性爱| 蜜臀av性久久久久av蜜臀妖精| 亚洲精品久久久久久久蜜桃臀| 久久性感美女视频| 深田咏美在线x99av| 丝袜美腿综合| 久久riav二区三区| 超碰cao国产精品一区二区| 国产综合色香蕉精品| 日本综合视频| 国产成人在线视频| 色戒汤唯在线观看| 69av在线视频| 黄色漫画在线免费看| 久久久久久久久久国产| 欧美xxxx免费虐| 欧美理论片在线观看| 激情影院在线观看| 久久精品中文字幕免费mv| 999在线视频| 中文字幕亚洲一区在线观看| 国产高清视频在线观看| 一区二区三区 在线观看视| 国产在线观看精品一区| 亚洲最大在线视频| 成人在线播放视频| 综合网中文字幕| 久久精品视频观看| 萌白酱国产一区二区| 影音先锋男人在线资源| 久久艹在线视频| 日韩激情美女| 亚洲 日韩 国产第一| 国产理论在线| 国产91在线播放九色快色| 最新欧美色图| 国产精品亚洲自拍| 99久久久成人国产精品| 91影院未满十八岁禁止入内| 国产福利一区二区精品秒拍| 精品视频高清无人区区二区三区| 女人av一区| 亚洲一区综合| 国内精品99| 91黄色小网站| 精品综合免费视频观看| 免费观看黄网站| 99re成人在线| 国产传媒视频在线| 亚洲最新在线观看| 青青草免费观看视频| 欧美三片在线视频观看| 国产三级视频在线播放| 亚洲第一中文字幕在线观看| 麻豆av电影在线观看| 色婷婷综合成人av| 免费看电影在线| 国产福利精品在线| 国色天香久久精品国产一区| 国产美女精品久久久| 国产探花一区二区| 色呦呦网站入口| 亚洲在线网站| 自拍一级黄色片| 久久综合九色综合97婷婷| 国产精品成人在线视频| 艳妇臀荡乳欲伦亚洲一区| 69视频免费看| 精品久久久久久久久久久院品网 | 蜜乳av一区二区| 成人做爰www看视频软件| 中文字幕欧美三区| 99精品视频99| 欧美一级二级三级蜜桃| 视频午夜在线| 免费91在线视频| 亚洲成av在线| 国产精品有限公司| 婷婷久久一区| 成人在线激情网| 成人看片黄a免费看在线| 日韩精品电影一区二区三区| 亚洲成人av中文| 99久久精品免费看国产交换| 亚洲天堂久久av| 第一福利在线视频| 亚洲一区中文字幕| 日韩片欧美片| 国产成人精品无码播放| 成人黄色777网| 91视频免费在线看| 欧美日韩综合在线| 毛片免费在线观看| 欧美亚洲成人精品| 国产极品模特精品一二| 中文字幕色一区二区| 日本怡春院一区二区| 国产精品揄拍100视频| 亚洲一区二区三区四区在线免费观看 | 国产91在线播放精品91| 欧美aaaaa级| 大西瓜av在线| 国产福利91精品| 农村妇女精品一区二区| 欧美日韩国产综合久久 | 亚洲视频一起| 中国黄色录像片| 精品一区二区免费视频| 欧美巨胸大乳hitomi| 91黄色免费版| 韩日视频在线| 国产成人在线亚洲欧美| 激情婷婷综合| 亚洲少妇久久久| 亚洲国产精品v| 在线播放一级片| 综合国产在线视频| 在线观看欧美| 丰满人妻一区二区三区53号| 国产一区二区电影| 全程偷拍露脸中年夫妇| 91精品国产91久久综合桃花| 久操视频在线播放| 亚洲最大福利视频| 国内精品久久久久久久影视麻豆| 韩国三级在线看| 亚洲大片精品永久免费| 人人妻人人澡人人爽人人欧美一区| 欧美精品激情视频| 天堂俺去俺来也www久久婷婷| 精品国产免费av| 欧美激情在线一区二区| 亚洲天堂2021av| 久久躁狠狠躁夜夜爽| 天堂av一区| 无码精品a∨在线观看中文| 久久综合av免费| 中文字幕网址在线| 久久精品视频在线| 亚洲国产中文在线| 国产肥臀一区二区福利视频| 久久免费的精品国产v∧| 黄色一级视频免费看| 日韩在线免费观看视频| 日韩欧洲国产| 国产 福利 在线| 中文av一区二区| 亚洲av色香蕉一区二区三区| 97色在线观看免费视频| gogogo高清在线观看一区二区| 在线观看免费av网址| 亚洲综合视频网| 国产在线日本| 成人午夜影院在线观看| 亚洲欧美日本日韩| 黄色录像免费观看| 亚洲国产日韩欧美在线99| 国产另类xxxxhd高清| 亚洲成人动漫在线| 91麻豆精品一区二区三区| 中文字字幕在线观看| 欧美黄色片视频| 欧美精品一区二区三区中文字幕| 日韩欧美色视频| 日韩欧美视频一区二区三区| 成人在线免费看黄| 农村寡妇一区二区三区| 国产一区二区福利视频| 免费视频网站在线观看入口| 欧美高清视频在线观看| 精品美女视频|