引導(dǎo)語(yǔ):基于微服務(wù)的應(yīng)用程序可實(shí)現(xiàn)戰(zhàn)略性數(shù)字轉(zhuǎn)型和云遷移計(jì)劃,對(duì)于開(kāi)發(fā)團(tuán)隊(duì)來(lái)說(shuō),這種架構(gòu)十分重要。那么,如何來(lái)構(gòu)建彈性、高可用的微服務(wù)呢?Redis Enterprise給出了一個(gè)完美的方案。
簡(jiǎn)介:微服務(wù)架構(gòu)可以更快地推出新產(chǎn)品,幫助產(chǎn)品更輕松地?cái)U(kuò)展,并更好地響應(yīng)客戶(hù)需求。憑借多種現(xiàn)代數(shù)據(jù)模型、在任何情況下的容錯(cuò)性、用于隔離的多租戶(hù)功能以及在多個(gè)環(huán)境中部署的靈活性,Redis Enterprise 使開(kāi)發(fā)人員和運(yùn)營(yíng)商能夠針對(duì)微服務(wù)架構(gòu)優(yōu)化他們的數(shù)據(jù)層。
一、什么是微服務(wù)架構(gòu)
正如著名的微服務(wù)專(zhuān)家 Chris Richardson 所定義的那樣,微服務(wù)架構(gòu)是一種將應(yīng)用程序構(gòu)建為低耦合服務(wù)集合的架構(gòu)風(fēng)格,這些服務(wù)具有高度的可維護(hù)性和可測(cè)試性,可獨(dú)立部署,受特定業(yè)務(wù)領(lǐng)域的約束,并由小型團(tuán)隊(duì)負(fù)責(zé)。微服務(wù)架構(gòu)可以快速、頻繁、可靠地交付大型復(fù)雜應(yīng)用程序。
Monolith架構(gòu) vs. 微服務(wù)架構(gòu)
二、為什么微服務(wù)很重要
基于微服務(wù)的應(yīng)用程序可實(shí)現(xiàn)戰(zhàn)略性數(shù)字轉(zhuǎn)型和云遷移計(jì)劃。
1.微服務(wù)是一種架構(gòu)風(fēng)格,有助于開(kāi)發(fā)團(tuán)隊(duì)更快地創(chuàng)建更好的軟件,并最大限度地降低應(yīng)用現(xiàn)代化的成本和復(fù)雜性。這種架構(gòu)風(fēng)格及其相關(guān)的軟件開(kāi)發(fā)文化使微服務(wù)開(kāi)發(fā)團(tuán)隊(duì)能夠按照自己的發(fā)布周期運(yùn)作,擁抱端到端產(chǎn)品的所有權(quán),并采用基于持續(xù)集成/持續(xù)交付的 DevOps 框架。這樣的好處是,企業(yè)可以縮短新服務(wù)開(kāi)發(fā)的上線(xiàn)時(shí)間,通常可將以月為單位的項(xiàng)目縮短至以天為單位。
2.微服務(wù)可加速數(shù)據(jù)層云遷移。這是因?yàn)槲⒎?wù)主要依賴(lài)于云原生 NoSQL 數(shù)據(jù)庫(kù)。2021 年 IDC InfoBrief 調(diào)查顯示,NoSQL 數(shù)據(jù)庫(kù)正在取代內(nèi)部部署的關(guān)系型數(shù)據(jù)庫(kù),因?yàn)楹笳卟皇菫樵苹颡?dú)立發(fā)布周期而構(gòu)建的。
此外,一些企業(yè)無(wú)法一次性將其傳統(tǒng)的單體應(yīng)用遷移到云原生應(yīng)用。微服務(wù)可實(shí)現(xiàn)子域從單體架構(gòu)向現(xiàn)代技術(shù)棧進(jìn)行增量遷移。
三、Redis Enterprise:微服務(wù)的完美方案
1.微服務(wù)規(guī)模的性能
在微服務(wù)環(huán)境中,需要實(shí)時(shí)運(yùn)行的服務(wù)必須平衡網(wǎng)絡(luò)開(kāi)銷(xiāo)。Redis Enterprise 為所有 Redis 數(shù)據(jù)類(lèi)型和模型提供亞毫秒級(jí)延遲。 此外,它可以立即線(xiàn)性擴(kuò)展,以滿(mǎn)足幾乎任何吞吐量需求。
2.為容錯(cuò)和恢復(fù)而設(shè)計(jì)
為確保您的應(yīng)用程序具有故障恢復(fù)能力,Redis Enterprise 采用了無(wú)共享集群架構(gòu)。它在各個(gè)故障級(jí)別都具有容錯(cuò)能力:在進(jìn)程層面、單個(gè)節(jié)點(diǎn)甚至跨基礎(chǔ)架構(gòu)可用區(qū)自動(dòng)進(jìn)行故障切換。它還包括可調(diào)整的持久性和災(zāi)難恢復(fù)能力。
3.利用快速靈活的數(shù)據(jù)模型降低復(fù)雜性
Redis Enterprise允許開(kāi)發(fā)人員為他們的微服務(wù)架構(gòu)和領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)選擇最適合他們的性能和數(shù)據(jù)訪問(wèn)要求的數(shù)據(jù)模型,同時(shí)在單個(gè)數(shù)據(jù)平臺(tái)上保持多租戶(hù)部署的隔離。
4.利用原生 Kubernetes 部署簡(jiǎn)化操作
Redis Enterprise 提供統(tǒng)一的操作界面,可減少技術(shù)學(xué)習(xí)成本、簡(jiǎn)化操作并降低服務(wù)延遲。
針對(duì) Kubernetes 的 Redis Enterprise 運(yùn)營(yíng)商為您提供一致的自動(dòng)化部署,從而降低風(fēng)險(xiǎn)。這讓開(kāi)發(fā)團(tuán)隊(duì)能夠?qū)W⒂趧?chuàng)新和業(yè)務(wù)價(jià)值。
5.可跨云跨地域適應(yīng)
Redis Enterprise 可部署在任何地方:任何云平臺(tái)、內(nèi)部部署、多云或混合云架構(gòu)。
四、微服務(wù)架構(gòu)的設(shè)計(jì)模式
1.微服務(wù)查詢(xún)緩存
獨(dú)立或有界上下文是微服務(wù)架構(gòu)的一個(gè)重要特征。作為領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的一部分,每個(gè)服務(wù)都可以擁有一個(gè)專(zhuān)用數(shù)據(jù)庫(kù),該數(shù)據(jù)庫(kù)有自己獨(dú)特的數(shù)據(jù)模型和SLA(Service Level Agreement,服務(wù)水平協(xié)議)性能目標(biāo)。查詢(xún)緩存是一種常用于縮短微服務(wù)響應(yīng)時(shí)間的緩存模式,其工作原理是在每個(gè)微服務(wù)旁部署 Redis Enterprise 緩存,以提供單一業(yè)務(wù)上下文中所需的數(shù)據(jù)。(也就是說(shuō),它只服務(wù)于一個(gè)微服務(wù))。
Redis Smart Cache 是一個(gè)開(kāi)源庫(kù),可將緩存無(wú)縫添加到任何符合 JDBC 標(biāo)準(zhǔn)的平臺(tái)、應(yīng)用程序或微服務(wù)中,在提高查詢(xún)性能的同時(shí)降低操作復(fù)雜性,而且無(wú)需更改應(yīng)用程序代碼。Redis Enterprise 支持多種數(shù)據(jù)模型,可輕松實(shí)現(xiàn)多租戶(hù)部署,保持?jǐn)?shù)據(jù)隔離的同時(shí),不降低性能。
2.通過(guò) CQRS 緩存跨域共享數(shù)據(jù)
微服務(wù)需要快速訪問(wèn)數(shù)據(jù),但當(dāng)數(shù)十或數(shù)百個(gè)微服務(wù)試圖從同一個(gè)緩慢的磁盤(pán)數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)時(shí),就會(huì)產(chǎn)生許多問(wèn)題??缬驍?shù)據(jù)需要實(shí)時(shí)提供給每個(gè)微服務(wù),而且不能超出其重點(diǎn)業(yè)務(wù)環(huán)境和目標(biāo)的范圍。
命令查詢(xún)責(zé)任隔離(Command-Query Responsibility Segregation, CQRS)是微服務(wù)架構(gòu)中一種重要的預(yù)取緩存模式,它將讀?。ú樵?xún))和寫(xiě)入命令分離開(kāi)來(lái),這使應(yīng)用程序能夠?qū)?shù)據(jù)寫(xiě)入速度較慢的基于磁盤(pán)的 SQL 數(shù)據(jù)庫(kù),同時(shí)使用 Redis Enterprise 中集成的變更數(shù)據(jù)捕獲(CDC)功能預(yù)取和緩存該數(shù)據(jù),以實(shí)現(xiàn)高速讀取。這樣,其他需要數(shù)據(jù)的微服務(wù)就能立即獲得這些數(shù)據(jù)。
3.全局?jǐn)?shù)據(jù)的 API 網(wǎng)關(guān)緩存
微服務(wù)應(yīng)用程序可以在 API 網(wǎng)關(guān)級(jí)別緩存全局訪問(wèn)數(shù)據(jù),以分發(fā)和加速所有服務(wù)都會(huì)訪問(wèn)的數(shù)據(jù)。通常情況下,這些數(shù)據(jù)包括會(huì)話(huà)數(shù)據(jù)(如用戶(hù) ID 和偏好設(shè)置)和驗(yàn)證數(shù)據(jù)(令牌、授權(quán)狀態(tài)和權(quán)限)。這樣,所有服務(wù)都能實(shí)時(shí)獲得頻繁請(qǐng)求的數(shù)據(jù)。結(jié)果如何?減少應(yīng)用延遲,同時(shí)不打破每個(gè)微服務(wù)業(yè)務(wù)上下文的界限。
在 API 網(wǎng)關(guān)上還可以使用 Redis Enterprise 實(shí)現(xiàn)速率限制,即在一定時(shí)間范圍內(nèi)對(duì) API 請(qǐng)求的數(shù)量進(jìn)行計(jì)量。這可以防止系統(tǒng)超載,并防止 DDoS 攻擊。
4.用于服務(wù)間通信的異步消息傳遞
微服務(wù)必須在不破壞隔離的情況下相互通信狀態(tài)、事件和數(shù)據(jù),而且必須保持解耦。常見(jiàn)的解決方案是在架構(gòu)中引入發(fā)布-訂閱消息代理,即讓服務(wù)間通信由事件驅(qū)動(dòng)并最終保持一致,并將微服務(wù)之間的每條消息都視為一個(gè)事件。
Redis Streams 是一種不可變的按時(shí)間排序的日志數(shù)據(jù)結(jié)構(gòu),可讓服務(wù)(生產(chǎn)者)發(fā)布異步消息,多個(gè)消費(fèi)者可訂閱這些消息??梢詫?duì)其進(jìn)行配置,以處理不同的交付保證、支持消費(fèi)者群組,并應(yīng)用與 Apache Kafka 主題分區(qū)類(lèi)似的其他功能。更棒的是,Redis Streams 可幫助在后端創(chuàng)建報(bào)告、分析、審計(jì)和取證分析。
虹科是Redis原廠的中國(guó)區(qū)戰(zhàn)略合作伙伴。我們持續(xù)關(guān)注各行業(yè)當(dāng)下急切需求,專(zhuān)注于為企業(yè)解答疑問(wèn),制定專(zhuān)屬服務(wù),提供一站式數(shù)據(jù)庫(kù)和商業(yè)智能解決方案。了解更多【企業(yè)級(jí)數(shù)據(jù)庫(kù)解決方案】及【企業(yè)緩存指南】,歡迎前往虹科云科技官網(wǎng)!
虹科官網(wǎng):https://www.hkaco.com/
虹科云科技官網(wǎng):企業(yè)級(jí)云解決方案引領(lǐng)者-云計(jì)算-虹科云科技 (hongcloudtech.com)
聯(lián)系虹科工程師:15528663362
聯(lián)系方式鏈接:https://t.dustess.com/Fc6fpUjg
五、適合微服務(wù)架構(gòu)的 Redis 企業(yè)功能
1.雙活備份
微服務(wù)架構(gòu)有許相互多連接的服務(wù),但它面臨著與單體應(yīng)用程序相同的性能需求。為盡量減少延遲,數(shù)據(jù)應(yīng)盡可能靠近服務(wù)。您還需要確保數(shù)據(jù)庫(kù)在發(fā)生故障或更新沖突時(shí)彼此保持一致。Redis Enterprise 可以部署為雙活、無(wú)沖突復(fù)制的數(shù)據(jù)庫(kù),以處理來(lái)自多個(gè)本地服務(wù)安裝的更新,而不會(huì)影響延遲或數(shù)據(jù)一致性,并在發(fā)生故障時(shí)提供連續(xù)性服務(wù)。
2.多種數(shù)據(jù)模型
Redis Enterprise 提供多種數(shù)據(jù)結(jié)構(gòu)(哈希值、字符串、流、列表等)和模型,包括 JSON、搜索、時(shí)間序列和圖形,可讓您選擇最適合您的微服務(wù)領(lǐng)域、性能和數(shù)據(jù)訪問(wèn)要求的數(shù)據(jù)模型,這一切都在一個(gè)數(shù)據(jù)平臺(tái)中實(shí)現(xiàn)。
3.多用戶(hù)數(shù)據(jù)庫(kù)
在微服務(wù)架構(gòu)的數(shù)據(jù)庫(kù)設(shè)計(jì)中,單個(gè) Redis Enterprise 集群可為多個(gè)不同的服務(wù)提供數(shù)據(jù)庫(kù),每個(gè)服務(wù)都有自己的獨(dú)立實(shí)例,并針對(duì)給定的工作負(fù)載進(jìn)行了調(diào)整。每個(gè)數(shù)據(jù)庫(kù)實(shí)例的部署、擴(kuò)展和建模都獨(dú)立于其他實(shí)例,同時(shí)利用相同的集群環(huán)境,在不增加操作復(fù)雜性的情況下隔離服務(wù)之間的數(shù)據(jù)。
4.靈活跨云
微服務(wù)提供了極大的技術(shù)靈活性,選擇在哪里部署數(shù)據(jù)庫(kù)也不例外。Redis Enterprise 可以部署在任何地方:任何云平臺(tái)、企業(yè)內(nèi)部、多云或混合云架構(gòu)。它還可在 Kubernetes、Pivotal Kubernetes Service (PKS) 和 Red Hat OpenShift 上使用。
5.本地 Kubernetes 容器編排和管理
容器與企業(yè)部署微服務(wù)應(yīng)用程序密切相關(guān),并有助于企業(yè)部署微服務(wù)應(yīng)用程序。Kubernetes 是容器部署、調(diào)度和編排的標(biāo)準(zhǔn)平臺(tái)。Redis 是在容器上運(yùn)行的頂級(jí)數(shù)據(jù)庫(kù)技術(shù),Docker hub 啟動(dòng)次數(shù)超過(guò) 20 億次。用于 Kubernetes 的 Redis Enterprise Operator 提供:自動(dòng)可擴(kuò)展性、持久存儲(chǔ)卷、簡(jiǎn)化的數(shù)據(jù)庫(kù)端點(diǎn)管理和零停機(jī)時(shí)間滾動(dòng)升級(jí)。它可在多個(gè) Kubernetes 平臺(tái)和云托管服務(wù)上使用。
虹科是Redis原廠的中國(guó)區(qū)戰(zhàn)略合作伙伴。我們持續(xù)關(guān)注各行業(yè)當(dāng)下急切需求,專(zhuān)注于為企業(yè)解答疑問(wèn),制定專(zhuān)屬服務(wù),提供一站式數(shù)據(jù)庫(kù)和商業(yè)智能解決方案。了解更多【企業(yè)級(jí)數(shù)據(jù)庫(kù)解決方案】及【企業(yè)緩存指南】,歡迎前往虹科云科技官網(wǎng)!
虹科官網(wǎng):https://www.hkaco.com/
虹科云科技官網(wǎng):企業(yè)級(jí)云解決方案引領(lǐng)者-云計(jì)算-虹科云科技?(hongcloudtech.com)
聯(lián)系虹科工程師:15528663362
聯(lián)系方式鏈接:https://t.dustess.com/Fc6fpUjg