目錄:
一、微服務(wù)介紹
二、微服務(wù)架構(gòu)的常見問題
三、微服務(wù)架構(gòu)的常見概念
四、微服務(wù)架構(gòu)的常見解決方案
概述:
俗話說,兵馬未動,糧草先行,只有更好的理解什么是微服務(wù),才能事半功倍的學(xué)習(xí)好微服務(wù)架構(gòu)。
一、微服務(wù)介紹
微服務(wù)架構(gòu),重點在一個微字,簡單的說就是將單體服務(wù)拆分成更多更小的服務(wù),每個服務(wù)都是一個獨立的,可以運行的項目。我們來看一張圖:

這么拆有什么好處?
沒有拆分之前,你修改一個功能,進(jìn)行測試,部署上線,可能要一個月,要考慮對其他服務(wù)的影響,考慮其他人改動代碼的影響,還要對整個系統(tǒng)功能全量回歸測試,費事費力,可能上線基本上就得1個月,那么服務(wù)拆分之后,可以獨立打包,測試,部署,升級,只需要關(guān)心自己的功能,隨時可以安排上線。而且每個微服務(wù)都有清晰的任務(wù)劃分,利于擴(kuò)展??傊鸱种髮τ陂_發(fā)人員來說是非常爽的一件事。
有好處那就有缺點,服務(wù)多了之后,要考慮怎么管理維護(hù),使用的架構(gòu)也不一樣,技術(shù)學(xué)習(xí)成本也會上升。
二、微服務(wù)架構(gòu)常見的問題
一旦決定采用微服務(wù)架構(gòu)系統(tǒng),就會面臨以下幾個不能饒過的問題:
這么多服務(wù),怎么管理?
這么多服務(wù),他們之間怎么通訊?
這么多服務(wù),用戶應(yīng)該怎么訪問他們?
這么多服務(wù),一旦出現(xiàn)問題了,怎么進(jìn)行自處理?
這么多服務(wù),一旦出現(xiàn)問題了,怎么進(jìn)行問題排查?
上面的這些問題,是任何一個微服務(wù)設(shè)計者都繞不過去的,市面上一些微服務(wù)架構(gòu)產(chǎn)品就是提供了一系列的組件來解決上述問題。
來看一個常見的微服務(wù)架構(gòu)圖

三、微服務(wù)架構(gòu)的常見概念
1、服務(wù)治理
服務(wù)治理就是進(jìn)行服務(wù)的自動化管理,其核心就是服務(wù)的自動注冊與發(fā)現(xiàn)
服務(wù)注冊:服務(wù)啟動的時候?qū)⒆陨淼姆?wù)信息注冊到注冊中心
服務(wù)發(fā)現(xiàn):服務(wù)去注冊中心獲取一些其他服務(wù)注冊到注冊中心的服務(wù)信息,通過這些信息可以去請求他們提供的服務(wù)。
服務(wù)刪除:服務(wù)中心會將不能提供服務(wù)的服務(wù)從注冊中心刪除掉,避免被其他服務(wù)調(diào)用到。
2、服務(wù)調(diào)用
在微服務(wù)架構(gòu)中,?通常存在多個服務(wù)之間的遠(yuǎn)程調(diào)用的需求。目前主流的遠(yuǎn)程調(diào)用技術(shù)有基于HTTP的
RESTful接口以及基于TCP的RPC協(xié)議。
REST(Representational State Transfer):這是一種HTTP調(diào)用的格式,更標(biāo)準(zhǔn),更通用,無論哪 種語言都支持http協(xié)議
RPC(Remote Promote Call):一種進(jìn)程間通信方式。允許像調(diào)用本地服務(wù)一樣調(diào)用遠(yuǎn)程服務(wù)。?RPC框架的主要目標(biāo)就是讓遠(yuǎn)程服務(wù)調(diào)用更簡單、透明。RPC框架負(fù)責(zé)屏蔽底層的傳輸方式、序列 化方式和通信細(xì)節(jié)。開發(fā)人員在使用的時候只需要了解誰在什么位置提供了什么樣的遠(yuǎn)程服務(wù)接口 即可,并不需要關(guān)心底層通信細(xì)節(jié)和調(diào)用過程。
3、服務(wù)網(wǎng)關(guān)
隨著微服務(wù)的不斷增多,不同的微服務(wù)一般會有不同的網(wǎng)絡(luò)地址,而外部客戶端可能需要調(diào)用多個服務(wù) 的接口才能完成一個業(yè)務(wù)需求,如果讓客戶端直接與各個微服務(wù)通信可能出現(xiàn):
客戶端需要調(diào)用不同的url地址,增加難度
在一定的場景下,存在跨域請求的問題
每個微服務(wù)都需要進(jìn)行單獨的身份認(rèn)證
針對這些問題,API網(wǎng)關(guān)順勢而生。
API網(wǎng)關(guān)直面意思是將所有API調(diào)用統(tǒng)一接入到API網(wǎng)關(guān)層,由網(wǎng)關(guān)層統(tǒng)一接入和輸出。一個網(wǎng)關(guān)的基本 功能有:統(tǒng)一接入、安全防護(hù)、協(xié)議適配、流量管控、長短連接支持、容錯能力。有了網(wǎng)關(guān)之后,各個?API服務(wù)提供團(tuán)隊可以專注于自己的的業(yè)務(wù)邏輯處理,而API網(wǎng)關(guān)更專注于安全、流量、路由等問題。
4、服務(wù)容錯
在微服務(wù)當(dāng)中,一個請求經(jīng)常會涉及到調(diào)用幾個服務(wù),如果其中某個服務(wù)不可用,沒有做服務(wù)容錯的 話,極有可能會造成一連串的服務(wù)不可用,這就是雪崩效應(yīng)。我們沒法預(yù)防雪崩效應(yīng)的發(fā)生,只能盡可 能去做好服務(wù)容錯。
5、鏈路追蹤
隨著微服務(wù)架構(gòu)的流行,服務(wù)按照不同的維度進(jìn)行拆分,一次請求往往需要涉及到多個服務(wù)?;ヂ?lián)網(wǎng)應(yīng) 用構(gòu)建在不同的軟件模塊集上,這些軟件模塊,有可能是由不同的團(tuán)隊開發(fā)、可能使用不同的編程語言 來實現(xiàn)、有可能布在了幾千臺服務(wù)器,橫跨多個不同的數(shù)據(jù)中心。因此,就需要對一次請求涉及的多個 服務(wù)鏈路進(jìn)行日志記錄,性能監(jiān)控即鏈路追蹤
四、微服務(wù)架構(gòu)的常見解決方案
目前國內(nèi)主流的微服務(wù)架構(gòu)方案主要是Dubbo+一些自研的組件,目前是一些技術(shù)力量比較雄厚的大公司會采用。另一種是Spring Cloud微服務(wù)技術(shù)棧,目前主要是一些中小型公司在用,可以快速的搭建一套微服務(wù)架構(gòu)。
隨著Spring Cloud的閉源,alibaba提供了一套Spring Cloud Alibaba微服務(wù)技術(shù)棧,Spring Cloud Alibaba 致力于提供微服務(wù)開發(fā)的一站式解決方案。此項目包含開發(fā)分布式應(yīng)用微服務(wù)的 必需組件,方便開發(fā)者通過 Spring Cloud 編程模型輕松使用這些組件來開發(fā)分布式應(yīng)用服務(wù)。
后記
Spring Cloud Alibaba微服務(wù)技術(shù)棧必將是國內(nèi)未來微服務(wù)開發(fā)的主流技術(shù)棧,后續(xù)的微服務(wù)實戰(zhàn)筆記將基于此技術(shù)棧進(jìn)行開發(fā)學(xué)習(xí)。