微服務簡介
隨著微服務架構(gòu)模式被越來越多的開發(fā)者作為應用系統(tǒng)構(gòu)建的首選,穩(wěn)定可靠的微服務運行環(huán)境變的非常重要。
微服務引擎(CSE)是針對微服務解決方案提供的一站式管理平臺,使用微服務引擎,開發(fā)者可以更加專注于業(yè)務開發(fā),提升產(chǎn)品交付效率和質(zhì)量。微服務架構(gòu)模式通常包含如下內(nèi)容:
1、微服務之間的RPC(Remote Procedure Call,遠程過程調(diào)用)通信。微服務架構(gòu)模式要求微服務之間通過RPC進行通信,不采用其他傳統(tǒng)的通信方式,比如共享內(nèi)存、管道等。常見的RPC通信協(xié)議包括REST(HTTP+JSON)、gRPC(HTTP2+protobuffer)、Web Service(HTTP+SOAP)等。使用RPC通信,能夠降低微服務之間的耦合,提升系統(tǒng)的開放性,減少技術選型的限制。一般建議采用業(yè)界標準協(xié)議,比如REST。對于性能要求非常高的場景,也可以考慮私有協(xié)議。
2、分布式微服務實例和服務發(fā)現(xiàn)。微服務架構(gòu)特別強調(diào)架構(gòu)的彈性,業(yè)務架構(gòu)需要支持微服務多實例部署來滿足業(yè)務流量的動態(tài)變化。微服務設計一般會遵循無狀態(tài)設計原則,符合該原則的微服務擴充實例,能夠帶來處理性能的線性提升。當實例數(shù)很多的時候,就需要有一個支持服務注冊和發(fā)現(xiàn)的中間件,用于微服務之間的調(diào)用尋址。
3、配置外置及動態(tài)、集中的配置管理。隨著微服務和實例數(shù)的增加,管理微服務的配置會變得越來越復雜。配置管理中間件給所有微服務提供統(tǒng)一的配置管理視圖,有效降低配置管理的復雜性。配置管理中間件搭配治理控制臺,可以在微服務運行態(tài)對微服務的行為進行調(diào)整,滿足業(yè)務場景變化、不升級應用的業(yè)務訴求。
4、提供熔斷、容錯、限流、負載均衡、降級等微服務治理能力。微服務架構(gòu)存在一些常見的故障模式,通過這些治理能力,能夠減少故障對于整體業(yè)務的影響,避免雪崩效應。
5、調(diào)用鏈、集中日志采集和檢索。查看日志仍然是分析系統(tǒng)故障最常用的手段,調(diào)用鏈信息可以幫助界定故障和分析性能瓶頸。
開發(fā)環(huán)境規(guī)劃管理
規(guī)劃開發(fā)環(huán)境的目的是要保證開發(fā)人員更好的并行工作,減少依賴,減少搭建環(huán)境的工作量,降低生產(chǎn)環(huán)境上線的風險。
管理開發(fā)環(huán)境的目的是為了更好的進行開發(fā)測試,部署上線。、
1、搭建內(nèi)網(wǎng)本地開發(fā)環(huán)境。本地開發(fā)環(huán)境的好處是各個業(yè)務/開發(fā)者可以搭建符合自己需要的最小功能集合環(huán)境,方便查看日志、調(diào)試代碼等。本地開發(fā)環(huán)境能夠極大的提升代碼開發(fā)效率,減少部署和調(diào)試的時間。本地開發(fā)環(huán)境的不足之處是集成度不高,需要集成聯(lián)調(diào)的時候,很難確保環(huán)境穩(wěn)定。
2、云上測試環(huán)境是相對比較穩(wěn)定的集成測試環(huán)境。本地開發(fā)測試完成后,各個業(yè)務將本領域的服務部署到云上測試環(huán)境,并且可以調(diào)用其他領域的服務進行集成測試。根據(jù)業(yè)務規(guī)模的復雜程度,可以將云上測試環(huán)境進一步分為α測試環(huán)境、β測試環(huán)境、γ測試環(huán)境等,這些測試環(huán)境集成程度由低到高。一般γ測試環(huán)境要求和生產(chǎn)環(huán)境一樣的管理,確保環(huán)境穩(wěn)定。
3、生產(chǎn)環(huán)境是正式業(yè)務環(huán)境,生產(chǎn)環(huán)境需要支持灰度升級功能,支持在線聯(lián)調(diào)和引流,保證升級故障對服務造成的影響最小化。
4、云上測試環(huán)境可以通過開放CSE、中間件的公網(wǎng)IP,或者實現(xiàn)網(wǎng)絡互通,這樣可以使用云上的中間件替換本地環(huán)境,減少各個開發(fā)者自行安裝環(huán)境的時間。這種情況也屬于內(nèi)網(wǎng)本地開發(fā)環(huán)境,微服務在本地開發(fā)環(huán)境的機器上運行。云上采用容器部署的微服務和本地開發(fā)環(huán)境機器上部署的微服務無法相互訪問。為了避免沖突,云上測試環(huán)境只作為本地開發(fā)環(huán)境使用。
應用邏輯隔離管理
應用邏輯隔離主要用于不同的開發(fā)環(huán)境共享公共CSE資源的場景,降低成本。邏輯隔離還用于微服務之間的關系管理,通過配合合理的隔離策略,可以更好地控制微服務之間的可訪問性、權(quán)限等。
服務發(fā)現(xiàn)
按照app隔離不同的業(yè)務域的微服務。
不同的業(yè)務域使用不一樣的app名稱。同一個業(yè)務域內(nèi)的服務,能夠相互發(fā)現(xiàn)和點到點訪問。不同業(yè)務域的服務,不能相互發(fā)現(xiàn),需要通過待訪問微服務所在的業(yè)務域內(nèi)的Spring Cloud Gateway去訪問。
動態(tài)配置
動態(tài)配置按照公共、應用、服務三個層次進行管理。
簡單的場景,可以使用應用級配置和服務級配置。應用級配置被該應用下的所有微服務共享,是公共配置;服務級配置只對具體微服務生效,是獨享配置。復雜的場景,可以通過使用custom_tag和custom_value來定義配置。 例如某些配置,是對所有應用共享的,那么就可以使用這個機制。
合理規(guī)劃服務治理
推薦使用ServiceStage部署Spring Cloud應用,使用ServiceStage能夠方便的實現(xiàn)滾動升級。
當使用ServiceStage部署應用的時候,可參考設置應用健康檢查分別配置組件存活探針、組件業(yè)務探針,用以檢測微服務的“存活”狀態(tài)和“就緒”狀態(tài)。
spring Boot提供了開箱即用的容器探針,LivenessStateHealthIndicator 、ReadinessStateHealthIndicator。
配置探針,需要啟用spring-cloud-starter-huawei-actuator功能。
說明:Spring Cloud Huawei 1.9.0-Hoxton和1.9.0-2020.0.x及以上版本才提供這個模塊。
除了設置探針,還需要設置滾動升級策略。核心的參數(shù)為“最大無效實例數(shù)”?!白畲鬅o效實例數(shù)”的默認值是0,當只有1個實例的情況下,滾動升級會存在中斷。建議設置0<=最大無效實例數(shù)<實例數(shù)。
微服務管理教程視頻
1對1咨詢專屬顧問
華為云咨詢電話:950808或4000-955-988 轉(zhuǎn)1
華為云咨詢電話:950808或4000-955-988 轉(zhuǎn)1