自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

單體 V/s 分布式架構(gòu),你看明白了嗎?

網(wǎng)絡(luò) 網(wǎng)絡(luò)管理
網(wǎng)絡(luò)并不只由一個(gè)網(wǎng)絡(luò)硬件供應(yīng)商構(gòu)成。而且,并非所有這些異構(gòu)的硬件供應(yīng)商之間都能很好地協(xié)同工作。這反過來會(huì)影響網(wǎng)絡(luò)的可靠性、延遲以及對(duì)帶寬的假設(shè)。

在軟件領(lǐng)域,存在多種架構(gòu)風(fēng)格可供選擇,我們需要關(guān)注不同架構(gòu)風(fēng)格帶來的風(fēng)險(xiǎn)。選擇符合業(yè)務(wù)需求的架構(gòu)風(fēng)格是一個(gè)長(zhǎng)期迭代的過程。

架構(gòu)風(fēng)格可以分為兩大主要類型:?jiǎn)误w架構(gòu)(將所有代碼部署在一個(gè)單元中)和分布式架構(gòu)(通過遠(yuǎn)程訪問協(xié)議連接多個(gè)部署單元)。它們又可以進(jìn)一步細(xì)分為以下多個(gè)子架構(gòu)風(fēng)格,如下所示。

單體架構(gòu)

  1. 分層架構(gòu)
  2. 流水線架構(gòu)
  3. 微內(nèi)核架構(gòu)

分布式架構(gòu)

  1. 基于服務(wù)的架構(gòu)
  2. 事件驅(qū)動(dòng)架構(gòu)
  3. 空間驅(qū)動(dòng)架構(gòu)
  4. 面向服務(wù)的架構(gòu)
  5. 微服務(wù)架構(gòu)

后期我將上述每種架構(gòu)風(fēng)格寫一個(gè)獨(dú)立的博客。這篇將專注于對(duì)架構(gòu)風(fēng)格的更廣泛分類,并試圖了解在使用這些架構(gòu)時(shí)涉及的優(yōu)缺點(diǎn)。

單體架構(gòu)

當(dāng)從零開始進(jìn)行軟件開發(fā)時(shí),通常會(huì)首先采用單體架構(gòu)風(fēng)格。這可能是默認(rèn)選擇或意外選擇,因?yàn)樵诔跏茧A段,架構(gòu)師很難對(duì)適當(dāng)?shù)募軜?gòu)風(fēng)格做出決策。對(duì)于小型、簡(jiǎn)單的應(yīng)用程序或網(wǎng)站,這種架構(gòu)風(fēng)格是一個(gè)不錯(cuò)的選擇。

這種風(fēng)格支持的分層機(jī)制是技術(shù)和領(lǐng)域級(jí)別的。以下是在此風(fēng)格中使用的不同分區(qū):

  • 展示層 - 負(fù)責(zé)用戶界面和處理用戶輸入。
  • 業(yè)務(wù)邏輯 - 執(zhí)行應(yīng)用程序的核心業(yè)務(wù)邏輯。
  • 數(shù)據(jù)庫(kù)訪問 - 負(fù)責(zé)訪問數(shù)據(jù)庫(kù)的數(shù)據(jù)訪問對(duì)象。
  • 應(yīng)用程序集成 - 與其他服務(wù)進(jìn)行集成(例如通過消息傳遞或REST API)

為什么要使用這種風(fēng)格?

  1. 小型應(yīng)用程序的不錯(cuò)選擇。
  2. 在項(xiàng)目初期非常方便使用。
  3. 適用于預(yù)算緊張和時(shí)間有限的情況。
  4. 大多數(shù)開發(fā)人員和架構(gòu)師都相當(dāng)簡(jiǎn)單和熟悉。
  5. 成本較低,對(duì)于架構(gòu)師在分析業(yè)務(wù)需求和要求時(shí)還不確定使用哪種風(fēng)格時(shí)是一個(gè)不錯(cuò)的選擇。

為什么不使用這種風(fēng)格?

隨著應(yīng)用程序的增長(zhǎng),可維護(hù)性、敏捷性、可測(cè)試性和可部署性等特性會(huì)受到不利影響。第二個(gè)要注意的因素是架構(gòu)下沉反(sinkhole_ ani)模式,當(dāng)請(qǐng)求在各層之間以簡(jiǎn)單的透?jìng)魈幚矸绞竭M(jìn)行傳遞,而在每個(gè)層內(nèi)部沒有執(zhí)行任何業(yè)務(wù)邏輯時(shí),這種反模式會(huì)出現(xiàn)。

分布式架構(gòu)

分布式架構(gòu)風(fēng)格雖然在性能、可擴(kuò)展性、可部署性和可用性方面比單體架構(gòu)風(fēng)格強(qiáng)大得多,但是為了實(shí)現(xiàn)這種強(qiáng)大性能,也存在一些需要權(quán)衡的考慮。

在本節(jié)中,我們將討論與分布式架構(gòu)風(fēng)格相關(guān)的謬論。

謬論:

網(wǎng)絡(luò)可靠。

不能假設(shè)網(wǎng)絡(luò)總是可靠的(最近的電信信號(hào)事件)。眾所周知,網(wǎng)絡(luò)隨著技術(shù)的發(fā)展變得更加可靠,但網(wǎng)絡(luò)仍然普遍不可靠??紤]下圖

服務(wù)B可能完全正常,但由于網(wǎng)絡(luò)問題,服務(wù)A無法與其建立聯(lián)系?;蛘吒愀獾氖?,服務(wù)A向服務(wù)B發(fā)送了一個(gè)處理請(qǐng)求,由于網(wǎng)絡(luò)問題,沒有收到響應(yīng)。系統(tǒng)越依賴網(wǎng)絡(luò),就越有可能變得不可靠。

延遲為零

在討論網(wǎng)絡(luò)變得更快的觀點(diǎn)時(shí),往往會(huì)忽視這個(gè)謬論。但是考慮一種情況,即在單體架構(gòu)中,層與層之間的調(diào)用在本地進(jìn)行,延遲只有納秒級(jí),但在切換到分布式架構(gòu)后,本地調(diào)用變?yōu)檫h(yuǎn)程調(diào)用,延遲增加到毫秒級(jí)。下面的圖表中進(jìn)行了解釋。

帶寬是無限的

當(dāng)使用單體架構(gòu)風(fēng)格時(shí),這個(gè)謬論并不成立,因?yàn)榻M件之間的大部分調(diào)用都是本地方法調(diào)用。但是,當(dāng)系統(tǒng)分布在遠(yuǎn)程位置并需要通過REST調(diào)用進(jìn)行通信時(shí),情況就會(huì)發(fā)生變化。

請(qǐng)參考下面的圖表,其中服務(wù)A依賴于服務(wù)B來滿足用戶請(qǐng)求。對(duì)于單個(gè)請(qǐng)求,這可能是一種不錯(cuò)的體驗(yàn)。但是考慮到有數(shù)千個(gè)并發(fā)請(qǐng)求針對(duì)同一個(gè)查詢,這將導(dǎo)致網(wǎng)絡(luò)變慢,間接消耗帶寬,增加調(diào)用之間的延遲。

網(wǎng)絡(luò)是安全的

由于使用了虛擬專用網(wǎng)絡(luò)(VPN)、安全網(wǎng)絡(luò)和可信網(wǎng)絡(luò)等,大多數(shù)軟件人員往往忽視了這個(gè)謬論。但是網(wǎng)絡(luò)并不安全,在切換到分布式架構(gòu)時(shí),安全性變得更加具有挑戰(zhàn)性。威脅和攻擊的表面積增加了一個(gè)數(shù)量級(jí)。

拓?fù)溆肋h(yuǎn)不會(huì)改變。

這個(gè)謬誤指的是整個(gè)網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu),包括整個(gè)網(wǎng)絡(luò)中使用的所有路由器、集線器、交換機(jī)、防火墻、網(wǎng)絡(luò)和設(shè)備。不要假設(shè)拓?fù)涫枪潭ǖ牟⑶矣肋h(yuǎn)不會(huì)改變。事實(shí)上,它是會(huì)發(fā)生變化的,而且變化是常態(tài)。

只有一個(gè)管理員

在分布式架構(gòu)中,從來沒有單一的管理員。架構(gòu)師需要與多個(gè)管理員合作和溝通,以維護(hù)整個(gè)生態(tài)系統(tǒng)的健康。由于單一部署單元的特性,單體架構(gòu)風(fēng)格不需要這種程度的溝通或協(xié)作。

傳輸成本為零

這里的傳輸成本不是指延遲,而是指與進(jìn)行單個(gè)REST調(diào)用相關(guān)的實(shí)際成本。與單體架構(gòu)相比,分布式架構(gòu)在硬件、服務(wù)器、網(wǎng)關(guān)、防火墻、新子網(wǎng)、代理等方面的成本要高得多。

網(wǎng)絡(luò)是同質(zhì)的

網(wǎng)絡(luò)并不只由一個(gè)網(wǎng)絡(luò)硬件供應(yīng)商構(gòu)成。而且,并非所有這些異構(gòu)的硬件供應(yīng)商之間都能很好地協(xié)同工作。這反過來會(huì)影響網(wǎng)絡(luò)的可靠性、延遲以及對(duì)帶寬的假設(shè)。


責(zé)任編輯:武曉燕 來源: 今日頭條
相關(guān)推薦

2023-12-08 08:38:15

EventLoopAPI瀏覽器

2024-01-08 20:05:32

2022-09-13 09:14:48

架構(gòu)系統(tǒng)

2024-03-27 13:33:00

MySQLInnoDB事務(wù)

2021-10-20 18:49:29

架構(gòu)分布式系統(tǒng)

2023-05-29 14:07:00

Zuul網(wǎng)關(guān)系統(tǒng)

2023-06-09 07:18:03

開源數(shù)據(jù)庫(kù)

2024-05-30 08:19:52

微服務(wù)架構(gòu)大型應(yīng)用

2019-10-10 09:16:34

Zookeeper架構(gòu)分布式

2025-01-07 08:37:35

2023-11-06 07:37:01

函數(shù)式插槽React

2024-01-25 09:10:10

GoRust標(biāo)準(zhǔn)庫(kù)

2023-05-11 08:14:58

國(guó)產(chǎn)數(shù)據(jù)庫(kù)用戶

2019-08-22 10:54:05

分布式系統(tǒng)架構(gòu)

2024-04-11 12:42:30

2021-01-21 08:49:52

數(shù)據(jù)單體架構(gòu)

2024-12-05 10:00:54

K8s參數(shù)Pod

2021-03-12 08:36:27

微服務(wù)分布式單體

2023-05-26 07:55:06

分布式數(shù)據(jù)庫(kù)SQL

2023-12-26 07:37:27

點(diǎn)贊
收藏

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