2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

從程序員到架構(gòu)師 - 架構(gòu)師篇

 xujin3 2019-05-13


對(duì)工作多年的程序員而言,日后的職業(yè)發(fā)展無(wú)非是專精技術(shù),轉(zhuǎn)型管理,晉升架構(gòu)師三種選擇。成為一名優(yōu)秀的架構(gòu)師,是大多數(shù)技術(shù)人的追求。想要做架構(gòu),空有一身技術(shù)是遠(yuǎn)遠(yuǎn)不夠的,知識(shí)的深度和廣度,往往會(huì)決定一個(gè)架構(gòu)師的架構(gòu)能力。而這些知識(shí),從你踏入IT行業(yè)那一刻起,甚至更早就應(yīng)該開(kāi)始儲(chǔ)備了。那么到底什么是架構(gòu)師?如果有一天把你丟到架構(gòu)師的位置上你會(huì)怎么做?做什么呢?以下來(lái)具體闡述下一些看法和建議!

先看看IT市場(chǎng)對(duì)于架構(gòu)師的職位要求:

架構(gòu)師要求

1

綜述:

系統(tǒng)性,知其然知其所以然。是某一個(gè)領(lǐng)域的專家,在專業(yè)領(lǐng)域具備一定的預(yù)見(jiàn)性,可獨(dú)立領(lǐng)導(dǎo)跨部門(mén)的項(xiàng)目。

項(xiàng)目管理:

具備較高復(fù)雜度的(項(xiàng)目如鏈路較長(zhǎng)/模塊復(fù)雜度較高/風(fēng)險(xiǎn)較大/發(fā)布周期較緊/技術(shù)驅(qū)動(dòng)等任意兩項(xiàng)及以上)的PM經(jīng)驗(yàn)和能力。

開(kāi)發(fā)語(yǔ)言技能及架構(gòu)能力:

1、可以寫(xiě)出比較優(yōu)秀的代碼,能夠基于設(shè)計(jì)原則及模式掌握代碼演變的方向和節(jié)奏;具備技術(shù)攻堅(jiān)的能力;

2、具備高復(fù)雜度的平臺(tái)/框架/業(yè)務(wù)系統(tǒng)技術(shù)與架構(gòu)設(shè)計(jì)能力,掌握常見(jiàn)的架構(gòu)設(shè)計(jì)方法和模式,理解大型網(wǎng)站所需要用到的架構(gòu)和技術(shù);

3、熟悉業(yè)務(wù)的價(jià)值、特點(diǎn)及對(duì)系統(tǒng)的要求,掌握領(lǐng)域建模的方法,可以對(duì)業(yè)務(wù)進(jìn)行必要的抽象,并推進(jìn)技術(shù)實(shí)現(xiàn);

4、能夠負(fù)責(zé)復(fù)雜度高,平臺(tái)級(jí)產(chǎn)品或跨團(tuán)隊(duì)的產(chǎn)品架構(gòu),系統(tǒng)設(shè)計(jì)和實(shí)現(xiàn)。

業(yè)務(wù)理解:

1、行業(yè)開(kāi)發(fā):開(kāi)發(fā)熟悉自己直接負(fù)責(zé)的及上下游相關(guān)的業(yè)務(wù),關(guān)注業(yè)務(wù)發(fā)展相關(guān)的數(shù)據(jù)并能有效的分析解讀;

2、平臺(tái)開(kāi)發(fā):熟悉所在業(yè)務(wù)域,并且負(fù)責(zé)核心業(yè)務(wù)目標(biāo)的分解&落地;能夠把縱向行業(yè)需求落地為橫向產(chǎn)品化形態(tài);

3、在業(yè)務(wù)及產(chǎn)品規(guī)劃方面有自己獨(dú)立的思考,能夠影響業(yè)務(wù)及產(chǎn)品的發(fā)展方向。

影響:

1、在所處的業(yè)務(wù)線具有廣泛的影響力,對(duì)相應(yīng)涉及的技術(shù)和業(yè)務(wù)都能有足夠的公信力;2、具備輔導(dǎo)他人的能力和技能,有良好的分享習(xí)慣,對(duì)團(tuán)隊(duì)有正向影響和幫助。

架構(gòu)師職責(zé)

架構(gòu)師是一個(gè)既需要掌控整體又要洞悉局部瓶頸,并依據(jù)具體的業(yè)務(wù)場(chǎng)景給出解決方案的團(tuán)隊(duì)領(lǐng)導(dǎo)型人物,他需要參與項(xiàng)目開(kāi)發(fā)的全部過(guò)程,包括需求分析、架構(gòu)設(shè)計(jì)、系統(tǒng)實(shí)現(xiàn)、集成、測(cè)試和部署各個(gè)階段,負(fù)責(zé)在整個(gè)項(xiàng)目中對(duì)技術(shù)活動(dòng)和技術(shù)說(shuō)明進(jìn)行指導(dǎo)和協(xié)調(diào)。

架構(gòu)師主要職責(zé)有4條:

01

確認(rèn)需求

在項(xiàng)目開(kāi)發(fā)過(guò)程中,架構(gòu)師是在需求規(guī)格說(shuō)明書(shū)完成后介入的,需求規(guī)格說(shuō)明書(shū)必須得到架構(gòu)師的認(rèn)可。架構(gòu)師需要和分析人員反復(fù)交流,以保證自己完整并準(zhǔn)確地理解用戶需求。

02

系統(tǒng)分解

依據(jù)用戶需求,架構(gòu)師將系統(tǒng)整體分解為更小的子系統(tǒng)和組件,從而形成不同的邏輯層或服務(wù)。隨后,架構(gòu)師會(huì)確定各層的接口,層與層相互之間的關(guān)系。架構(gòu)師不僅要對(duì)整個(gè)系統(tǒng)分層,進(jìn)行“縱向”分解,還要對(duì)同一邏輯層分塊,進(jìn)行“橫向”分解。

      架構(gòu)師的功力基本體現(xiàn)于此,這是一項(xiàng)相對(duì)復(fù)雜的工作。

03

技術(shù)選型

架構(gòu)師通過(guò)對(duì)系統(tǒng)的一系列的分解,最終形成了軟件的整體架構(gòu)。技術(shù)選擇主要取決于軟件架構(gòu)。Web Server運(yùn)行在Windows上還是Linux上?數(shù)據(jù)庫(kù)采用MSSql、Oracle還是Mysql?需要不需要采用MVC或者Spring等輕量級(jí)的框架?前端采用富客戶端還是瘦客戶端方式?類似的工作,都需要在這個(gè)階段提出,并進(jìn)行評(píng)估。

架構(gòu)師對(duì)產(chǎn)品和技術(shù)的選型僅僅限于評(píng)估,沒(méi)有決定權(quán),最終的決定權(quán)歸項(xiàng)目經(jīng)理。架構(gòu)師提出的技術(shù)方案為項(xiàng)目經(jīng)理提供了重要的參考信息,項(xiàng)目經(jīng)理會(huì)從項(xiàng)目預(yù)算、人力資源、時(shí)間進(jìn)度等實(shí)際情況進(jìn)行權(quán)衡,最終進(jìn)行確認(rèn)。

04

制定技術(shù)規(guī)格說(shuō)明

架構(gòu)師在項(xiàng)目開(kāi)發(fā)過(guò)程中,是技術(shù)權(quán)威。他需要協(xié)調(diào)所有的開(kāi)發(fā)人員,與開(kāi)發(fā)人員一直保持溝通,始終保證開(kāi)發(fā)者依照它的架構(gòu)意圖去實(shí)現(xiàn)各項(xiàng)功能。

架構(gòu)師與開(kāi)發(fā)者溝通的最重要的形式是技術(shù)規(guī)格說(shuō)明書(shū),它可以是UML視圖、Word文檔,Visio文件等各種表現(xiàn)形式。通過(guò)架構(gòu)師提供的技術(shù)規(guī)格說(shuō)明書(shū),保證開(kāi)發(fā)者可以從不同角度去觀察、理解各自承擔(dān)的子系統(tǒng)或者模塊。

架構(gòu)師不僅要保持與開(kāi)發(fā)者的溝通,也需要與項(xiàng)目經(jīng)理、需求分析員,甚至與最終用戶保持溝通。所以,對(duì)于架構(gòu)師來(lái)講,不僅有技術(shù)方面的要求,還有人際交流方面的要求。

架構(gòu)師綜合能力

作為架構(gòu)師,必須成為所在開(kāi)發(fā)團(tuán)隊(duì)的技術(shù)路線引導(dǎo)者,具有很強(qiáng)的系統(tǒng)思維的能力;需要從大量互相沖突的系統(tǒng)方法和工具中區(qū)分出哪些是有效的,哪些是無(wú)效的。架構(gòu)師應(yīng)當(dāng)是一個(gè)成熟的、豐富的、有經(jīng)驗(yàn)的、學(xué)習(xí)快捷、善溝通和決策能力強(qiáng)的人。他必須廣泛了解各種技術(shù)并精通一種特定技術(shù),至少了解計(jì)算機(jī)通用技術(shù)以便確定哪種技術(shù)最優(yōu),或組織團(tuán)隊(duì)開(kāi)展技術(shù)評(píng)估。優(yōu)秀的架構(gòu)師能考慮并評(píng)估所有可用來(lái)解決問(wèn)題的總體技術(shù)方案。需要良好的書(shū)面和口頭溝通技巧,一般通過(guò)可視化模型和小組討論來(lái)溝通指導(dǎo)團(tuán)隊(duì)確保開(kāi)發(fā)人員按照架構(gòu)建造系統(tǒng)。

所以作為架構(gòu)師需要如下的綜合能力:

01

溝通能力

為了提高效率,架構(gòu)師必須贏得團(tuán)隊(duì)成員、項(xiàng)目經(jīng)理、客戶或用戶認(rèn)同,這就需要架構(gòu)師具有較強(qiáng)的溝通能力。溝通能力是人類最普遍性的素質(zhì)要求,技術(shù)人員好像容易忽略,想成為架構(gòu)師就不能忽略。千萬(wàn)不要抱著這樣的觀念:懷才跟懷孕似的,時(shí)間久了總會(huì)被人發(fā)現(xiàn)的。還是天橋上賣大力丸的哥們說(shuō)得對(duì):光說(shuō)不練假把式,光練不說(shuō)傻把式??纯茨阒車念^頭腦腦們,哪一個(gè)不是此中高手,我們千萬(wàn)不要鄙視,認(rèn)為這是阿諛?lè)畛?、投機(jī)鉆營(yíng),凡事都要看到積極的一面,“溝通”的確是一種能力。我認(rèn)為自己是一個(gè)略內(nèi)向的人,因?yàn)槲沂寝r(nóng)村出來(lái)的孩子,普通話都說(shuō)不好,以前或多或少帶有點(diǎn)自卑感,幻想著是金子總會(huì)發(fā)光,所以在職業(yè)生涯中吃了不少虧?,F(xiàn)在,我深深懂得了溝通的重要性,我會(huì)很主動(dòng)地跟同事們,跟老大們不定時(shí)地溝通,感覺(jué)工作起來(lái)順暢多了。

這一條我認(rèn)為最為重要,所以排在首位。我甚至認(rèn)為下面幾條都可以忽略,唯一這一條得牢記,而且要常常提醒自己

02

技術(shù)能力

架構(gòu)師最好精通1-2個(gè)技術(shù),具備這種技術(shù)能力可以更加深入的理解有關(guān)架構(gòu)的工作原理,也可以拉近和開(kāi)發(fā)人員的距離,并形成團(tuán)隊(duì)中的影響力。

架構(gòu)師的技術(shù)知識(shí)廣度也很重要,需要了解盡可能多的技術(shù),所謂見(jiàn)多識(shí)廣,只有這樣,才可能綜合各種技術(shù),選擇更加適合項(xiàng)目的解決方案。有的人說(shuō),架構(gòu)師技術(shù)廣度的要求高于技術(shù)深度的要求,這是很有道理的??偠灾?,一句話:架構(gòu)師是項(xiàng)目團(tuán)隊(duì)中的技術(shù)權(quán)威。

03

架構(gòu)能力

架構(gòu)是架構(gòu)師洞察內(nèi)在結(jié)構(gòu)、原則、規(guī)律與邏輯的過(guò)程,架構(gòu)師要做到清晰理解系統(tǒng)、簡(jiǎn)潔描述,除此之外,一個(gè)架構(gòu)師還必須具備極強(qiáng)的分析能力,要做到根據(jù)產(chǎn)品宗旨和目標(biāo),分析清楚產(chǎn)品定位、產(chǎn)品業(yè)務(wù),再整合利用現(xiàn)有的技術(shù)領(lǐng)域,找出最佳方案,實(shí)現(xiàn)產(chǎn)品概念。

04

抽象分析

架構(gòu)師必須具備抽象思維和分析的能力,這是你進(jìn)行系統(tǒng)分析和系統(tǒng)分解的基本素質(zhì)。只有具備這樣的能力,架構(gòu)師才能看清系統(tǒng)的整體,掌控全局,這也是架構(gòu)師大局觀的形成基礎(chǔ)。你如何具備這種能力呢?一是來(lái)自于經(jīng)驗(yàn),二是來(lái)自于學(xué)習(xí)。架構(gòu)師不僅要具備在問(wèn)題領(lǐng)域上的經(jīng)驗(yàn),也需要具備在軟件工程領(lǐng)域內(nèi)的經(jīng)驗(yàn)。也就是說(shuō),架構(gòu)師必須能夠準(zhǔn)確得理解需求,然后用軟件工程的思想,把需求轉(zhuǎn)化和分解成可用計(jì)算機(jī)語(yǔ)言實(shí)現(xiàn)的程度。經(jīng)驗(yàn)的積累是需要一個(gè)時(shí)間過(guò)程的,這個(gè)過(guò)程誰(shuí)也幫不了你,是需要你去經(jīng)歷的。但是,如果你有意識(shí)地去培養(yǎng),不斷吸取前人的經(jīng)驗(yàn)的話,還是可以縮短這個(gè)周期的。

05

決策能力

決策能力是一個(gè)架構(gòu)師最重要的職責(zé)。

1. 技術(shù)方案決策原則

通常一個(gè)問(wèn)題都會(huì)有多種可解決的技術(shù)方案,怎么來(lái)決策就至關(guān)重要了,而決策通常又和全面相關(guān),大的來(lái)說(shuō)通常決策的原則就是性價(jià)比和可持續(xù)發(fā)展。性價(jià)比簡(jiǎn)單來(lái)說(shuō)是方案的實(shí)現(xiàn)成本,這個(gè)成本要包括非常多的方面,例如有些場(chǎng)景可能會(huì)是用硬件解決看起來(lái)是花錢(qián),但最終折算成本是最劃算的,很多系統(tǒng)設(shè)計(jì)在決策性價(jià)比時(shí)都過(guò)于隨意,例如一個(gè)另外常見(jiàn)的場(chǎng)景就是建設(shè)一套新系統(tǒng)替代舊系統(tǒng),這個(gè)時(shí)候可能完全沒(méi)考慮舊系統(tǒng)的遷移代價(jià)甚至超過(guò)了改造舊系統(tǒng)的代價(jià);

可持續(xù)發(fā)展簡(jiǎn)單來(lái)說(shuō)就是所選擇的技術(shù)方案在公司是否可持續(xù),例如簡(jiǎn)單的案例是公司主體的研發(fā)人員都是php,卻搞一個(gè)其他語(yǔ)言,且只有極少人懂的(當(dāng)然,這還是要看性價(jià)比,如果搞一個(gè)其他語(yǔ)言帶來(lái)的效益超過(guò)了語(yǔ)言/人才體系的更換成本),又例如引入一個(gè)開(kāi)源產(chǎn)品,有無(wú)專業(yè)團(tuán)隊(duì)維護(hù)這都是要考慮的關(guān)鍵因素。

2. 優(yōu)先級(jí)和節(jié)奏控制

經(jīng)常我會(huì)問(wèn)做系統(tǒng)設(shè)計(jì)的同學(xué)一個(gè)問(wèn)題:對(duì)于這個(gè)業(yè)務(wù)場(chǎng)景而言,在系統(tǒng)設(shè)計(jì)上最需要把握的一個(gè)點(diǎn)是什么;這是一個(gè)關(guān)鍵問(wèn)題,全面意味著考慮到了很多地方的問(wèn)題,但通常業(yè)務(wù)需求實(shí)現(xiàn)都是有很強(qiáng)的時(shí)間要求的,因此在這個(gè)時(shí)候必須考慮清楚不同點(diǎn)的優(yōu)先級(jí),同時(shí)也包括技術(shù)方案在決策時(shí)也要做出取舍,有可能選了一個(gè)不是那么好的技術(shù)方案,但通過(guò)留下一些可改造的空間,為以后的重構(gòu)做好鋪墊,那就是很不錯(cuò)的,尤其技術(shù)同學(xué)有些時(shí)候比較容易陷入解決技術(shù)問(wèn)題的場(chǎng)景去,但那個(gè)問(wèn)題其實(shí)有可能不是現(xiàn)階段最重要的。

優(yōu)先級(jí)和節(jié)奏控制是我認(rèn)為一個(gè)優(yōu)秀的架構(gòu)師的最佳體現(xiàn),優(yōu)先級(jí)意味著把握住了重點(diǎn),可以確保在所設(shè)計(jì)的架構(gòu)指導(dǎo)下業(yè)務(wù)實(shí)現(xiàn)不會(huì)出現(xiàn)大問(wèn)題,節(jié)奏控制則意味著全面,知道隨著業(yè)務(wù)發(fā)展該在什么時(shí)間點(diǎn)做什么事,為將來(lái)做好鋪墊。

架構(gòu)師技能

技能樹(shù)

架構(gòu)優(yōu)化思路

架構(gòu)優(yōu)化一方面是優(yōu)化系統(tǒng)交易鏈上的每個(gè)環(huán)節(jié)進(jìn)行分析并優(yōu)化,另一方面是對(duì)單一架構(gòu)進(jìn)行瓶頸點(diǎn)分析和調(diào)優(yōu)。但是優(yōu)化的目標(biāo)大致相同,最終目的是提高系統(tǒng)的響應(yīng)速度、吞吐量、降低各個(gè)模塊之間的耦合。

優(yōu)化原則

  1. 在應(yīng)用系統(tǒng)的設(shè)計(jì)、開(kāi)發(fā)過(guò)程用中,應(yīng)始終把性能放在考慮的范圍內(nèi)。

  2. 確定清晰明確的性能目標(biāo)是關(guān)鍵。

  3. 性能調(diào)優(yōu)是伴隨整個(gè)項(xiàng)目周期的,最好進(jìn)行分階段設(shè)定目標(biāo)開(kāi)展,在達(dá)到預(yù)期性能目標(biāo)之后即可對(duì)本階段工作進(jìn)行總結(jié)和知識(shí)轉(zhuǎn)移進(jìn)入下一階段調(diào)優(yōu)工作。

  4. 必須保證調(diào)優(yōu)后的程序運(yùn)行正確。

  5. 性能更大程度是取決于良好的設(shè)計(jì),調(diào)優(yōu)技巧只是一個(gè)輔助手段。

  6. 調(diào)優(yōu)過(guò)程是疊代漸進(jìn)的過(guò)程,每次調(diào)優(yōu)的結(jié)果要反饋到后續(xù)的代碼開(kāi)發(fā)中去。

  7. 性能調(diào)優(yōu)不能以犧牲代碼的可讀性和維護(hù)性為代價(jià)。

后端優(yōu)化手段

  1. 硬件升級(jí)

    硬件問(wèn)題對(duì)性能的影響不容忽視。

    舉一個(gè)例子:一個(gè)DB集群經(jīng)常有慢SQL報(bào)警,業(yè)務(wù)排查下來(lái)發(fā)現(xiàn)SQL都很簡(jiǎn)單,該做的索引優(yōu)化也都做了。后來(lái)DBA同學(xué)幫忙定位到問(wèn)題是硬件過(guò)舊導(dǎo)致,將機(jī)械硬盤(pán)升級(jí)成固態(tài)硬盤(pán)之后報(bào)警立馬消失了,效果立竿見(jiàn)影!

  2. 緩存化

    緩存可以稱的上是性能優(yōu)化的利器,使用緩存時(shí)需要考慮緩存命中率、緩存更新、數(shù)據(jù)一致性、緩存穿透及雪崩、Value過(guò)大等問(wèn)題,可以通過(guò)mutiGet將多次請(qǐng)求合并一次、異步訪問(wèn)等方式來(lái)提升緩存讀取的性能。

  3. 產(chǎn)品邏輯優(yōu)化

    業(yè)務(wù)邏輯優(yōu)化經(jīng)常會(huì)容易被忽略,但效果卻往往比數(shù)據(jù)庫(kù)調(diào)優(yōu)、JVM調(diào)優(yōu)之類的來(lái)的更明顯。

    舉一個(gè)例子,12306春運(yùn)搶火車票的場(chǎng)景,由于訪問(wèn)的人多,用戶點(diǎn)擊“查票”之后系統(tǒng)會(huì)非???,進(jìn)度條非常慢,作為用戶,我們會(huì)習(xí)慣性的再去點(diǎn)“查票”,可能會(huì)連續(xù)點(diǎn)個(gè)好幾次。假設(shè)平均一個(gè)用戶點(diǎn)5次,則后端系統(tǒng)負(fù)載就增加了5倍!而其中80%的請(qǐng)求是重復(fù)請(qǐng)求。這個(gè)時(shí)候我們可以通過(guò)產(chǎn)品邏輯的方式來(lái)優(yōu)化,比如,在用戶點(diǎn)擊查詢之后將“按鈕置灰”,或者通過(guò)JS控制xx秒只能只能提交一次請(qǐng)求等,有效的攔截了80%的無(wú)效流量。

  4. 服務(wù)化

    做服務(wù)化最基礎(chǔ)的是按業(yè)務(wù)做服務(wù)拆分,避免跨業(yè)務(wù)間的互相影響,數(shù)據(jù)和服務(wù)同時(shí)拆分。同一個(gè)業(yè)務(wù)內(nèi)部我們還按計(jì)算密集型/IO密集型的服務(wù)拆分、C端/B端服務(wù)拆分、核心/非核心服務(wù)拆分、高頻服務(wù)單獨(dú)部署等原則做拆分。

  5. 異步化

    異步化可以利用線程池、消息隊(duì)列等方式實(shí)現(xiàn)。

    使用線程池的時(shí)候一定要注意核心參數(shù)的設(shè)置,可以通過(guò)監(jiān)控工具去觀測(cè)實(shí)際創(chuàng)建、活躍、空閑的線程數(shù),結(jié)合CPU、內(nèi)存的使用率情況來(lái)做線程池調(diào)優(yōu)。

    另一種是通過(guò)NIO實(shí)現(xiàn)異步化,一切網(wǎng)絡(luò)IO皆可異步:RPC框架、Servlet 3.0提供的異步技術(shù)、Apache HttpAsyncClient、緩存異步接口等等。

  6. 搜索引擎

    復(fù)雜查詢以及一些聚合計(jì)算不適合在數(shù)據(jù)庫(kù)中做,可以利用搜索引擎來(lái)實(shí)現(xiàn),另外搜索引擎還可以幫我們很好的解決跨庫(kù)、跨數(shù)據(jù)源檢索的場(chǎng)景。

數(shù)據(jù)庫(kù)優(yōu)化

數(shù)據(jù)庫(kù)優(yōu)化原則

  • 優(yōu)先考慮緩存降低對(duì)數(shù)據(jù)庫(kù)的讀操作。

  • 再考慮讀寫(xiě)分離,降低數(shù)據(jù)庫(kù)寫(xiě)操作。

  • 最后開(kāi)始數(shù)據(jù)拆分,切分模式:首先垂直(縱向)拆分、再次水平拆分。

  • 首先考慮按照業(yè)務(wù)垂直拆分。

  • 再考慮水平拆分:先分庫(kù)(設(shè)置數(shù)據(jù)路由規(guī)則,把數(shù)據(jù)分配到不同的庫(kù)中)

  • 最后再考慮分表,單表拆分到數(shù)據(jù)1000萬(wàn)以內(nèi)。

數(shù)據(jù)庫(kù)垂直、水平拆分

數(shù)據(jù)拆分前其實(shí)是要首先做準(zhǔn)備工作的,然后才是開(kāi)始數(shù)據(jù)拆分,我先講拆分前需要做的事情:

第一步:采用分布式緩存redis、memcached等降低對(duì)數(shù)據(jù)庫(kù)的讀操作。

第二步:如果緩存使用過(guò)后,數(shù)據(jù)庫(kù)訪問(wèn)量還是非常大,可以考慮數(shù)據(jù)庫(kù)讀、寫(xiě)分離原則。

第三步:當(dāng)我們使用讀寫(xiě)分離、緩存后,數(shù)據(jù)庫(kù)的壓力還是很大的時(shí)候,這就需要使用到數(shù)據(jù)庫(kù)拆分了。

數(shù)據(jù)庫(kù)拆分原則:就是指通過(guò)某種特定的條件,按照某個(gè)維度,將我們存放在同一個(gè)數(shù)據(jù)庫(kù)中的數(shù)據(jù)分散存放到多個(gè)數(shù)據(jù)庫(kù)(主機(jī))上面以達(dá)到分散單庫(kù)(主機(jī))負(fù)載的效果。

垂直拆分

一個(gè)數(shù)據(jù)庫(kù)由很多表的構(gòu)成,每個(gè)表對(duì)應(yīng)著不同的業(yè)務(wù),垂直切分是指按照業(yè)務(wù)將表進(jìn)行分類,分布到不同的數(shù)據(jù)庫(kù)上面,這樣也就將數(shù)據(jù)或者說(shuō)壓力分擔(dān)到不同的庫(kù)上面 。

比如淘寶中期開(kāi)始的數(shù)據(jù)庫(kù)端按照業(yè)務(wù)垂直拆分:按照業(yè)務(wù)交易數(shù)據(jù)庫(kù)、用戶數(shù)據(jù)庫(kù)、商品數(shù)據(jù)庫(kù)、店鋪數(shù)據(jù)庫(kù)等進(jìn)行拆分。

    優(yōu)缺點(diǎn)

優(yōu)點(diǎn):

1. 拆分后業(yè)務(wù)清晰,拆分規(guī)則明確。

2. 系統(tǒng)之間整合或擴(kuò)展容易。

3. 數(shù)據(jù)維護(hù)簡(jiǎn)單。

缺點(diǎn):

1. 部分業(yè)務(wù)表無(wú)法join,只能通過(guò)接口方式解決,提高了系統(tǒng)復(fù)雜度。

2. 受每種業(yè)務(wù)不同的限制存在單庫(kù)性能瓶頸,不易數(shù)據(jù)擴(kuò)展跟性能提高。

3. 事務(wù)處理復(fù)雜。

水平拆分

垂直拆分后遇到單機(jī)瓶頸,可以使用水平拆分。相對(duì)于垂直拆分的區(qū)別是:垂直拆分是把不同的表拆到不同的數(shù)據(jù)庫(kù)中,而水平拆分是把同一個(gè)表拆到不同的數(shù)據(jù)庫(kù)中。

相對(duì)于垂直拆分,水平拆分不是將表的數(shù)據(jù)做分類,而是按照某個(gè)字段的某種規(guī)則來(lái)分散到多個(gè)庫(kù)之中,每個(gè)表中包含一部分?jǐn)?shù)據(jù)。簡(jiǎn)單來(lái)說(shuō),我們可以將數(shù)據(jù)的水平切分理解為是按照數(shù)據(jù)行的切分,就是將表中 的某些行切分到一個(gè)數(shù)據(jù)庫(kù),而另外的某些行又切分到其他的數(shù)據(jù)庫(kù)中。

分庫(kù)分表需要涉及到對(duì)應(yīng)的SQL路由規(guī)則主庫(kù)備庫(kù)等,例如:淘寶設(shè)計(jì)了一套TDDL來(lái)解決這些問(wèn)題,應(yīng)用端只需配置對(duì)應(yīng)的規(guī)則即可,對(duì)應(yīng)用端的沒(méi)有任何侵入的設(shè)計(jì)。

水平拆分,總之,一般先分庫(kù),如果分庫(kù)后查詢?nèi)匀宦?,于是按照分?kù)的思想開(kāi)始做分表的工作數(shù)據(jù)庫(kù)采用分布式數(shù)據(jù)庫(kù)(所有節(jié)點(diǎn)的數(shù)據(jù)加起來(lái)才算是整體數(shù)據(jù)),文件系統(tǒng)采用分布式文件系統(tǒng)任何強(qiáng)大的單一服務(wù)器都滿足不了大型系統(tǒng)持續(xù)增長(zhǎng)的業(yè)務(wù)需求,數(shù)據(jù)庫(kù)讀寫(xiě)分離隨著業(yè)務(wù)的發(fā)展最終也將無(wú)法滿足需求,需要使用分布式數(shù)據(jù)庫(kù)及分布式文件系統(tǒng)來(lái)支撐。

總結(jié)

架構(gòu)師是一個(gè)充滿挑戰(zhàn)的職業(yè),知識(shí)面的寬窄往往決定著一個(gè)架構(gòu)師的架構(gòu)能力,所以在這一點(diǎn)上我比較贊成,就是要閱讀大量的技術(shù)書(shū)籍,但我希望你不要僅限于軟件相關(guān)的書(shū)籍,經(jīng)常泡技術(shù)論壇,一方面可以結(jié)交朋友,一方面可以增加自己的知識(shí)面。

總之,想要成為架構(gòu)師,需要有耐心,不斷學(xué)習(xí),拓寬自己的視野,不僅僅局限于自己眼前的項(xiàng)目,關(guān)注開(kāi)源技術(shù),關(guān)注熱門(mén)技術(shù)社區(qū)的新動(dòng)向。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多