久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

程序員蛻變?yōu)榧軜?gòu)師必須要知道的「架構(gòu)理論」

 zhuxrgf 2021-01-09
Java思享匯2020-07-20 20:02:52

架構(gòu)目的和指標(biāo)

架構(gòu)目的:

架構(gòu)設(shè)計的主要目的是為了解決軟件系統(tǒng)復(fù)雜度帶來的問題,,是用最小的人力成本來滿足需求的開發(fā)和響應(yīng)需求的變化,,用最小的運(yùn)行成本來保障軟件的運(yùn)行。讓軟件達(dá)到“高內(nèi)聚,、松耦合”,,從而使軟件具有:

  • 易擴(kuò)展——易于增加新的功能

  • 更強(qiáng)壯——不容易被粗心的程序員破壞

  • 可移植——能夠在多樣的環(huán)境下運(yùn)行

  • 更簡單——容易理解、容易維護(hù)

設(shè)計目標(biāo):

  • 可擴(kuò)展性(Scalable)

  • 可靠性(Reliable),,支持灰度發(fā)布,,異地容錯

  • 可伸縮 (Extensible),支持水平擴(kuò)展和垂直增強(qiáng)

  • 可維護(hù)性(Maintainable),,一是排除現(xiàn)有的錯誤,,二是新需求可反映到現(xiàn)有系統(tǒng)中去。

  • 安全性(Secure)

  • 可定制化(Customizable)

  • 客戶體驗(yàn)(Customer Experience),,必須易于使用,。

架構(gòu)的方法論

程序員蛻變?yōu)榧軜?gòu)師必須要知道的「架構(gòu)理論」

面向?qū)ο?/p>

設(shè)計原則-SOLID

程序員蛻變?yōu)榧軜?gòu)師必須要知道的「架構(gòu)理論」

設(shè)計原則-SOLID

設(shè)計模式的六大原則有:

  • Single Responsibility Principle:單一職責(zé)原則

  • Open Closed Principle:開閉原則

  • Liskov Substitution Principle:里氏替換原則

  • Law of Demeter:迪米特法則

  • Interface Segregation Principle:接口隔離原則

  • Dependence Inversion Principle:依賴倒置原則

把這六個原則的首字母聯(lián)合起來( L 算做一個)就是 SOLID (solid,,穩(wěn)定的),其代表的含義就是這六個原則結(jié)合使用的好處:建立穩(wěn)定,、靈活,、健壯的設(shè)計

單一責(zé)任原則:

當(dāng)需要修改某個類的時候原因有且只有一個(THERE SHOULD NEVER BE MORE THAN ONE REASON FOR A CLASS TO CHANGE),。換句話說就是讓一個類只做一種類型責(zé)任,,當(dāng)這個類需要承擔(dān)其他類型的責(zé)任的時候,就需要分解這個類,。

開放封閉原則:

軟件實(shí)體應(yīng)該是可擴(kuò)展,,而不可修改的。也就是說,,對擴(kuò)展是開放的,,而對修改是封閉的。這個原則是諸多面向?qū)ο缶幊淘瓌t中最抽象,、最難理解的一個,。

里氏替換原則:

當(dāng)一個子類的實(shí)例應(yīng)該能夠替換任何其他類的實(shí)例時,它們之間才具有is-A關(guān)系,。

依賴倒置原則:

  1. 高層模塊不應(yīng)該依賴于低層模塊,,二者都應(yīng)該依賴于抽象

  2. 抽象不應(yīng)該依賴于細(xì)節(jié),細(xì)節(jié)應(yīng)該依賴于抽象

接口分離原則:

不能強(qiáng)迫用戶去依賴那些他們不使用的接口,。換句話說,,使用多個專門的接口比使用單一的總接口總要好。

設(shè)計模式類型

程序員蛻變?yōu)榧軜?gòu)師必須要知道的「架構(gòu)理論」

設(shè)計模式類型

CAP定理

CAP是Consistency,、Availablity和Partition-tolerance的縮寫,。分別是指:

  • 一致性(Consistency):每次讀操作都能保證返回的是最新數(shù)據(jù);

  • 可用性(Availablity):任何一個沒有發(fā)生故障的節(jié)點(diǎn),,會在合理的時間內(nèi)返回一個正常的結(jié)果,;

  • 分區(qū)容忍性(Partition-tolerance):當(dāng)節(jié)點(diǎn)間出現(xiàn)網(wǎng)絡(luò)分區(qū),照樣可以提供服務(wù),。

1.一致性:一致性是指數(shù)據(jù)在多個副本之間是否能夠保持一致的特性,。假如現(xiàn)在的多個節(jié)點(diǎn)中的數(shù)據(jù)是保持一致的,當(dāng)執(zhí)行完某一個更新操作之后,,應(yīng)當(dāng)要保證系統(tǒng)的數(shù)據(jù)然后處于一致性的狀態(tài),。對于一個將數(shù)據(jù)副本分布在不同的分布式節(jié)點(diǎn)上,如果對第一個結(jié)點(diǎn)的數(shù)據(jù)進(jìn)行了更新的操作,,并且更新成功之后,,卻沒有讓第二個節(jié)點(diǎn)得到相應(yīng)的更新。當(dāng)外部系統(tǒng)再去調(diào)用第二個節(jié)點(diǎn)時,獲取到的依然是原始的數(shù)據(jù),,這就是分布式數(shù)據(jù)不一致的情況了,。在分布式系統(tǒng)中,,如果能夠做到針對一個數(shù)據(jù)項更新操作執(zhí)行成功之后,,所有的用戶都可以讀取到最新的值,那么這樣的系統(tǒng)就被認(rèn)為是具有強(qiáng)一致性的,。

2.可用性:可用性是指系統(tǒng)提供的服務(wù)必須一直處于可用的狀態(tài),,對于用戶的每一個操作請求總是能夠在有限的時間內(nèi)返回結(jié)果,。有限的時間內(nèi):對于用戶的一個操作請求,,系統(tǒng)必須能夠在指定的時間內(nèi)返回對應(yīng)的結(jié)果。如果超過了這個時間,,就認(rèn)為系統(tǒng)是不可用的,。返回結(jié)果是可用性的一個非常重要的指標(biāo),它要求系統(tǒng)在完成對用戶請求的處理后,,返回一個正常的響應(yīng)結(jié)果,。正常的響應(yīng)結(jié)果包含成功或失敗,而不是一個讓用戶迷惑的結(jié)果,。

3.分區(qū)容錯性:分布式系統(tǒng)在遇到任何網(wǎng)絡(luò)分區(qū)故障的時候,,仍然需要對外提供滿足一致性和可用性的服務(wù)。

程序員蛻變?yōu)榧軜?gòu)師必須要知道的「架構(gòu)理論」

CAP

一個分布式系統(tǒng)既然不能同時滿足上述的三個需求,,因此在進(jìn)行對cap定理的應(yīng)用時,,我們就需要去拋棄一項。

①選擇CA

放棄分區(qū)容錯性,,比較簡單的方式就是把所有的數(shù)據(jù)都放在一個分布式節(jié)點(diǎn)上,。那不就又成為了單機(jī)應(yīng)用了嗎?

②選擇CP

放棄可用性,,一旦出現(xiàn)網(wǎng)絡(luò)故障,,受到影響的服務(wù)需要再等待一定時間,因?yàn)橄到y(tǒng)處于不可用的狀態(tài),。

③選擇AP

放棄一致性,,這里所指的一致性是強(qiáng)一致性,但是確保最終一致性,。是很多分布式系統(tǒng)的選擇,。

小結(jié):從cap的定理可以看出,分區(qū)容錯性是一個最基本的要求,,因?yàn)榧热皇且粋€分布式系統(tǒng),,必然要部署到兩個或兩個以上的節(jié)點(diǎn)上,否則,就不是分布式系統(tǒng),,因此我們只能在一致性和可用性尋求平衡,。

BASE理論

程序員蛻變?yōu)榧軜?gòu)師必須要知道的「架構(gòu)理論」

BASE理論

base是Basically Available(基本可用)、Soft state(軟狀態(tài))和Eventually consistent(最終一致性)三個短語的簡寫,。base是對cap中一致性和可用性的權(quán)衡的結(jié)果,。是根據(jù)cao理論演變而來,核心思想是即使無法做到強(qiáng)一致性,,但是每個應(yīng)用根據(jù)自身的業(yè)務(wù)特點(diǎn),,采用適當(dāng)?shù)姆绞絹硎瓜到y(tǒng)達(dá)到最終與執(zhí)行。

①基本可用

基本可用指的是分布式系統(tǒng)出現(xiàn)了不可預(yù)知故障的時候,,允許損失部分可用性,。響應(yīng)時間合理延長,功能上適當(dāng)做服務(wù)降級,。

②弱狀態(tài)

弱狀態(tài)指的是允許系統(tǒng)中的數(shù)據(jù)存在中間狀態(tài),,并認(rèn)為該中間狀態(tài)不會影響系統(tǒng)的整體可用性,即允許在各個節(jié)點(diǎn)數(shù)據(jù)同步時存在延時,。

③最終一致性

最終一致性強(qiáng)調(diào)的是系統(tǒng)中所有的數(shù)據(jù)副本,,在經(jīng)過一段時間的同步之后,最終能夠達(dá)到一個一致的狀態(tài),。因此,,最終一致性的本質(zhì)是需要系統(tǒng)保證數(shù)據(jù)最終能夠達(dá)到一致。而不需要實(shí)時保證系統(tǒng)數(shù)據(jù)的一致性,。

AKF架構(gòu)原則

程序員蛻變?yōu)榧軜?gòu)師必須要知道的「架構(gòu)理論」

AFK立方體

X軸擴(kuò)展

所謂X軸代表把同樣的工作或數(shù)據(jù)鏡像分配給多個實(shí)體,。換句話說就是復(fù)制服務(wù)然后負(fù)載均衡。這也是最簡單最基礎(chǔ)的擴(kuò)展,。

示例:我有個網(wǎng)站,,一開始部署在服務(wù)器A上對外服務(wù),隨著訪問人數(shù)增加,,一臺服務(wù)器的性能無法支持,,于是我又在服務(wù)器上B上同樣部署了網(wǎng)站,然后在前面部署了Apache或者Nginx來分流訪問,,這就是最基本的X軸擴(kuò)展,。

Y軸擴(kuò)展

針對X軸擴(kuò)展產(chǎn)生的問題,我們需要將大型服務(wù)進(jìn)行拆解,,把分割的工作指責(zé)和數(shù)據(jù)分配給多個實(shí)體這也就是Y軸擴(kuò)展,。也是微服務(wù)理論誕生的基礎(chǔ)。

示例:我把網(wǎng)站的注冊登錄模塊,,首頁新聞?wù)故灸K,,后臺維護(hù)模塊拆成了多個微服務(wù)進(jìn)行部署維護(hù)。 X軸擴(kuò)展和Y軸擴(kuò)展并不矛盾,是可以結(jié)合的,,比如我發(fā)現(xiàn)新聞?wù)故灸K壓力很大,,我可以對新聞?wù)故灸K進(jìn)行X軸擴(kuò)展,部署多個鏡像來分擔(dān)壓力,。

Z軸擴(kuò)展

Z軸代表按照客戶,、客戶的需要、位置或者價值分割或分配工作職責(zé),。一般在超大型系統(tǒng)中,,架構(gòu)設(shè)計就會面臨Z軸擴(kuò)展的需求,。

示例:網(wǎng)站一開始建設(shè)在上海數(shù)據(jù)中心,,面向全國服務(wù)。隨著公司業(yè)務(wù)的增長,,西安的客戶大量增加,,但是訪問上海數(shù)據(jù)中心速度很慢,所以公司考慮在西安建立數(shù)據(jù)中心來應(yīng)對用戶訪問,,這就是Z軸擴(kuò)展,。

康威定律

  • 第一定律:企業(yè)溝通方式會通過系統(tǒng)設(shè)計表達(dá)出來

  • 第二定律:再多的時間也沒辦法讓任務(wù)完美至極,但總有時間能將它完成

  • 第三定律:線型系統(tǒng)和線型組織架構(gòu)間有潛在的異質(zhì)同態(tài)特性

  • 第四定律:大系統(tǒng)比小系統(tǒng)更適用于任務(wù)分解

架構(gòu)思維

程序員蛻變?yōu)榧軜?gòu)師必須要知道的「架構(gòu)理論」

架構(gòu)思維圖

架構(gòu)的變遷

程序員蛻變?yōu)榧軜?gòu)師必須要知道的「架構(gòu)理論」

架構(gòu)的變遷圖

單體架構(gòu):最簡單架構(gòu)風(fēng)格所有代碼在一個項目中,,團(tuán)隊所有成員,,可隨時任意修改一段代碼或增加一些新的代碼。

程序員蛻變?yōu)榧軜?gòu)師必須要知道的「架構(gòu)理論」

單體架構(gòu)圖

Web應(yīng)用程序發(fā)展的早期,,大部分web工程師將所有的功能模塊打包到一起并放在一 個web容器中運(yùn)行,,所有功能模塊使用同一個數(shù)據(jù)庫。

特點(diǎn):

1,、所有的功能集成在一個項目工程中,。

2、所有的功能打在一個war包部署到服務(wù)器,。

3,、通過部署應(yīng)用集群和數(shù)據(jù)庫集群來提高系統(tǒng)的性能。

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

1,、項目架構(gòu)簡單,,前期開發(fā)成本低,周期短,,小型項目的首選,。

2、開發(fā)效率高,,模塊之間交互采用本地方法調(diào)用,。

3、容易部署,運(yùn)維成本小,,直接打包到web容器即可運(yùn)行,。

4、容易測試,,無依賴,,在本地就可以啟動調(diào)試完整的系統(tǒng)。

缺點(diǎn):

1,、全部功能集成在一個工程中,,對于大型項目不易擴(kuò)展及維護(hù)。

2,、版本迭代速度逐漸變慢,,修改就要將整個應(yīng)用全部編譯。

3,、無法針對某業(yè)務(wù)按需伸縮,。

垂直架構(gòu):分層是典型的對復(fù) 雜系統(tǒng)進(jìn)行結(jié)構(gòu)化 思考和抽象聚合的 通用方法,也符合金字塔原理,。MVC是一個常見的三層架構(gòu)模式,。

程序員蛻變?yōu)榧軜?gòu)師必須要知道的「架構(gòu)理論」

垂直架構(gòu)圖

針對單體架構(gòu)的不足,為了適應(yīng)大型項目的開發(fā)需求,,許多公司將一個單體系統(tǒng)按業(yè) 務(wù)垂直拆分為若干系統(tǒng),,系統(tǒng)之間通過網(wǎng)絡(luò)交互來完成用戶的業(yè)務(wù)處理,每個系統(tǒng)可 分布式部署,,這種架構(gòu)稱為分布式架構(gòu),。

特點(diǎn):

1、按業(yè)務(wù)垂直拆分成一個一個的單體系統(tǒng),,此架構(gòu)也稱為垂直架構(gòu),。

2、系統(tǒng)與系統(tǒng)之間的存在數(shù)據(jù)冗余,,耦合性較大,,如上圖中三個項目都存在客戶信息。

3,、系統(tǒng)之間的接口多為實(shí)現(xiàn)數(shù)據(jù)同步,,如上圖中三個項目要同步客戶信息。

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

1,、通過垂直拆分,,每個子系統(tǒng)變成小型系統(tǒng),功能簡單,,前期開發(fā)成本低,,周期短,。

2、每個子系統(tǒng)可按需伸縮,。

3,、每個子系統(tǒng)可采用不同的技術(shù)。

缺點(diǎn):

1,、子系統(tǒng)之間存在數(shù)據(jù)冗余,、功能冗余,耦合性高,。

2,、按需伸縮粒度不夠,對同一個子系統(tǒng)中的不同的業(yè)務(wù)無法實(shí)現(xiàn),,比如訂單管理和用戶管理,。

SOA架構(gòu):面向服務(wù)架構(gòu)是一種建設(shè)企業(yè)IT生態(tài)系統(tǒng)的架構(gòu)指導(dǎo)思想。SOA關(guān)注服務(wù),,服務(wù)是最基本的業(yè)務(wù)功能單元,, 服務(wù)之間通過ESB通信,。

程序員蛻變?yōu)榧軜?gòu)師必須要知道的「架構(gòu)理論」

SOA架構(gòu)圖

SOA是一種面向服務(wù)的架構(gòu),,基于分布式架構(gòu),它將不同業(yè)務(wù)功能按服務(wù)進(jìn)行拆分,, 并通過這些服務(wù)之間定義良好的接口和協(xié)議聯(lián)系起來,。

特點(diǎn):

1、基于SOA的架構(gòu)思想,,將重復(fù)公用的功能抽取為組件,,以服務(wù)的方式向各個系統(tǒng)提供服務(wù)。

2,、各個系統(tǒng)與服務(wù)之間采用webservice,、rpc等方式進(jìn)行通信。

3,、ESB企業(yè)服務(wù)總線作為系統(tǒng)與服務(wù)之間通信的橋梁,。

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

1、將重復(fù)的功能抽取為服務(wù),,提高開發(fā)效率,,提高系統(tǒng)的可重用性、可維護(hù)性,。

2,、可以針對不同服務(wù)的特點(diǎn)按需伸縮。

3,、采用ESB減少系統(tǒng)中的接口耦合,。

缺點(diǎn):

1,、系統(tǒng)與服務(wù)的界限模糊,會導(dǎo)致抽取的服務(wù)的粒度過大,,系統(tǒng)與服務(wù)之間耦合性高,。

2、雖然使用了ESB,,但是服務(wù)的接口協(xié)議不固定,,種類繁多,不利于系統(tǒng)維護(hù),。

微服務(wù)架構(gòu):微服務(wù)架構(gòu)風(fēng)格以實(shí)現(xiàn)一組小服務(wù)的方式來開發(fā)一個獨(dú)立的應(yīng)用系統(tǒng)方法,。其中每個小服務(wù)運(yùn)行在獨(dú)立進(jìn)程。服務(wù)間通過ApiGW機(jī)制通信,。

程序員蛻變?yōu)榧軜?gòu)師必須要知道的「架構(gòu)理論」

微服務(wù)架構(gòu)圖

基于SOA架構(gòu)的思想,,為了滿足移動互聯(lián)網(wǎng)對大型項目及多客戶端的需求,對服務(wù)層進(jìn)行細(xì)粒度的拆分,,所拆分的每個服務(wù)只完成某個特定的業(yè)務(wù)功能,,比如訂單服務(wù)只實(shí)現(xiàn)訂單相關(guān)的業(yè)務(wù),用戶服務(wù)實(shí)現(xiàn)用戶管理相關(guān)的業(yè)務(wù)等等,,服務(wù)的粒度很小,,所以稱為微服務(wù)架構(gòu)。

特點(diǎn):

1,、服務(wù)層按業(yè)務(wù)拆分為一個一個的微服務(wù),。

2、微服務(wù)的職責(zé)單一,。

3,、微服務(wù)之間采用RESTful、RPC等輕量級協(xié)議傳輸,。

4,、有利于采用前后端分離架構(gòu)。

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

1,、服務(wù)拆分粒度更細(xì),,有利于資源重復(fù)利用,提高開發(fā)效率,。

2,、可以更加精準(zhǔn)的制定每個服務(wù)的優(yōu)化方案,按需伸縮,。

3,、適用于互聯(lián)網(wǎng)時代,產(chǎn)品迭代周期更短,。

缺點(diǎn):

1,、開發(fā)的復(fù)雜性增加,,因?yàn)橐粋€業(yè)務(wù)流程需要多個微服務(wù)通過網(wǎng)絡(luò)交互來完成。

2,、微服務(wù)過多,,服務(wù)治理成本高,不利于系統(tǒng)維護(hù),。

微服務(wù)架構(gòu)2.0-Service Mesh

程序員蛻變?yōu)榧軜?gòu)師必須要知道的「架構(gòu)理論」

Service Mesh

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

1,、屏蔽分布式系統(tǒng)通信的復(fù)雜性(負(fù)載均衡、服務(wù)發(fā)現(xiàn),、認(rèn)證授權(quán),、監(jiān)控追蹤、流量控 制等等),,服務(wù)只用關(guān)注業(yè)務(wù)邏輯,。

2、真正的與語言無關(guān),,服務(wù)可以用任何語言編寫,,只需和Service Mesh通信即可。

3,、對應(yīng)用透明,,Service Mesh組件可以單獨(dú)升級。

缺點(diǎn):

1,、邊緣網(wǎng)絡(luò),,IoT場景:資源非常有限,不適合啟動太多Sidecar,。

2、FaaS場景:應(yīng)用自身足夠輕量,,甚至比Sidecar還要輕量,。

3、Serverless場景:ScaletoZero時,,對冷啟動速度有嚴(yán)格要求,,Sidecar的啟動和初始化可能拖累應(yīng)用啟動速度。

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多