引導(dǎo)語:在多租戶架構(gòu)中,一個軟件實例為多個不同的用戶組(或“租戶”)提供服務(wù)。每個租戶的數(shù)據(jù)都被安全地隔離,確保它們對其他租戶不可見且無法訪問??梢詫⑵湎胂鬄橐粭澒⒋髽牵總€人都住在共享建筑中獨立且隔離的單元中。
簡介:Redis的多租戶解決方案為企業(yè)節(jié)省成本、提高效率和靈活性。它允許在單個集群中運行多個數(shù)據(jù)庫端點,最大化資源利用率。通過無縫擴展和微調(diào),滿足不同應(yīng)用程序的需求。無共享架構(gòu)提供高性能、可用性、安全性和可管理性,并支持可擴展性和資源分配。
一、基本概念
多租戶(Multi-Tenancy)技術(shù)是一種軟件架構(gòu)模式,在這種模式下,單一的軟件實例為多個獨立的租戶(Tenant)提供服務(wù)。每個租戶的數(shù)據(jù)和配置被邏輯上隔離,確保安全性和隱私,但物理上共享同一套硬件和軟件資源。多租戶技術(shù)包括以下幾個基本概念:
- 租戶(Tenant):指使用同一軟件實例的獨立實體(公司、部門或個人用戶)。每個租戶的數(shù)據(jù)和配置邏輯上隔離,確保安全性和隱私。
- 共享資源(Shared Resources):通過共享計算資源(服務(wù)器、存儲、網(wǎng)絡(luò))降低成本和提高資源利用率。
- 邏輯隔離(Logical Isolation):通過數(shù)據(jù)庫分區(qū)等技術(shù)手段實現(xiàn)數(shù)據(jù)和操作的嚴(yán)格隔離。
- 可定制性(Customizability):允許租戶根據(jù)需求定制軟件,如界面風(fēng)格、功能模塊和權(quán)限配置。
二、多租戶與Redis
在Redis中,多租戶指的是單個服務(wù)器高效地管理各個租戶的需求,每個租戶都安全地、獨立地維護(hù)其數(shù)據(jù)。操作效率和成本效益是這種方法的幾個關(guān)鍵優(yōu)勢。因為它最大限度地利用資源,不需要為每個新租戶增加額外的物理基礎(chǔ)設(shè)施,從而簡化和擴展業(yè)務(wù)運營。
通過Redis,可以在本地或任何受控的云基礎(chǔ)設(shè)施中創(chuàng)建多租戶環(huán)境。這一功能對于使用微服務(wù)開發(fā)內(nèi)部應(yīng)用程序特別有價值。通過采用多租戶方法,避免了為每個開發(fā)、測試或生產(chǎn)環(huán)境構(gòu)建和維護(hù)單獨基礎(chǔ)設(shè)施的復(fù)雜性和費用。意味著可以并行構(gòu)建和測試,大大減少了工作量。
三、Redis的多實例部署
1、多實例部署
多租戶和多實例架構(gòu)有明顯差異。在多實例架構(gòu)中,每個租戶安裝一個新的軟件實例。下圖展示了Redis多實例架構(gòu)的示例。在這種情況下,為每個租戶部署一個新的Redis實例,以滿足租戶數(shù)據(jù)隔離的需求。但是隨著租戶數(shù)量的增加,部署、監(jiān)控、維護(hù)和升級多個軟件實例的復(fù)雜性也隨之增加。
2、通過虛擬化/容器化實現(xiàn)多租戶
在這種情況下,Redis作為一個容器或虛擬機部署,底層管理系統(tǒng)負(fù)責(zé)根據(jù)需要啟動新的Redis實例。多租戶在服務(wù)器或基礎(chǔ)設(shè)施級別進(jìn)行處理,確保每個租戶的操作保持隔離和安全。這種方法與多實例設(shè)置非常相似,盡管管理層簡化了新Redis服務(wù)的配置和啟動,但需要監(jiān)控和管理的Redis實例數(shù)量沒有改變。
許多常見服務(wù)如Amazon ElastiCache采用這種模式。這些服務(wù)根據(jù)使用的Redis實例數(shù)量收費。雖然這種定價模式和服務(wù)的可擴展性通常會帶來規(guī)模效益,但這些效益的獲利者往往是服務(wù)提供商而非終端用戶。
3、Redis中的多租戶
Redis提供軟件級別的多租戶,單次部署(通常是多節(jié)點的集群部署形式)能高效地支持?jǐn)?shù)百個租戶。每個租戶都被分配到一個獨立的Redis接入端點,且與其他租戶完全隔離。此舉最大化了效率,同時提高了數(shù)據(jù)庫設(shè)置的安全性和性能。
在數(shù)據(jù)中心、私有云或虛擬私有云中部署Redis,可以充分利用多租戶架構(gòu)的效益優(yōu)勢。只需要準(zhǔn)備少量Redis節(jié)點的單個集群,就可以支持從開發(fā)和測試再到完整生產(chǎn)線上環(huán)境的各種業(yè)務(wù)。此種設(shè)置允許在同一基礎(chǔ)設(shè)施中高效地滿足不同租戶的不同需求。
四、Redis的多租戶架構(gòu)是如何工作的
Redis的架構(gòu)在多層抽象上實現(xiàn)多租戶、高可用性、線性擴展和高吞吐量等功能。以下是主要組件的分解:
1、節(jié)點
節(jié)點是Redis軟件運行的硬件基礎(chǔ),可以是物理服務(wù)器、虛擬機、容器或云實例。
2、數(shù)據(jù)管理組件
分片: Redis的核心是分片,運行在單個CPU核心上的核心實例。管理整個數(shù)據(jù)集的一個子集,獨立運行,以提高性能和可擴展性。
數(shù)據(jù)庫: 每個數(shù)據(jù)庫都是租戶數(shù)據(jù)的邏輯端點??梢愿鶕?jù)數(shù)據(jù)大小和吞吐量需求,為一個數(shù)據(jù)庫分配多個分片。持久性、復(fù)制、驅(qū)逐策略以及使用閃存擴展 RAM 等功能都可以在數(shù)據(jù)庫級別進(jìn)行配置。數(shù)據(jù)庫通過在不同節(jié)點上分布主數(shù)據(jù)庫和輔助數(shù)據(jù)庫來確保高可用性。數(shù)據(jù)庫類型包括:
- Simple數(shù)據(jù)庫: 單個主分片
- 高可用(HA)數(shù)據(jù)庫: 一個主分片與一個或多個副本分片
- 集群數(shù)據(jù)庫: 多個主分片,每個分片處理數(shù)據(jù)集的一個部分
- HA集群數(shù)據(jù)庫: 多對主分片和副本分片
3、集群控制組件
零延遲代理(Zero latency proxy):集成到每個節(jié)點的多線程代理,會將Redis操作從客戶端路由到正確的數(shù)據(jù)庫分片。保障了請求將被定向到適當(dāng)?shù)姆制峁└咝Р僮鞯幕A(chǔ)。
集群管理器(Cluster manager):由一組分布式進(jìn)程組成,負(fù)責(zé)管理整個集群生命周期。與數(shù)據(jù)平面組件分離,集群管理器負(fù)責(zé):
- 數(shù)據(jù)庫調(diào)配和取消調(diào)配:確保最佳的資源利用率
- 自動擴展(Automatic scaling):調(diào)整資源以處理高峰工作負(fù)載
- 自動重新分區(qū)(Automatic resharding):確保高吞吐量和低延遲性能
- 自動重新平衡(Automatic rebalancing):保持高吞吐量和實時性能
- 資源管理:監(jiān)控整個系統(tǒng)的健康狀況
- 節(jié)點看門狗(Node watchdog):監(jiān)督每個 Redis 節(jié)點上的進(jìn)程,必要時觸發(fā)分片故障事件
- 集群看門狗(Cluster watchdog):確保 Redis 集群節(jié)點的健康,必要時觸發(fā)節(jié)點故障事件
部署功能非常強大,唯一的限制是集群中可用的總內(nèi)存。每個數(shù)據(jù)庫端點都被分配一個完全限定域名(FQDN),所有節(jié)點上的零延遲代理能有效地將客戶端請求重定向到正確的主分片。
五、通過多租戶降低成本并提升效率
Redis的多租戶解決方案帶來了一些顯著的價值:
1、降低基礎(chǔ)設(shè)施成本:Redis通過允許在單個集群中運行多個Redis數(shù)據(jù)庫端點,最大化基礎(chǔ)設(shè)施利用率。例如,可以在一個簡單的三節(jié)點集群上運行數(shù)百個數(shù)據(jù)庫端點。由于底層的時間片切分機制,運行的數(shù)據(jù)庫實例數(shù)量可以遠(yuǎn)超可用核心數(shù)量。Redis在發(fā)出需要添加更多資源的信號之前,
會利用所有可用的物理資源。相比之下,ElastiCache 等其他解決方案只能為每個節(jié)點或集群提供一個數(shù)據(jù)庫端點,與我們的方法相比,這將導(dǎo)致顯著的額外成本。
2、無縫擴展:可以通過添加更多分片并在多個節(jié)點上擴展來擴展Redis數(shù)據(jù)庫。Redis架構(gòu)確保在此過程中其他租戶(此處為數(shù)據(jù)庫)不會受到影響。
3、針對高可用性、持久性、淘汰和數(shù)據(jù)大小的微調(diào):并非所有應(yīng)用程序?qū)?shù)據(jù)持久性和高可用性都有相同的要求。在Redis中,可以根據(jù)應(yīng)用程序需求調(diào)整數(shù)據(jù)庫,而不影響同一節(jié)點上運行的其他數(shù)據(jù)庫。
4、在開發(fā)、測試和生產(chǎn)環(huán)境中的敏捷性:一旦設(shè)置了Redis集群,應(yīng)用程序開發(fā)人員可以按需配置Redis數(shù)據(jù)庫端點,而無需擔(dān)心底層物理或云基礎(chǔ)設(shè)施。
Redis是一種經(jīng)過市場驗證的多租戶解決方案。這可保證所有數(shù)據(jù)庫滿足其性能要求,同時保持與其他業(yè)務(wù)數(shù)據(jù)庫的隔離,并在分布式環(huán)境中保持高可用性。Redis易于擴展,在主要云平臺(如AWS、Azure和Google Cloud)上運行了超過50,000個數(shù)據(jù)庫端點,近10,000家企業(yè)信任我們,并
使用Redis來處理其最重要的應(yīng)用程序。
六、Redis的無共享架構(gòu)帶來的收益
Redis采用無共享架構(gòu),清楚地將數(shù)據(jù)路徑組件(如代理和分片)與控制和管理組件(如集群管理進(jìn)程)分開。這種架構(gòu)提供了顯著的優(yōu)勢,并解決了關(guān)鍵的多租戶挑戰(zhàn):
1、性能:該架構(gòu)允許數(shù)據(jù)組件實體專注于處理用戶請求,提高整體性能。每個分片獨立運行,類似于獨立的Redis實例,無需監(jiān)控其他實例或管理網(wǎng)絡(luò)分區(qū),這種隔離減少了其他租戶帶來的干擾。
2、可用性:在分片、重新分片重新平衡等工作任務(wù)的期間內(nèi),應(yīng)用程序均保持對數(shù)據(jù)的一致訪問,這種無縫的數(shù)據(jù)可用性由系統(tǒng)自動管理,無需人工干預(yù),保證操作在后臺活動中不中斷。
3、安全性和數(shù)據(jù)隱私:Redis通過將配置命令限制在安全的CLI、UI或API接口上,并使用基于角色的授權(quán)來增強安全性。我們的代理架構(gòu)確保每個分片僅與經(jīng)過身份驗證的實體連接并處理經(jīng)過驗證的請求,從而防止未經(jīng)授權(quán)的訪問并增強租戶間的數(shù)據(jù)隱私。
4、可管理性:數(shù)據(jù)庫配置、配置更改和軟件更新等管理任務(wù)通過單個命令流暢執(zhí)行,也可通過UI或API執(zhí)行。這些任務(wù)在不中斷用戶流量的情況下在集群中執(zhí)行,確保操作順暢和資源分配有效。
5、可擴展性和資源分配:該架構(gòu)支持水平擴展,有效地將數(shù)據(jù)集分布在多個節(jié)點、服務(wù)器和集群中。這種方法不僅適應(yīng)增長,還戰(zhàn)略性地分配資源,防止任何單個租戶獨占系統(tǒng)能力。結(jié)果是資源在所有租戶之間公平分配。
結(jié)語
多租戶技術(shù)從共享計算時代起源,經(jīng)過多年的發(fā)展和演進(jìn),已成為現(xiàn)代云計算和SaaS架構(gòu)中的關(guān)鍵技術(shù)。Redis Enterprise通過高效的多租戶支持和創(chuàng)新的架構(gòu)設(shè)計,提供了強大的性能、靈活性和安全性,為企業(yè)提供了可靠的解決方案。通過不斷優(yōu)化和改進(jìn),Redis Enterprise將在未來繼續(xù)引領(lǐng)多租戶技術(shù)的發(fā)展。
了解 ITT-Redis 更多信息,歡迎前往【艾體寶】官方網(wǎng)站:https://itbigtec.com/
聯(lián)系艾體寶工程師:TEL:15528663362