阿川私房教材:
學 JavaScript 前端,帶作品集去面試!

63 個專案實戰,寫出作品集,讓面試官眼前一亮!

立即開始免費試讀!

1. 速率限制

速率限制是一種控制客戶端(像使用者、應用程式或系統)在特定時間內可以向伺服器發送請求數量的方式。把它想像成一個交通警察,確保沒有人過度使用或濫用伺服器的資源。

例如,伺服器可能允許單個客戶端每分鐘發送 100 個請求。如果客戶端超過這個限制,伺服器將拒絕額外的請求,通常會回傳 429(請求過多)響應。

速率限制

速率限制的用途:

  1. 防止濫用與過載:速率限制確保單一使用者或系統不會透過發送過多請求而使伺服器癱瘓。
  2. 控制成本:有助於避免意外的高資源使用(例如帶寬或計算能力),這可能會很昂貴。例如,限制免費用戶帳戶的 API 呼叫,避免在不支付的情況下過度使用。
  3. 增強安全性:幫助減輕像 DDoS(分散式拒絕服務攻擊)等攻擊,透過封鎖來自攻擊者的過量請求。

2. 負載平衡

負載平衡是一種將來自用戶的請求或流量分配到多個伺服器的方式,以確保沒有單一伺服器被過載。把它想像成一個交通警察,引導車輛(請求)到不同的車道(伺服器),以保持一切運行順暢。

例如,像 Instagram 這樣的社交媒體平台有數百萬用戶同時訪問其伺服器。負載平衡器確保這些請求分散到幾個伺服器,而不是將所有用戶都導向同一台伺服器。

負載平衡器

負載平衡的用途:

  1. 避免伺服器過載:如果所有流量都集中到一台伺服器,它可能因過度負載而崩潰。負載平衡可以通過均勻分配請求來防止這種情況。
  2. 提升性能和速度:通過分散流量,這樣每台伺服器處理的請求數量可控,從而為用戶提供更快的響應。
  3. 擴展應用程式:隨著流量的增長,您可以向池中添加更多伺服器,而負載平衡器將自動開始將流量分配到新伺服器。
  4. 確保高可用性:如果一台伺服器出現故障,負載平衡器會將流量重定向到其他正常工作的伺服器,確保網站或服務保持在線。

3. 快取

快取是一種臨時存儲經常訪問的數據的方式,這樣可以快速檢索,而不必一次又一次地從原始來源獲取。

把它想像成把常用食譜放在廚房檯面上。每次需要時,您不必總是翻閱食譜書,而是直接從檯面上取用,節省了時間和精力。

大多數後端系統會使用快取來儲存經常使用的數據庫查詢結果、API 回應或預先渲染的網頁。Redis 是後端開發者中流行的快取數據選擇。

快取

快取的用途:

  1. 加快性能:從快取中獲取數據的速度遠比從原始來源(例如,數據庫或伺服器)獲取快得多。
  2. 降低伺服器負擔:通過從快取提供數據,可以減少對後端的請求數量,防止其過載。
  3. 應對高流量:在高峰使用期,快取可以確保系統能夠處理眾多用戶而不會變慢。

4. 內容傳遞網路 (CDN)

內容傳遞網路 (CDN) 是一組分散在不同地點的伺服器,這些伺服器共同協作將內容更快地傳遞給用戶。它有助於加速網站、圖片、影片和其他內容的加載過程,通過從距離用戶地理位置更近的伺服器提供服務。

想像一个图书馆,书籍存储在不同的分支。如果您不必每次都去中央图书馆取书,您可以去离您最近的分支,更快地获取书籍。CDN 做的事情类似,通过在多个位置存储网站内容的副本。

CDN解釋

CDN的用途:

  1. 更快的加載時間:通過從更靠近用戶的伺服器提供內容,CDN 減少了數據傳輸的距離,從而縮短了加載時間。
  2. 更好的擴展性和可靠性:當網站需要擴展時,CDN使其變得更容易,通過自動處理大量用戶。如果一台伺服器出現故障,CDN可以將流量路由到另一台伺服器,而不影響用戶體驗。

5. 微服務

微服務是一種架構風格,將應用程式劃分為較小的、獨立的服務,每個服務負責一個特定的功能。每個微服務就像一個小積木,專注於一個任務並與其他服務通信,以創建完整的應用程式。

想像一家公司,每個部門(銷售、行銷、財務等)各自獨立工作,但又相互合作以運營業務。同樣,在微服務架構中,每個服務(例如用戶管理、支付處理等)各自運行,但互相互動以使整個系統正常運作。

微服務架構

微服務的對立面是單體架構,所有應用程式的功能都合併為一個單一的、統一的服務或代碼基礎。

微服務的用途:

  1. 可擴展性:因為每個服務都是獨立的,您可以單獨擴展它們。例如,如果支付處理服務的流量增加,您可以僅擴展該服務,而不會影響其他服務。
  2. 彈性和技術選擇:每個微服務可以使用不同的技術堆疊進行構建,允許團隊為每項工作選擇最佳工具。例如,您可以使用 Python 進行數據分析,而使用 Node.js 進行即時聊天,而無需擔心相容性問題。

6. API 閘道

API 閘道是作為所有客戶端請求進入系統的入口伺服器。它將這些請求路由到適當的微服務,處理負載平衡、身份驗證、快取和其他任務。簡而言之,它就像一位門衛,指導訪客到大型建築中的正確部門。

想像一個大型組織,擁有許多部門(微服務),而訪客(用戶)不必直接去每個部門,而是經過一個中央接待處(API 閘道),由它引導到正確的位置。

Kong 是一個流行的開源 API 閘道,被後端開發者廣泛使用。

API閘道

API 閘道的用途:

  1. 單一入口:提供所有請求的單一入口,簡化客戶端與後端服務之間的互動,而不是讓客戶端直接與多個微服務進行通信。API 閘道根據 URL、方法或其他因素將請求定向到正確的微服務,就像一個交通控制員。
  2. 日誌和監控:收集通過的所有請求的日誌和指標,幫助監控系統並除錯問題。
  3. 安全性:對進來的請求進行速率限制、負載平衡和身份驗證令牌檢查。

7. 網頁鉤子

網頁鉤子是一種讓一個應用程序在特定事件發生時,向另一個應用程序發送實時更新或通知的方式。與其讓接收應用程序不斷查詢更新(輪詢),發送應用程序會在需要時自動發送信息。

例如,當某些重要的事情發生時(例如包裹送達),發送者(快遞服務)會立即發送短信給您(接收者),而不是讓您不斷登錄網站查看更新。

網頁鉤子解釋

網頁鉤子的用途:

  1. 實時通知:網頁鉤子提供即時更新,消除了因定期輪詢而造成的延遲。
  2. 自動化:網頁鉤子使不同應用程序或系統之間的自動工作流程成為可能。

8. 分片

分片是一種將大型數據庫拆分為更小、更易管理的部分的方法,稱為分片。每個分片保存了一部分數據,並作為獨立的數據庫運行。

把分片想像成圖書館的書籍根據類型劃分為多個區域。這樣一來,您只需在相關區域中搜尋書籍,而不必在整個圖書館中搜尋,從而使過程更快更高效。

數據庫分片

分片的用途:

  1. 提高性能:通過將數據分散到多個分片上,工作負載得以分散。這減少了任何單一數據庫的負擔,並加快了查詢處理速度。
  2. 高可用性:如果某一個分片故障,僅影響一部分數據。系統的其他部分仍然運作,使其更加韌性。

9. 代理伺服器

代理伺服器是一個作為客戶端(例如您的瀏覽器)和另一個伺服器(例如網站)之間的中介伺服器。您的請求不直接發送到伺服器,而是先經過代理,然後將其轉發到目標伺服器,再將回應發送回來給您。

把它想像成中介:如果要給某人發送消息,您可以將其給中介,由他為您送達並帶回回覆。

代理伺服器

代理伺服器的用途:

  1. 隱私和匿名性:代理通過掩蓋您的 IP 地址來隱藏您的身份。目標伺服器只看到代理的 IP,並不是您的 IP。
  2. 繞過限制:代理允許用戶通過將請求路由到不同位置的伺服器,訪問可能在其區域被封鎖的內容。

10. 消息隊列

消息隊列是一個系統,用於在應用程式的不同部分(或不同應用程式之間)可靠且有序地發送、存儲和檢索消息。與其直接發送消息,隊列像一個郵局:

  • 系統的一部分(發送者)將消息放入隊列中。
  • 另一部分(接收者)在準備後即可提取來處理。

RabbitMQApache Kafka 是兩個流行的消息隊列系統。

消息隊列

消息隊列的用途:

  1. 解耦系統:消息隊列使系統的不同部分能夠獨立工作。發送者和接收者不需要相互了解或同時運作。
  2. 異步處理:消息隊列使背景任務能夠處理,而不需要使用者等待。例如,當您上傳一張照片時,應用程序會立即確認上傳,同時在背景中處理調整和優化任務。

感謝您閱讀我的文章!:pray: 希望您今天能學到一些東西。

請留下反應 🦄 或留言 💬,這樣這篇文章能夠傳達給其他像您一樣的開發者。🌱👨‍💻

準備前端面試?

👉 查看 Frontend Camp

  • 流行的面試問題
  • 流行的前端系統設計問題 (即將推出)
  • 所有免費! ✨

https://frontendcamp.in 立即加入!🚀

https://dev.to/thesanjeevsharma/series/28387 查看 DEV 上的面試系列!


原文出處:https://dev.to/thesanjeevsharma/10-backend-terms-every-frontend-developer-should-know-2o2h

按讚的人:

共有 0 則留言


精選技術文章翻譯,幫助開發者持續吸收新知。

阿川私房教材:
學 JavaScript 前端,帶作品集去面試!

63 個專案實戰,寫出作品集,讓面試官眼前一亮!

立即開始免費試讀!