Redis 企業版多租戶架構

實現安全隔離與高效資源利用

在多租用戶架構中,單一軟體執行個體可為多個不同的使用者群組(或「租用戶」)提供服務。每個租戶的資料都會被安全隔離,確保其對其他租戶不可見且無法存取。這類似於一棟公寓大樓,每位住戶都在共享建築內的獨立單元中生活,彼此互不干擾。

在Redis 中,多租戶意味著單一伺服器能夠有效管理多個租戶的需求,同時確保每個租戶的資料都安全且獨立儲存。這種方法的主要優點包括營運效率和成本效益。因為它能夠最大化資源利用率,而無需為每個新租戶增加額外的實體基礎設施,從而簡化並提升業務擴展的能力。

使用Redis,你可以在本地部署或任何受控的雲端基礎架構上建立多租戶環境。這項特性對於採用微服務架構的內部應用開發尤其重要。透過多租戶模式,你可以避免為每個開發、測試或生產環境單獨建置和維護基礎設施的複雜性和高成本,使得並行建置和測試更加輕鬆高效,且大幅減少工作量。

多執行個體部署中的Redis

RDB(無衝突複製資料庫)是一個跨多個Redis Enterprise 叢集建立的資料庫,這些叢集通常位於全球不同的資料中心。每個參與集群中的資料庫稱為「CRDB 實例」。只要CRDB 資料集的大小適配CRDB 實例的內存,每個CRDB 實例都可以採用不同的配置——它們可以由不同數量的分片組成,並運行在不同數量或類型的叢集節點上。

1. 多實例部署

多租用戶架構和多實例架構有顯著差異。在多實例架構中,每個租用戶都會安裝一個新的軟體實例。下圖展示了Redis 的多實例架構範例。在這種情況下,每個租用戶都會部署一個新的Redis 實例,以滿足資料隔離的需求。然而,隨著租用戶數量的成長,部署、監控、維護和升級多個軟體實例的複雜性也隨之增加。

2. 透過虛擬化/容器化實現多租戶

在這種模式下,Redis 會作為容器或虛擬機器進行部署,由底層管理系統根據需要啟動新的Redis 執行個體。多租戶的管理在伺服器或基礎設施層級完成,確保每個租戶的營運都保持隔離和安全。

這種方法與多實例架構類似,儘管管理階層簡化了Redis 服務的供應和啟動流程,但需要監控和管理的Redis 實例數量並未減少。

許多常見的雲端服務(如Amazon ElastiCache)都採用了這個模式。這些服務的收費方式通常是基於使用的Redis 實例數量。雖然這類服務的可擴展性可以帶來一定的規模效應,但這類優勢往往更有利於服務提供者,而非最終用戶。

3. Redis 的多租戶架構

Redis 提供軟體層面的多租戶能力,在單次部署(通常是節點叢集)中有效支援數百個租戶。每個租戶都會被分配一個獨立的Redis 端點,確保與其他租戶完全隔離。這種方式不僅提高了資源利用率,同時也增強了資料庫的安全性和效能。

在資料中心、私有雲或虛擬私有雲(VPC)中部署Redis,可以充分利用多租戶架構的經濟優勢。透過一個包含少量Redis 節點的集群,就能支援從開發和測試到正式生產的各種需求。這種架構使得企業能夠在同一基礎設施上,高效滿足不同租戶的多樣化需求。

多租戶架構的運作形式

我們的架構透過多個抽象層來實現多租戶、高可用性、線性擴展和高吞吐量等能力。以下是主要元件的解析:

節點(Node)

節點是Redis 軟體運作的基礎硬體單元,可以是實體伺服器、虛擬機器、容器或雲端實例。

資料層(Data Plane)

  • 分片(Shard):Redis 的核心元件是分片,它是運行在單一CPU 核心上的獨立Redis 實例。每個分片管理整個資料集的一部分,並獨立運行,以提升效能和可擴展性。
  • 資料庫(Database):資料庫是租戶資料的邏輯端點,可根據資料規模和吞吐需求分配多個分片。此外,持久化、複製、資料淘汰策略以及透過快閃記憶體擴充RAM 等功能均可在資料庫層級進行設定。資料庫透過在不同節點間分佈主資料庫和副本資料庫來確保高可用性。

資料庫類型

  • 簡單資料庫(Simple Database):只包含一個主分片。
  • 高可用(HA)資料庫:包含一個主分片和一個或多個副本分片。

  • 叢集資料庫(Clustered Database):包含多個主分片,每個分片管理部分資料集。
  • 高可用叢集資料庫(HA Clustered Database):包含多個主-副本分片對,提供更高的容錯能力。

控制層(Control Plane)

零延遲代理(Zero Latency Proxy):整合於每個節點的多執行緒代理,負責將客戶端的Redis 操作路由到正確的資料庫分片。它確保請求精準地定向至相應的分片,從而保持高效運作。

叢集管理器(Cluster Manager):由一組分散式流程組成,負責整個叢集的生命週期管理。此元件獨立於資料路徑(Data Path)部分,承擔以下關鍵任務:

  • 資料庫的建立與刪除:確保資源得到最優利用。
  • 自動擴展(Automatic Sc​​aling):根據負載需求自動調整資源,以應對尖峰工作負載。
  • 自動分片重組(Automatic Resharding):優化資料分佈,確保高吞吐量和低延遲效能。
  • 自動負載平衡(Automatic Rebalancing):維護即時效能,並最佳化資源利用率。
  • 資源管理(Resource Management):持續監控整個系統的健康狀態。
  • 節點監控(Node Watchdog):監測每個Redis 節點上的進程,並在偵測到分片故障時觸發故障轉移事件。
  • 叢集監控(Cluster Watchdog):確保Redis 叢集節點的健康狀態,並在偵測到節點故障時觸發恢復操作。
Redis企業版安全解決方案|ACL存取控制與高可用性防護

Redis 提供了豐富的部署能力,唯一的限制是整個叢集的可用記憶體總量。每個資料庫端點都被分配了一個完全限定域名(FQDN),並且所有節點上的零延遲代理(Zero Latency Proxy)會有效地將客戶端請求重定向到正確的主分片(Primary Shard)。

降低成本,高效運作

Redis 多租戶架構的價值

Redis 的多租戶解決方案帶來了顯著的優勢:

  • 降低基礎設施成本:Redis 透過在單一叢集中運行多個Redis 資料庫端點,最大化基礎設施利用率。例如,在一個三節點叢集上,你可以運行數百個資料庫端點。由於底層的時間分片機制,資料庫執行個體的數量可以遠超可用CPU 核心數量。 Redis 在使用所有可用的實體資源後,才會發出擴展資源的訊號。而相較之下,其他方案(如ElastiCache)通常每個節點或叢集只能提供一個資料庫端點,導致更高的額外成本。
  • 無縫擴展:如果需要,Redis 允許你透過增加分片來擴展資料庫,並將其分佈到多個節點上。 Redis 架構確保此過程不會影響其他租戶(即資料庫)。

  • 靈活調整HA、持久化、資料淘汰和資料大小:不同的應用程式對資料持久性和高可用性的要求各不相同。在Redis 中,你可以獨立調整每個資料庫的配置,而不會影響執行在同一節點上的其他資料庫。
  • 開發、測試、生產環境的敏捷性:一旦Redis 叢集建置完成,開發人員可以按需建立Redis 資料庫端點,而無需考慮底層的實體或雲端基礎架構。

Redis 作為經過市場驗證的多租戶解決方案,驅動Redis Cloud 的運行,確保所有資料庫既能滿足效能需求,又能避免“鄰噪效應”,並在分散式環境中保持高可用性。目前,Redis 已在AWS、Azure 和Google Cloud 等主要雲端平台上運行超過50,000 個資料庫端點,全球近10,000 家企業信賴Redis 來支援其核心應用。

Redis 的無共享架構優勢

Redis 採用無共享架構(Shared-Nothing Architecture),將資料路徑元件(如代理程式和分片)與控制和管理元件(如叢集管理進程)徹底分離。這種架構提供了以下優勢,解決了多租戶架構中的關鍵挑戰:

  • 效能:資料路徑組件專注於處理使用者請求,提高整體效能。每個分片都像一個獨立的Redis 實例運行,不需要監控其他實例或管理網路分區,從而最大程度減少來自其他租戶的干擾。
  • 高可用性:即使在分片、重分片和負載平衡過程中,應用程式仍能持續存取資料。 Redis 會自動管理資料可用性,無需人工幹預,確保業務不會中斷。

  • 安全性與資料隱私:Redis 透過受限的CLI、UI 或API 進行角色為基礎的存取控制,確保所有設定指令的安全性。基於代理的架構確保每個分片僅與經過身份驗證的實體交互,並處理經過驗證的請求,從而防止未經授權的訪問,增強租戶間的資料隱私保護。
  • 可管理性:資料庫的建立、設定變更和軟體更新可以透過UI 或API 統一管理,並且不會影響使用者流量,確保系統平穩運作和資源高效分配。
  • 可擴展性與資源分配:無共享架構支援橫向擴展,能夠將資料集合理地分佈到多個節點、伺服器和叢集。這不僅能滿足業務成長需求,還能合理分配資源,避免單一租戶佔用過多系統資源,確保所有租戶都能公平使用系統資源。

真實案例:Redis 在企業中的應用

Redis 的多租戶架構已被眾多企業成功部署,例如:

  • 大型電商企業:該企業利用Redis 多租戶架構管理不同部門(如銷售、市場、庫存)的數據,每個部門作為獨立的租戶運行,確保數據隔離和高效利用資源。
  • SaaS 服務商:某SaaS 企業使用Redis 來管理不同客戶的數據,每個客戶都是獨立的租戶,數據完全隔離。這種架構確保資料隱私,同時優化基礎架構成本。

  • Redis 作為內部PaaS 服務(RaaS):許多公司在內部部署Redis 作為服務(Redis-as-a-Service),為不同團隊提供標準化、集中管理的Redis 資源,提升營運效率。

Redis 多租用戶架構的安全保障

安全性是多租戶環境中的核心問題。 Redis 採用多重安全措施,確保資料隔離,每個租戶的資料對其他租戶完全不可見、無法存取。此外,Redis 還部署了強大的安全機制,如:

  • 嚴格的存取控制,確保只有授權使用者能夠存取資料庫
  • 定期安全審計,排除潛在漏洞

  • 最新的加密標準,確保資料在傳輸和儲存過程中的安全性

這些安全措施為企業提供了額外的保障,確保多租戶環境下的資料安全,建立客戶信任。

Resources

Technical Articles

Honghong will provide you with any support you need!

Our professional Honghong team will be the first to respond and provide you with the best service to solve all your problems.