基于微服務的應用程序可實現(xiàn)戰(zhàn)略性數(shù)字轉(zhuǎn)型和云遷移計劃,對于開發(fā)團隊來說,這種架構十分重要。那么,如何來構建彈性、高可用的微服務呢?Redis Enterprise給出了一個完美的方案。
文況速覽:
什么是微服務架構?
為什么微服務很重要?
Redis Enterprise:微服務的完美方案
微服務架構的設計模式
適合微服務架構的 Redis 企業(yè)功能
一、什么是微服務架構
正如著名的微服務專家 Chris Richardson 所定義的那樣,微服務架構是一種將應用程序構建為低耦合服務集合的架構風格,這些服務具有高度的可維護性和可測試性,可獨立部署,受特定業(yè)務領域的約束,并由小型團隊負責。微服務架構可以快速、頻繁、可靠地交付大型復雜應用程序。

Monolith架構 vs. 微服務架構
二、為什么微服務很重要
基于微服務的應用程序可實現(xiàn)戰(zhàn)略性數(shù)字轉(zhuǎn)型和云遷移計劃。
1.微服務是一種架構風格,有助于開發(fā)團隊更快地創(chuàng)建更好的軟件,并最大限度地降低應用現(xiàn)代化的成本和復雜性。這種架構風格及其相關的軟件開發(fā)文化使微服務開發(fā)團隊能夠按照自己的發(fā)布周期運作,擁抱端到端產(chǎn)品的所有權,并采用基于持續(xù)集成/持續(xù)交付的 DevOps 框架。這樣的好處是,企業(yè)可以縮短新服務開發(fā)的上線時間,通??蓪⒁栽聻閱挝坏捻椖靠s短至以天為單位。
2.微服務可加速數(shù)據(jù)層云遷移。這是因為微服務主要依賴于云原生 NoSQL 數(shù)據(jù)庫。2021 年 IDC InfoBrief 調(diào)查顯示,NoSQL 數(shù)據(jù)庫正在取代內(nèi)部部署的關系型數(shù)據(jù)庫,因為后者不是為云或獨立發(fā)布周期而構建的。
3.此外,一些企業(yè)無法一次性將其傳統(tǒng)的單體應用遷移到云原生應用。微服務可實現(xiàn)子域從單體架構向現(xiàn)代技術棧進行增量遷移。
三、Redis Enterprise:微服務的完美方案
1.微服務規(guī)模的性能
在微服務環(huán)境中,需要實時運行的服務必須平衡網(wǎng)絡開銷。Redis Enterprise 為所有 Redis 數(shù)據(jù)類型和模型提供亞毫秒級延遲。此外,它可以立即線性擴展,以滿足幾乎任何吞吐量需求。
2.為容錯和恢復而設計
為確保您的應用程序具有故障恢復能力,Redis Enterprise 采用了無共享集群架構。它在各個故障級別都具有容錯能力:在進程層面、單個節(jié)點甚至跨基礎架構可用區(qū)自動進行故障切換。它還包括可調(diào)整的持久性和災難恢復能力。
3.利用快速靈活的數(shù)據(jù)模型降低復雜性
Redis Enterprise允許開發(fā)人員為他們的微服務架構和領域驅(qū)動設計選擇最適合他們的性能和數(shù)據(jù)訪問要求的數(shù)據(jù)模型,同時在單個數(shù)據(jù)平臺上保持多租戶部署的隔離。
4.利用原生 Kubernetes 部署簡化操作
Redis Enterprise 提供統(tǒng)一的操作界面,可減少技術學習成本、簡化操作并降低服務延遲。針對 Kubernetes 的 Redis Enterprise 運營商為您提供一致的自動化部署,從而降低風險。這讓開發(fā)團隊能夠?qū)W⒂趧?chuàng)新和業(yè)務價值。
5.可跨云跨地域適應
Redis Enterprise 可部署在任何地方:任何云平臺、內(nèi)部部署、多云或混合云架構。
四、微服務架構的設計模式
1.微服務查詢緩存
獨立或有界上下文是微服務架構的一個重要特征。作為領域驅(qū)動設計的一部分,每個服務都可以擁有一個專用數(shù)據(jù)庫,該數(shù)據(jù)庫有自己獨特的數(shù)據(jù)模型和SLA(Service Level Agreement,服務水平協(xié)議)性能目標。查詢緩存是一種常用于縮短微服務響應時間的緩存模式,其工作原理是在每個微服務旁部署 Redis Enterprise 緩存,以提供單一業(yè)務上下文中所需的數(shù)據(jù)。(也就是說,它只服務于一個微服務)。
Redis Smart Cache 是一個開源庫,可將緩存無縫添加到任何符合 JDBC 標準的平臺、應用程序或微服務中,在提高查詢性能的同時降低操作復雜性,而且無需更改應用程序代碼。Redis Enterprise 支持多種數(shù)據(jù)模型,可輕松實現(xiàn)多租戶部署,保持數(shù)據(jù)隔離的同時,不降低性能。

2.通過 CQRS 緩存跨域共享數(shù)據(jù)
微服務需要快速訪問數(shù)據(jù),但當數(shù)十或數(shù)百個微服務試圖從同一個緩慢的磁盤數(shù)據(jù)庫中讀取數(shù)據(jù)時,就會產(chǎn)生許多問題??缬驍?shù)據(jù)需要實時提供給每個微服務,而且不能超出其重點業(yè)務環(huán)境和目標的范圍。
命令查詢責任隔離(Command-Query Responsibility Segregation, CQRS)是微服務架構中一種重要的預取緩存模式,它將讀?。ú樵儯┖蛯懭朊罘蛛x開來,這使應用程序能夠?qū)?shù)據(jù)寫入速度較慢的基于磁盤的 SQL 數(shù)據(jù)庫,同時使用 Redis Enterprise 中集成的變更數(shù)據(jù)捕獲(CDC)功能預取和緩存該數(shù)據(jù),以實現(xiàn)高速讀取。這樣,其他需要數(shù)據(jù)的微服務就能立即獲得這些數(shù)據(jù)。

3.全局數(shù)據(jù)的 API 網(wǎng)關緩存
微服務應用程序可以在 API 網(wǎng)關級別緩存全局訪問數(shù)據(jù),以分發(fā)和加速所有服務都會訪問的數(shù)據(jù)。通常情況下,這些數(shù)據(jù)包括會話數(shù)據(jù)(如用戶 ID 和偏好設置)和驗證數(shù)據(jù)(令牌、授權狀態(tài)和權限)。這樣,所有服務都能實時獲得頻繁請求的數(shù)據(jù)。結果如何?減少應用延遲,同時不打破每個微服務業(yè)務上下文的界限。
在 API 網(wǎng)關上還可以使用 Redis Enterprise 實現(xiàn)速率限制,即在一定時間范圍內(nèi)對 API 請求的數(shù)量進行計量。這可以防止系統(tǒng)超載,并防止 DDoS 攻擊。

4.用于服務間通信的異步消息傳遞
微服務必須在不破壞隔離的情況下相互通信狀態(tài)、事件和數(shù)據(jù),而且必須保持解耦。常見的解決方案是在架構中引入發(fā)布-訂閱消息代理,即讓服務間通信由事件驅(qū)動并最終保持一致,并將微服務之間的每條消息都視為一個事件。
Redis Streams 是一種不可變的按時間排序的日志數(shù)據(jù)結構,可讓服務(生產(chǎn)者)發(fā)布異步消息,多個消費者可訂閱這些消息。可以對其進行配置,以處理不同的交付保證、支持消費者群組,并應用與 Apache Kafka 主題分區(qū)類似的其他功能。更棒的是,Redis Streams 可幫助在后端創(chuàng)建報告、分析、審計和取證分析。

五、適合微服務架構的 Redis 企業(yè)功能
1.雙活備份
微服務架構有許相互多連接的服務,但它面臨著與單體應用程序相同的性能需求。為盡量減少延遲,數(shù)據(jù)應盡可能靠近服務。您還需要確保數(shù)據(jù)庫在發(fā)生故障或更新沖突時彼此保持一致。Redis Enterprise 可以部署為雙活、無沖突復制的數(shù)據(jù)庫,以處理來自多個本地服務安裝的更新,而不會影響延遲或數(shù)據(jù)一致性,并在發(fā)生故障時提供連續(xù)性服務。
2.多種數(shù)據(jù)模型
Redis Enterprise 提供多種數(shù)據(jù)結構(哈希值、字符串、流、列表等)和模型,包括 JSON、搜索、時間序列和圖形,可讓您選擇最適合您的微服務領域、性能和數(shù)據(jù)訪問要求的數(shù)據(jù)模型,這一切都在一個數(shù)據(jù)平臺中實現(xiàn)。
3.多用戶數(shù)據(jù)庫
在微服務架構的數(shù)據(jù)庫設計中,單個 Redis Enterprise 集群可為多個不同的服務提供數(shù)據(jù)庫,每個服務都有自己的獨立實例,并針對給定的工作負載進行了調(diào)整。每個數(shù)據(jù)庫實例的部署、擴展和建模都獨立于其他實例,同時利用相同的集群環(huán)境,在不增加操作復雜性的情況下隔離服務之間的數(shù)據(jù)。
4.靈活跨云
微服務提供了極大的技術靈活性,選擇在哪里部署數(shù)據(jù)庫也不例外。Redis Enterprise 可以部署在任何地方:任何云平臺、企業(yè)內(nèi)部、多云或混合云架構。它還可在 Kubernetes、Pivotal Kubernetes Service (PKS) 和 Red Hat OpenShift 上使用。
5.本地 Kubernetes 容器編排和管理
容器與企業(yè)部署微服務應用程序密切相關,并有助于企業(yè)部署微服務應用程序。Kubernetes 是容器部署、調(diào)度和編排的標準平臺。Redis 是在容器上運行的頂級數(shù)據(jù)庫技術,Docker hub 啟動次數(shù)超過 20 億次。用于 Kubernetes 的 Redis Enterprise Operator 提供:自動可擴展性、持久存儲卷、簡化的數(shù)據(jù)庫端點管理和零停機時間滾動升級。它可在多個 Kubernetes 平臺和云托管服務上使用。
-
架構
+關注
關注
1文章
532瀏覽量
26500 -
數(shù)字化
+關注
關注
8文章
10286瀏覽量
66489 -
微服務
+關注
關注
0文章
147瀏覽量
8043
發(fā)布評論請先 登錄
如何基于Nginx構建微服務網(wǎng)關
華納云:海外服務器負載均衡與高可用架構設計
Jtti海外VPS微服務架構下的日志采集與分析優(yōu)化方案
深入剖析RabbitMQ高可用架構設計
如何構建高可用Prometheus監(jiān)控體系
電商API的微服務架構優(yōu)化策略

如何構建彈性、高可用的微服務?
評論