偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

服務(wù)架構(gòu):分層架構(gòu)

開發(fā) 架構(gòu)
分層是一種職責(zé)分離和依賴管理的方式:每層都有自己特定的職能;高層的服務(wù)可以調(diào)用低層的服務(wù),但是反過(guò)來(lái)不行。

一個(gè)分層架構(gòu)設(shè)計(jì)的應(yīng)用通常包含很多個(gè)邏輯層(Logical Layer)和物理層(Physical Tier)。分層架構(gòu)這個(gè)名字里的層(Tier),特指“物理層”(Tier),每個(gè)物理層是由很多臺(tái)機(jī)器構(gòu)成,可以是部署在局域網(wǎng)下一個(gè)子網(wǎng)的虛擬機(jī)或裸金屬機(jī)器。

分層是一種職責(zé)分離和依賴管理的方式:每層都有自己特定的職能;高層的服務(wù)可以調(diào)用低層的服務(wù),但是反過(guò)來(lái)不行。

物理層運(yùn)行在不同的機(jī)器上,一層可以直接調(diào)用另一層,或者通過(guò)消息隊(duì)列進(jìn)行通信。盡管每個(gè)邏輯層都可以被部署在獨(dú)立的物理層,但不是必須的。為了節(jié)省資源,一個(gè)物理層可以部署多個(gè)邏輯層。通過(guò)物理層的隔離,架構(gòu)的擴(kuò)展性和容錯(cuò)性會(huì)更強(qiáng),負(fù)面作用是會(huì)導(dǎo)致額外的網(wǎng)絡(luò)通信延遲。

傳統(tǒng)的三層應(yīng)用(物理層)分別包含展示層、中間層、數(shù)據(jù)庫(kù)層。中間層是可選的,較為復(fù)雜的應(yīng)用通常會(huì)超過(guò)三層。上面的架構(gòu)圖中就包含了兩個(gè)中間層,分別實(shí)現(xiàn)了不同的功能。

一個(gè)分層架構(gòu)的應(yīng)用,從邏輯層的視角來(lái)看,可以分為兩類:

  1. 封閉架構(gòu):每個(gè)邏輯層只能調(diào)用它的直接下層。
  2. 開放架構(gòu):每個(gè)邏輯層都可以調(diào)用它下面的任何?層。

封閉架構(gòu)嚴(yán)格限制了邏輯層之間的依賴關(guān)系,架構(gòu)更為清晰。缺點(diǎn)是一些中間層只可能只對(duì)請(qǐng)求進(jìn)行轉(zhuǎn)發(fā),導(dǎo)致不必要的網(wǎng)絡(luò)交互。

應(yīng)用場(chǎng)景

分層架構(gòu)常見于IaaS系統(tǒng),這類系統(tǒng)中每個(gè)物理層都運(yùn)行在一組獨(dú)立的物理機(jī)上。不過(guò)IaaS系統(tǒng)也不必采用純粹的分層架構(gòu),畢竟架構(gòu)中的某些部分使用現(xiàn)成的服務(wù)優(yōu)勢(shì)更大,比如緩存系統(tǒng)、消息隊(duì)列和數(shù)據(jù)存儲(chǔ)服務(wù)。

在以下場(chǎng)景中可以考慮分層架構(gòu):

  • 簡(jiǎn)單的網(wǎng)絡(luò)應(yīng)用。
  • 將本地部署的應(yīng)用遷移上云。
  • 本地部署應(yīng)用與云服務(wù)應(yīng)用混合開發(fā)的場(chǎng)景。

傳統(tǒng)公司里本地部署(自家機(jī)房)的系統(tǒng)通常采用分層架構(gòu),各家云服務(wù)商也提供了裸金屬服務(wù)器供傳統(tǒng)企業(yè)上云。

架構(gòu)優(yōu)勢(shì)

  • 云服務(wù)和本地部署的可移植性高。
  • 對(duì)于大多數(shù)開發(fā)者而言學(xué)習(xí)門檻低。
  • 從傳統(tǒng)架構(gòu)模型演進(jìn)過(guò)來(lái)的。
  • 支持多種多樣的部署環(huán)境,比如win/linux。

有哪些挑戰(zhàn)

  • 開發(fā)過(guò)程中,中間層很容易淪為對(duì)數(shù)據(jù)庫(kù)的CRUD,只是增加了網(wǎng)絡(luò)延遲。
  • 按照單體架構(gòu)的方式設(shè)計(jì)導(dǎo)致功能無(wú)法獨(dú)立發(fā)布。
  • 在IaaS管理整個(gè)系統(tǒng)比使用現(xiàn)成的服務(wù)維護(hù)成本高。
  • 在大型系統(tǒng)中,網(wǎng)絡(luò)安全會(huì)成為問題。

最佳實(shí)踐

  • 使用自動(dòng)擴(kuò)容功能,可以應(yīng)對(duì)工作負(fù)載的變化。
  • 使用消息隊(duì)列把物理層進(jìn)行解耦。
  • 把半靜態(tài)資源緩存起來(lái)。
  • 數(shù)據(jù)庫(kù)層配置成高可用模式。
  • 在網(wǎng)絡(luò)層(Web Tier)之前加一層防火墻(WAF)。
  • 給每個(gè)物理層分配一個(gè)子網(wǎng),不同子網(wǎng)之間只開放特定的ip port,以提高安全性。
  • 限制數(shù)據(jù)層的訪問,比如只允許中間層訪問數(shù)據(jù),不允許網(wǎng)絡(luò)層(Web Tier)訪問。

運(yùn)行在虛擬機(jī)上的分層架構(gòu)

這里我們給出一個(gè)在虛擬機(jī)上推薦的分層架構(gòu):

每個(gè)物理層均包含至少兩臺(tái)虛擬機(jī),以避免單點(diǎn)故障;通過(guò)負(fù)載均衡,把請(qǐng)求分發(fā)到不同的虛擬機(jī)上;如果要支持橫向擴(kuò)容,我們可以在一個(gè)物理層配置更多虛擬機(jī)。

每個(gè)物理層都有自己的子網(wǎng),所以這些虛擬機(jī)的內(nèi)網(wǎng)IP在一個(gè)網(wǎng)段里。這樣的優(yōu)勢(shì)是配置網(wǎng)絡(luò)安全規(guī)則很方便,路由表也很容易配置。

網(wǎng)絡(luò)層和業(yè)務(wù)邏輯層是無(wú)狀態(tài)的。任何一個(gè)虛擬機(jī)都可以處理到達(dá)該層的請(qǐng)求。數(shù)據(jù)層是多備份的數(shù)據(jù)庫(kù)系統(tǒng)。比如主從版本的MySQL、TiDB,或者云上Dynamodb等。

每個(gè)物理層都有自己的 inbound 和 outbound 網(wǎng)絡(luò)安全規(guī)則,比如數(shù)據(jù)層可以設(shè)置只允許業(yè)務(wù)邏輯層的虛擬機(jī)IP進(jìn)行訪問;

補(bǔ)充說(shuō)明

  • 分層架構(gòu)并不限定于3層,復(fù)雜的系統(tǒng)通常會(huì)有很多層;七層負(fù)載均衡或四層負(fù)載均衡都是很常見的選擇。
  • 層定義了擴(kuò)展性、可靠性和安全性的邊界;如果服務(wù)的SLA不一樣,可以考慮放到不同的物理層。
  • 架構(gòu)中很多地方可以采用現(xiàn)成的服務(wù),尤其是通用的緩存、消息隊(duì)列、存儲(chǔ)、數(shù)據(jù)庫(kù)服務(wù)。
  • 生產(chǎn)環(huán)境的虛擬機(jī)要禁止SSH或RDP直連;通常情況下,運(yùn)維/開發(fā)人員可以登陸一個(gè)跳板機(jī),跳板機(jī)可以直連生產(chǎn)環(huán)境虛擬機(jī);對(duì)于跳板機(jī),我們通常也會(huì)設(shè)置網(wǎng)絡(luò)規(guī)則,比如只允許特定的公網(wǎng)IP通過(guò)SSH或RDP訪問。
  • 對(duì)于核心服務(wù),多機(jī)房容災(zāi)也是要考慮的點(diǎn)。
責(zé)任編輯:姜華 來(lái)源: 今日頭條
相關(guān)推薦

2023-06-16 13:34:00

軟件架構(gòu)模式

2022-11-29 11:21:20

單體分層應(yīng)用架構(gòu)

2017-10-18 14:31:34

互聯(lián)網(wǎng)分層架構(gòu)服務(wù)化

2023-05-31 08:41:23

分層架構(gòu)對(duì)象模型

2023-07-28 09:23:24

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

2019-12-10 10:59:11

分層架構(gòu)項(xiàng)目

2016-06-07 16:43:57

云計(jì)算混合云

2017-11-17 07:06:27

互聯(lián)網(wǎng)分層架構(gòu)APP

2019-12-16 08:08:39

六邊形架構(gòu)分層架構(gòu)架構(gòu)

2019-10-30 16:24:34

分層架構(gòu)緩存

2020-08-11 09:43:28

分層架構(gòu)互聯(lián)網(wǎng)架構(gòu)

2020-02-26 22:02:04

Istio架構(gòu)連接

2021-01-04 05:51:02

數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)

2017-10-15 14:36:10

互聯(lián)網(wǎng)分層架構(gòu)服務(wù)化

2019-04-28 11:20:01

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

2012-04-06 13:31:35

SSH

2010-09-26 13:37:33

分層存儲(chǔ)架構(gòu)

2023-07-26 08:51:08

大數(shù)據(jù)服務(wù)架構(gòu)

2023-07-12 08:30:52

服務(wù)架構(gòu)事件驅(qū)動(dòng)架構(gòu)

2023-06-16 07:41:36

分層架構(gòu)軟件架構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)