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

系統(tǒng)設(shè)計(jì):隨用戶擴(kuò)展的策略

網(wǎng)絡(luò) 系統(tǒng)
隨著用戶基數(shù)的增長(zhǎng)和流量的增加,擴(kuò)展 Web 服務(wù)器的能力變得至關(guān)重要。擴(kuò)展的方式有兩種,即垂直擴(kuò)展和水平擴(kuò)展

單服務(wù)器設(shè)置

在單服務(wù)器設(shè)置中,所有內(nèi)容都運(yùn)行在一臺(tái)服務(wù)器上。這包括網(wǎng)頁(yè)應(yīng)用程序、數(shù)據(jù)庫(kù)、緩存等。

圖1.1 請(qǐng)求流程

  • 最終用戶通過(guò)域名(myurl.com)訪問(wèn)網(wǎng)站。請(qǐng)求發(fā)送到 DNS,將域名映射到 IP 地址。
  • IP 地址返回給網(wǎng)頁(yè)瀏覽器或移動(dòng)應(yīng)用程序。
  • HTTP 請(qǐng)求直接發(fā)送到 web 服務(wù)器。
  • Web 服務(wù)器然后將請(qǐng)求的資源返回給客戶端。在上圖中,返回 HTML 頁(yè)面進(jìn)行渲染。

圖中使用的組件定義如下:

  • Web 服務(wù)器:一臺(tái)能夠通過(guò)互聯(lián)網(wǎng)向最終用戶提供網(wǎng)頁(yè)內(nèi)容的計(jì)算機(jī)系統(tǒng)。它包括網(wǎng)頁(yè)服務(wù)器軟件和網(wǎng)站組件文件,如 HTML 文檔、圖像、CSS 樣式表、JavaScript 文件等。
  • Web 客戶端(Web/移動(dòng)):用于通過(guò) HTTP 連接到 Web 服務(wù)器的客戶端應(yīng)用程序。通常是一個(gè)網(wǎng)頁(yè)瀏覽器或 Web 應(yīng)用程序,用于顯示從服務(wù)器接收的網(wǎng)頁(yè)并允許用戶與 Web 服務(wù)器進(jìn)行交互。
  • 域名系統(tǒng)(DNS):充當(dāng)互聯(lián)網(wǎng)的電話簿。人們通過(guò)域名(google.com)訪問(wèn)信息,但 Web 服務(wù)器使用互聯(lián)網(wǎng)協(xié)議(IP)地址進(jìn)行交互。DNS 將域名轉(zhuǎn)換為 IP 地址,以便瀏覽器可以加載互聯(lián)網(wǎng)資源?;ヂ?lián)網(wǎng)中的每個(gè)設(shè)備都有唯一的 IP 地址,其他機(jī)器使用該地址查找設(shè)備。通常,DNS 是由第三方提供的付費(fèi)服務(wù),不由 Web 服務(wù)器托管。

將數(shù)據(jù)庫(kù)與 Web 服務(wù)器分離

隨著用戶數(shù)量的增長(zhǎng),為了更獨(dú)立地?cái)U(kuò)展,第一步是將數(shù)據(jù)庫(kù)與 Web 服務(wù)器分離。

圖1.2 請(qǐng)求流程

  • 最終用戶通過(guò)域名(myurl.com)訪問(wèn)網(wǎng)站。請(qǐng)求發(fā)送到 DNS,將域名映射到 IP 地址。
  • IP 地址返回給網(wǎng)頁(yè)瀏覽器或移動(dòng)應(yīng)用程序。
  • HTTP 請(qǐng)求直接發(fā)送到 web 服務(wù)器。
  • Web 服務(wù)器向數(shù)據(jù)庫(kù)服務(wù)器發(fā)送請(qǐng)求,執(zhí)行讀取、寫入或更新數(shù)據(jù)操作。
  • 數(shù)據(jù)從數(shù)據(jù)庫(kù)服務(wù)器返回到 web 服務(wù)器。
  • 數(shù)據(jù)在 web 服務(wù)器中處理,最終返回給 Web 客戶端。

圖中新增的組件定義如下:

  • 數(shù)據(jù)庫(kù):存儲(chǔ)在計(jì)算機(jī)系統(tǒng)中的結(jié)構(gòu)化或非結(jié)構(gòu)化信息集合。數(shù)據(jù)庫(kù)的選擇取決于存儲(chǔ)的信息類型。數(shù)據(jù)庫(kù)可以從傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)到非關(guān)系型數(shù)據(jù)庫(kù)等各種類型。
  • 傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù):以表、行和列的方式結(jié)構(gòu)化信息。關(guān)系型數(shù)據(jù)庫(kù)能夠通過(guò)連接表之間的關(guān)系來(lái)建立鏈接,這使得理解和獲取有關(guān)各種數(shù)據(jù)點(diǎn)關(guān)系的見(jiàn)解變得容易。常見(jiàn)的傳統(tǒng)數(shù)據(jù)庫(kù)有 MySQL、Oracle 數(shù)據(jù)庫(kù)、PostgreSQL 等。
  • 非關(guān)系型數(shù)據(jù)庫(kù):也稱為 NoSQL 數(shù)據(jù)庫(kù),使用針對(duì)存儲(chǔ)的數(shù)據(jù)類型的特定要求進(jìn)行優(yōu)化的存儲(chǔ)模型。它可以進(jìn)一步分為多種不同的類別,如鍵值存儲(chǔ)、圖形存儲(chǔ)、列存儲(chǔ)、文檔存儲(chǔ)等。一些常見(jiàn)的例子包括 Cassandra、MongoDB、Neo4j 等。

擴(kuò)展 Web 服務(wù)器

隨著用戶基數(shù)的增長(zhǎng)和流量的增加,擴(kuò)展 Web 服務(wù)器的能力變得至關(guān)重要。擴(kuò)展的方式有兩種,即垂直擴(kuò)展和水平擴(kuò)展。在垂直擴(kuò)展中,通過(guò)向同一臺(tái)服務(wù)器添加更多 CPU、RAM 等來(lái)“擴(kuò)展”,而在水平擴(kuò)展中,通過(guò)向資源池中添加更多服務(wù)器來(lái)“擴(kuò)展”。盡管垂直擴(kuò)展在性質(zhì)上更加簡(jiǎn)單,但它也有自己的局限性。其中一些限制包括硬件限制(無(wú)法向單個(gè)服務(wù)器添加無(wú)限制的內(nèi)存和 CPU),而且存在單點(diǎn)故障,這可能是一個(gè)巨大的缺點(diǎn)。因此,在大規(guī)模應(yīng)用程序的情況下,使用水平擴(kuò)展可能是更好的選擇,通過(guò)負(fù)載均衡器將流量分布到多個(gè)服務(wù)器上。

負(fù)載均衡器:負(fù)載均衡器充當(dāng)流量管理器,位于服務(wù)器前面,將客戶端請(qǐng)求路由到能夠滿足這些請(qǐng)求的所有服務(wù)器上,以最大化速度和容量利用率。負(fù)載均衡器的一些主要責(zé)任包括:

  • 高效地將客戶端請(qǐng)求或網(wǎng)絡(luò)負(fù)載分布到多個(gè)服務(wù)器上。
  • 僅將請(qǐng)求發(fā)送到在線的服務(wù)器,確保高可用性和可靠性。
  • 根據(jù)需求靈活添加或移除服務(wù)器。

用戶直接連接到負(fù)載均衡器的公共 IP。在此架構(gòu)中,無(wú)法使用公共 IP 訪問(wèn) Web 服務(wù)器。負(fù)載均衡器使用私有 IP 與不同的服務(wù)器進(jìn)行通信。私有 IP 僅用于在同一網(wǎng)絡(luò)內(nèi)進(jìn)行通信。

一些常見(jiàn)的負(fù)載均衡算法:

  • 輪詢法(Round Robin)— 順序分發(fā)請(qǐng)求。
  • 最少連接法(Least Connections)— 發(fā)送到當(dāng)前連接最少的服務(wù)器。
  • 最少時(shí)間法(Least Time)— 發(fā)送到響應(yīng)最快且連接最少的服務(wù)器。
  • 哈希法(Hash)— 根據(jù)您定義的鍵(如客戶端 IP 地址、URL 等)進(jìn)行分發(fā)。

數(shù)據(jù)可用性和復(fù)制

擴(kuò)展的最關(guān)鍵方面之一是增強(qiáng)數(shù)據(jù)的可用性和可靠性。數(shù)據(jù)復(fù)制是實(shí)現(xiàn)這一目標(biāo)的重要方式,它通過(guò)在不同服務(wù)器上創(chuàng)建和維護(hù)數(shù)據(jù)庫(kù)的副本來(lái)實(shí)現(xiàn)。

在圖1.4中,我們可以看到原始(主)數(shù)據(jù)庫(kù)和副本(從)數(shù)據(jù)庫(kù)之間的主從關(guān)系。

  • 主數(shù)據(jù)庫(kù):僅支持來(lái)自 Web 服務(wù)器的寫入操作。所有修改數(shù)據(jù)的操作,如插入、刪除、更新,都必須發(fā)送到主數(shù)據(jù)庫(kù)。如果主數(shù)據(jù)庫(kù)下線,一個(gè)從數(shù)據(jù)庫(kù)將被提升為新的主數(shù)據(jù)庫(kù)。
  • 從數(shù)據(jù)庫(kù):僅支持來(lái)自 Web 服務(wù)器的讀取操作。通常情況下,從數(shù)據(jù)庫(kù)比主數(shù)據(jù)庫(kù)多,因?yàn)樽x取和寫入的比例總是更高。如果從數(shù)據(jù)庫(kù)下線,一個(gè)新的從數(shù)據(jù)庫(kù)將取代舊的從數(shù)據(jù)庫(kù)。

數(shù)據(jù)復(fù)制的優(yōu)勢(shì):

  • 更好的性能 — 允許更多查詢并行處理。
  • 可靠性 — 數(shù)據(jù)在多個(gè)服務(wù)器上復(fù)制。我們不需要擔(dān)心數(shù)據(jù)丟失。
  • 高可用性 — 如果一個(gè)數(shù)據(jù)服務(wù)器下線,您可以從另一個(gè)數(shù)據(jù)庫(kù)訪問(wèn)存儲(chǔ)的數(shù)據(jù)。

一些其他常見(jiàn)的數(shù)據(jù)復(fù)制類型:

  • 主-主復(fù)制 — 對(duì)任何主數(shù)據(jù)庫(kù)進(jìn)行的更改會(huì)復(fù)制到配置中的其他主數(shù)據(jù)庫(kù)。
  • 快照復(fù)制 — 在特定時(shí)間點(diǎn)創(chuàng)建整個(gè)數(shù)據(jù)庫(kù)的副本,然后將快照復(fù)制到一個(gè)或多個(gè)目的地。

討論了 Web 層和數(shù)據(jù)層之后,我們將簡(jiǎn)要介紹對(duì)改善負(fù)載/響應(yīng)時(shí)間起著關(guān)鍵作用的兩個(gè)其他概念:緩存和內(nèi)容傳遞網(wǎng)絡(luò)(CDN)。

緩存

緩存是一個(gè)臨時(shí)存儲(chǔ)區(qū),用于在內(nèi)存中存儲(chǔ)昂貴響應(yīng)的結(jié)果或頻繁訪問(wèn)的數(shù)據(jù)。

  • 緩存命中 — Web 服務(wù)器從緩存中請(qǐng)求數(shù)據(jù)。如果數(shù)據(jù)存在于緩存中,則為緩存命中。在這種情況下,無(wú)需向數(shù)據(jù)庫(kù)服務(wù)器發(fā)出網(wǎng)絡(luò)調(diào)用。
  • 緩存未命中 — Web 服務(wù)器從緩存中請(qǐng)求數(shù)據(jù)。如果緩存中不包含數(shù)據(jù),則為緩存未命中。此時(shí),需要從數(shù)據(jù)庫(kù)獲取數(shù)據(jù),然后將數(shù)據(jù)保存到緩存中。

使用緩存的一些關(guān)鍵考慮因素:

  • 數(shù)據(jù)讀取頻率高于修改頻率。
  • 實(shí)施良好的過(guò)期策略,這很重要,因?yàn)檠舆t的過(guò)期策略可能導(dǎo)致緩存中的數(shù)據(jù)過(guò)時(shí),而頻繁的過(guò)期策略可能會(huì)降低緩存的效果,因?yàn)檫@會(huì)導(dǎo)致頻繁從數(shù)據(jù)庫(kù)重新加載數(shù)據(jù)。
  • 為了減少故障,請(qǐng)考慮添加多個(gè)緩存服務(wù)器,以避免單點(diǎn)故障。
  • 必須有一個(gè)良好的驅(qū)逐策略。一旦緩存已滿,為了添加新項(xiàng)目,現(xiàn)有項(xiàng)目應(yīng)根據(jù)驅(qū)逐策略進(jìn)行刪除。

緩存的類型:

  • 應(yīng)用程序服務(wù)器緩存 — 緩存與應(yīng)用程序服務(wù)器一起存儲(chǔ)在內(nèi)存中。在多 Web 服務(wù)器系統(tǒng)中,此架構(gòu)中的一個(gè)缺點(diǎn)是,每個(gè)服務(wù)器將不知道已緩存請(qǐng)求,因此會(huì)產(chǎn)生大量的緩存未命中。
  • 分布式緩存 — 每個(gè)節(jié)點(diǎn)將擁有整個(gè)緩存空間的一部分,然后使用一致性哈希函數(shù)將每個(gè)請(qǐng)求路由到可找到緩存請(qǐng)求的地方。
  • 全局緩存 — 您將擁有單個(gè)緩存空間,所有節(jié)點(diǎn)都將使用此單個(gè)空間。

內(nèi)容傳遞網(wǎng)絡(luò)(CDN)

CDN 是一個(gè)由地理位置分散的服務(wù)器網(wǎng)絡(luò),用于傳遞靜態(tài)內(nèi)容,包括圖像、視頻、CSS、JavaScript 文件等。CDN 由像亞馬遜、Akamai 等第三方提供商運(yùn)行。

使用 CDN 的請(qǐng)求流程:

  • 用戶通過(guò) URL 請(qǐng)求資源。這些 URL 是由 CDN 提供商提供的。
  • 如果 CDN 緩存中沒(méi)有資源,則從源(如亞馬遜 S3)請(qǐng)求。
  • 源然后將資源返回給 CDN 服務(wù)器。
  • CDN 緩存資源并將其返回給用戶。該圖像將在 TTL(存活時(shí)間)過(guò)期之前保留在緩存中。
  • 當(dāng)另一個(gè)用戶請(qǐng)求相同資源時(shí),如果 TTL 尚未過(guò)期,則從緩存中獲取。

總之,與用戶規(guī)模的擴(kuò)展不僅是技術(shù)上的挑戰(zhàn),更是現(xiàn)代數(shù)字系統(tǒng)的戰(zhàn)略必需品。從設(shè)計(jì)彈性架構(gòu)到實(shí)施有效的擴(kuò)展策略,我們探討了確保您的系統(tǒng)可以與用戶需求無(wú)縫增長(zhǎng)的關(guān)鍵要素。

責(zé)任編輯:趙寧寧 來(lái)源: 小技術(shù)君
相關(guān)推薦

2012-01-12 13:23:08

響應(yīng)式Web設(shè)計(jì)

2023-12-12 08:00:00

2013-11-13 14:27:06

設(shè)計(jì)頁(yè)面設(shè)計(jì)

2023-10-04 17:44:27

系統(tǒng)設(shè)計(jì)目標(biāo)

2009-06-12 08:51:43

Unix操作系統(tǒng)終端設(shè)置

2015-03-20 10:34:16

用戶體驗(yàn)應(yīng)用設(shè)計(jì)

2024-11-20 13:18:21

2020-09-02 10:57:23

物聯(lián)網(wǎng)擴(kuò)展策略IOT

2023-07-24 09:00:00

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

2022-03-28 13:21:00

云計(jì)算云原生混合云

2017-10-26 12:26:45

云計(jì)算SaaS平臺(tái)管理

2017-07-07 10:55:14

數(shù)據(jù)庫(kù)MongoDB設(shè)計(jì)模式

2023-08-16 12:34:16

同步備份異步備份

2015-07-28 14:35:40

2015-08-18 10:00:53

2011-05-07 16:36:57

2023-07-09 15:20:00

緩存平衡性能

2023-01-29 10:36:33

LinuxGNOME

2021-01-21 13:59:19

物聯(lián)網(wǎng)互聯(lián)網(wǎng)IoT

2023-08-14 09:46:12

高并發(fā)消息
點(diǎn)贊
收藏

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