朝著微服務(wù)的方向去做一次數(shù)據(jù)庫(kù)拆分

一凿歼、現(xiàn)狀

現(xiàn)狀.png

我們將一個(gè)大而全的系統(tǒng)一拆為三改基,容器既琴,發(fā)布城瞎,測(cè)試都已經(jīng)獨(dú)立出去城榛,但是原始的數(shù)據(jù)庫(kù)還是一套抄沮,現(xiàn)在需要將數(shù)據(jù)庫(kù)做一個(gè)拆分壮池,A峦朗、B禁偎、C三個(gè)系統(tǒng)有各自的數(shù)據(jù)庫(kù)之后荡含,我們的微服務(wù)化在現(xiàn)有部署、測(cè)試等已經(jīng)獨(dú)立的基礎(chǔ)上才算最終完成届垫,形成三個(gè)各自獨(dú)立的單元释液。因此本篇文章敘述的不是數(shù)據(jù)庫(kù)的水平拆分也不是垂直拆分,不是講述分庫(kù)分表装处,而是講述從業(yè)務(wù)系統(tǒng)去拆分?jǐn)?shù)據(jù)庫(kù)误债,把業(yè)務(wù)最終微服務(wù)化。

二妄迁、方法

拆分方案.png

2.1寝蹈、SOA

通過(guò)提供RPC接口,將原先共用的表有一方系統(tǒng)提供接口服務(wù)登淘,另一方系統(tǒng)來(lái)調(diào)用該接口箫老。這種情況下系統(tǒng)之間是解耦了,但是數(shù)據(jù)調(diào)用的時(shí)候一方還是要強(qiáng)依賴另一方黔州。這個(gè)時(shí)候要重新關(guān)注接口服務(wù)方如果down掉或者延時(shí)發(fā)生耍鬓,需要有容錯(cuò)機(jī)制阔籽,比如熔斷、降級(jí)等牲蜀。同時(shí)要考慮好數(shù)據(jù)的托底展示笆制,比如本機(jī)緩存,remote緩存涣达。詳細(xì)可參看《微服務(wù)下的網(wǎng)關(guān)與容錯(cuò)》里面有專項(xiàng)介紹在辆。

2.2、數(shù)據(jù)異構(gòu)

通過(guò)數(shù)據(jù)異構(gòu)的方式度苔,比如B系統(tǒng)與C系統(tǒng)原來(lái)是一張表匆篓,數(shù)據(jù)庫(kù)拆分之后這張表的數(shù)據(jù)放在了C系統(tǒng),但是B系統(tǒng)只需要這張表的部分字段寇窑,這個(gè)時(shí)候可以通過(guò)異構(gòu)平臺(tái)把C系統(tǒng)的表按需異構(gòu)到B系統(tǒng)中的一張表鸦概。這樣兩個(gè)系統(tǒng)之間徹底解耦,各自微服務(wù)化疗认,也沒(méi)有了SOA方式的強(qiáng)依賴問(wèn)題。關(guān)于數(shù)據(jù)異構(gòu)的詳細(xì)介紹可以參看這篇文章
《數(shù)據(jù)異構(gòu)的武器-BINLOG+MQ》

三伏钠、拆庫(kù)的步驟(mysql)

集群A(源庫(kù))
集群B(新搭建)
集群C(新搭建)

DB拆庫(kù)起始位置.png

注意此方案需要停寫(xiě)横漏!

步驟一、搭建集群B熟掂、C
將集群B缎浇、C以從庫(kù)形式掛載到集群A

步驟二、將如下集群A主庫(kù)設(shè)置為只讀模式
192.168.x.x xx.mysql.xxx.com
命令:set global read_only=on;

步驟三赴肚、待從庫(kù)無(wú)延遲后素跺,集群B、C停止復(fù)制誉券,執(zhí)行如下操作
命令:stop slave;
此時(shí)A指厌、B、C三套集群均為只讀模式

步驟四踊跟、研發(fā)人員修改應(yīng)用url指向到正確的數(shù)據(jù)庫(kù)集群踩验,待確認(rèn)無(wú)誤后,(此時(shí)可回退商玫,打開(kāi)寫(xiě)后不可回退)
通知DBA將集群A箕憾、B、C三套打開(kāi)讀寫(xiě)
命令:set global read_only=off;

步驟五拳昌、拆分完成

DB最終位置.png

步驟六
觀察一段時(shí)間后drop冗余表袭异,DBA在復(fù)制的時(shí)候?qū)嶋H上是全量復(fù)制,因此后續(xù)我們需要drop掉各自系統(tǒng)內(nèi)不需要的表炬藤∮澹可以用rename的方式先行標(biāo)出碴里,一段時(shí)間后再drop掉。

===================================================================
回退方案
步驟一畅买、集群B并闲、C打開(kāi)復(fù)制
命令:start slave;
步驟二、打開(kāi)集群A的讀寫(xiě)
命令:set global read_only=on;

四谷羞、SOA和微服務(wù)

SOA面向服務(wù)架構(gòu)帝火,是一種粗粒度、松耦合服務(wù)架構(gòu)湃缎,服務(wù)之間通過(guò)簡(jiǎn)單犀填、精確定義接口進(jìn)行通訊,不涉及底層編程接口和通訊模型嗓违。關(guān)鍵點(diǎn)是接口調(diào)用九巡,這是目前分布式系統(tǒng)中常用的方法。目前開(kāi)源的RPC框架也有很多比如知名的DUBBO服務(wù)等蹂季。

微服務(wù)的重點(diǎn)是業(yè)務(wù)系統(tǒng)要徹底組件化和服務(wù)化冕广,原有的單體應(yīng)用系統(tǒng)會(huì)拆分為多個(gè)可以獨(dú)立開(kāi)發(fā)、運(yùn)行偿洁、部署和運(yùn)維的小應(yīng)用撒汉。這些小的應(yīng)用之間如果需要交互就通過(guò)服務(wù)來(lái)完成,比如提供DUBBO接口服務(wù)涕滋。每個(gè)小應(yīng)用內(nèi)部從前端WEB到業(yè)務(wù)邏輯處理睬辐,到數(shù)據(jù)庫(kù)訪問(wèn),以及數(shù)據(jù)庫(kù)都是獨(dú)立的宾肺。

五溯饵、總結(jié)

業(yè)務(wù)簡(jiǎn)單,團(tuán)隊(duì)組織規(guī)模較小的時(shí)候一個(gè)單體應(yīng)用就可以支持當(dāng)時(shí)的業(yè)務(wù)發(fā)展锨用。隨著業(yè)務(wù)的發(fā)展規(guī)模越來(lái)越大丰刊,過(guò)程中如果技術(shù)架構(gòu)升級(jí)沒(méi)有跟上,就會(huì)面臨后期拆系統(tǒng)增拥,拆庫(kù)的的階段藻三。本篇文章結(jié)合我工作中自身的經(jīng)歷集中對(duì)數(shù)據(jù)庫(kù)的業(yè)務(wù)拆分做了描述,拆庫(kù)的原則以及數(shù)據(jù)庫(kù)新集群的創(chuàng)建方法跪者。對(duì)于拆分棵帽,我們要拆的粒度有多大,或者多小渣玲,沒(méi)有一個(gè)標(biāo)準(zhǔn)逗概,關(guān)于這方面,推薦大家閱讀一本書(shū)《恰如其分的軟件架構(gòu)》忘衍。

轉(zhuǎn)載請(qǐng)注明作者及出處逾苫,并附上鏈接http://www.reibang.com/p/590037e67162

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末卿城,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子铅搓,更是在濱河造成了極大的恐慌瑟押,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,122評(píng)論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件星掰,死亡現(xiàn)場(chǎng)離奇詭異多望,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)氢烘,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,070評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)怀偷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人播玖,你說(shuō)我怎么就攤上這事椎工。” “怎么了蜀踏?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,491評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵维蒙,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我果覆,道長(zhǎng)颅痊,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,636評(píng)論 1 293
  • 正文 為了忘掉前任随静,我火速辦了婚禮八千,結(jié)果婚禮上吗讶,老公的妹妹穿的比我還像新娘燎猛。我一直安慰自己,他們只是感情好照皆,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,676評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布重绷。 她就那樣靜靜地躺著,像睡著了一般膜毁。 火紅的嫁衣襯著肌膚如雪昭卓。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,541評(píng)論 1 305
  • 那天瘟滨,我揣著相機(jī)與錄音候醒,去河邊找鬼。 笑死杂瘸,一個(gè)胖子當(dāng)著我的面吹牛倒淫,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播败玉,決...
    沈念sama閱讀 40,292評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼敌土,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼镜硕!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起返干,我...
    開(kāi)封第一講書(shū)人閱讀 39,211評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤兴枯,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后矩欠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體财剖,經(jīng)...
    沈念sama閱讀 45,655評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,846評(píng)論 3 336
  • 正文 我和宋清朗相戀三年晚顷,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了峰伙。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,965評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡该默,死狀恐怖瞳氓,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情栓袖,我是刑警寧澤匣摘,帶...
    沈念sama閱讀 35,684評(píng)論 5 347
  • 正文 年R本政府宣布,位于F島的核電站裹刮,受9級(jí)特大地震影響音榜,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜捧弃,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,295評(píng)論 3 329
  • 文/蒙蒙 一赠叼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧违霞,春花似錦嘴办、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,894評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至眼五,卻和暖如春妆艘,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背看幼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,012評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工批旺, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人诵姜。 一個(gè)月前我還...
    沈念sama閱讀 48,126評(píng)論 3 370
  • 正文 我出身青樓汽煮,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子逗物,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,914評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容