iT邦幫忙

2023 iThome 鐵人賽

0
Software Development

深入淺出設計模式 - 使用 C++系列 第 34

《補充》 — Design Patterns Used Across Different Layers in Distributed System

  • 分享至 

  • xImage
  •  

本篇原文節錄自 LinkedIn 作者: Arslan Ahmad 的 𝐃𝐞𝐬𝐢𝐠𝐧 𝐏𝐚𝐭𝐭𝐞𝐫𝐧𝐬 𝐔𝐬𝐞𝐝 𝐀𝐜𝐫𝐨𝐬𝐬 𝐃𝐢𝐟𝐟𝐞𝐫𝐞𝐧𝐭 𝐋𝐚𝐲𝐞𝐫𝐬
筆者再透過 Google 以及 ChatGPT4 做點補充筆記。

這邊的 "Layer",用 "Component" 來稱呼似乎更為貼切點

使用在大型軟體系統設計中的 Design Patterns

https://ithelp.ithome.com.tw/upload/images/20231016/20138643p0uMQ9Dhs5.jpg

Client Layer

  • 關鍵字

    • Mobile Client
    • Web Client
    • Desktop Client
  • Client-side Load Balancing (客戶端負載平衡)

    • 分發請求直接到可用的服務實例
  • State Pattern (狀態模式)

    • 允許物件在其內部狀態改變時改變它的行為
  • Composite UI Pattern (複合UI模式)

    • 從多個微服務合成回應以渲染 UI

Load Balancer Layer

  • 關鍵字

    • Hardware Load Balancer
    • Software Load Balancer
  • Geographical Distribution (地理分布)

    • 根據客戶地理位置路由流量
  • Health Check (健康檢查)

    • 定期檢查伺服器的健康狀態並路由流量到健康的伺服器
  • Affinity Based Routing (親和性基礎路由)

    • 根據特定客戶將請求路由到相同的服務實例
  • Round Robin (循環)

    • 均勻地分發請求到各服務實例
  • Least Connections (最少連線)

    • 路由流量到最少活躍連線的伺服器

API Gateway Layer

  • 關鍵字

    • RESTful API
    • GraphQL API
  • Backend for Frontend (BFF) 後端供前端

    • 根據不同的客戶端類型量身定製 API 回應
  • Circuit Breaker 斷路器模式

    • 檢測失敗並防止應用嘗試執行可能會失敗的操作
  • Retry Pattern 重試模式

    • 當嘗試連接到遠程服務或資源時,幫助應用處理瞬時故障
  • Fallback Pattern 備用模式

    • 當服務失敗時提供替代或默認行為
  • Request Collapsing 請求摺疊

    • 折叠多個相同的資料存取操作到單一操作
  • Rate Limiting

    • 控制特定客戶端在特定時間窗口內的請求數量

Web Server Layer

  • 關鍵字

    • Static Content
    • Dynamic Content
  • Page Cache Pattern

    • 存儲操作的輸出結果並重用它,以避免重複的工作
  • Lazy Loading

    • 在需要時才初始化物件
  • Compression Pattern

    • 減少傳輸應答的大小以加快響應速度
  • Content Negotiation

    • 根據客戶端的條件從伺服器提供和服務適當的內容
  • Reverse Proxy

    • 為尋找其他伺服器資源的客戶端提供中間請求

Application Server Layer

  • 關鍵字

    • Business Logic
    • Microservices
  • Saga Pattern

    • 管理長時間運行的交易和失敗補償交易
  • CQRS (Command Query Responsibility Segregation)

    • 分開讀取和寫入操作以提高性能和可擴展性
  • Proxy Pattern

    • 作為客戶端尋求其他伺服器資源的中介者
  • Decorator Pattern

    • 動態地將額外的職責附加到物件上
  • Chain of Responsibility

    • 傳遞請求到一系列的物件中,直到其中一個物件處理該請求

Caching Layer

  • 關鍵字

    • In-memory Cache
    • Distributed Cache
  • Sidecar Caching

    • 在每個微服務旁部署專用的快取,提供獨立和可擴展的緩存功能
  • Time-to-Live (TTL) Caching

    • 為每個快取條目分配生命週期,到期時刪除或刷新
  • Cache Chaining

    • 逐級部署多個快取層,根據不同的壽命或用途進行查詢,並在快取未命中時順序查詢每個快取層
  • Request Collapsing

    • 合併相同的瞬間快取未命中請求,以避免超載數據存儲

CDN Layer

  • 關鍵字

    • Edge Caching
    • Content Delivery
  • Prefetching

    • 預先加載並預測使用者行為,提前讀取資源
  • Parallel Request

    • 將多個請求並行處理以減少加載時間
  • Edge Computing

    • 更靠近用戶位置處理資料
  • Domain Sharding

    • 分割資源來加快並行下載速度
  • Adaptive Image Delivery

    • 根據設備和使用者上下文傳送圖像

Database Layer

  • 關鍵字

    • SQL Database
    • NoSQL Database
  • Sharding Pattern

    • 將資料分散到多個數據庫以提高可擴展性
      Replica-Read Pattern(複製讀取模式): 使用讀取複製來卸載主數據庫實例的讀取操作。
  • Unit of Work Pattern

    • 在一次交易中維護變更的一致性,並協調寫入
  • Query Object Pattern

    • 表示數據庫查詢的物件

Authentication & Authorization Layer

  • 關鍵字
    • OAuth
    • JWT
    • SSO

Service Mesh Layer

  • 關鍵字
    • Istio
    • Linkerd

Orchestration Layer

  • 關鍵字
    • Kubernetes
    • Docker Swarm

Queue & Messaging Layer

  • 關鍵字
    • Kafka
    • RabbitMQ

Monitoring & Logging Layer

  • 關鍵字
    • Prometheus
    • Grafana
    • ELK Stack

Backup & Recovery Layer

  • 關鍵字
    • Data Replication
    • Disaster Recovery

Security Layer

  • 關鍵字
    • Firewall
    • DDoS Protection

更多 Layer

不局限於 Web/App System,筆者也記錄一下嵌入式系統設計中的不同環節 (有時間再來補充常常應用的 Patterns)

Hardware layer

This layer includes the physical components of the system

  • Peripheral Devices
    • microcontroller (e.g., ARM M-series)
    • sensors (e.g., Temperature, pressure, light, camera)
      • Communication Protocols: I2C, SPI, UART, etc.
    • actuators (e.g., Motors)
      • Control Methods: PWM, digital signals, etc.
    • Timer
    • DMA
    • Watch dog timer (WDT)
  • Interrupt Handlers (HW)
    • NVIC(Nested Vectored Interrupt Controller)
    • GIC(Generic Interrupt Controller)

Firmware layer:

This layer includes the low-level software that controls the hardware

  • Device Drivers: Initialization, data transfer, etc.
    • GPIO
    • UART
    • SPI
    • I2C
  • Interrupt Handlers (SW): Manage asynchronous events
    • Hardware (External) Interrupt
    • Timer Interrupt
    • Software Interrupt

Operating system layer:

This layer includes the underlying operating system that provides services to the upper layers

  • Memory Management
  • Task Scheduling

User interface layer:

This layer includes the software that allows users to interact with the embedded system

  • graphical user interface
  • command-line interface

Reference

  1. https://herbertograca.com/2017/08/03/layered-architecture/
  2. https://www.quora.com/How-many-layers-are-there-in-an-embedded-system-design
  3. https://embeddedartistry.com/fieldatlas/16737/
  4. https://www.researchgate.net/figure/Example-usage-of-the-DI-and-DO-Abstract-Layer-design-pattern_fig4_328166591
  5. http://ww1.microchip.com/downloads/en/DeviceDoc/hardware-abstraction-layer.pdf

上一篇
《軟體工程篇 - 5》 — 軟體測試方法 (Software Testing)
下一篇
《補充》 — 30+ Golden Rules in System Design
系列文
深入淺出設計模式 - 使用 C++37
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言