微服務(wù)核心技術(shù)梳理

學習本文前,請確保你了解并搭建過至少一個簡單的微服務(wù)應(yīng)用。對微服務(wù)的設(shè)計理念及編程思想有一定的了解匕争。

當我們需要自己從零開始設(shè)計或搭建微服務(wù)項目的時候捅厂,由于缺乏經(jīng)驗及高人指點贯卦,心中難免有些惶恐。我們要如何去搭建我們的微服務(wù)項目焙贷?如果不能一步到位的話撵割,我們該如何逐步去實施?微服務(wù)系統(tǒng)會存在哪些常見問題辙芍?有哪些風險點需要去關(guān)注啡彬?微服務(wù)的邊界在哪里,哪些東西可以用微服務(wù)來實現(xiàn)故硅,哪些不能庶灿?

那么本文講從易到難、從淺到深吃衅、逐步實現(xiàn)從實用到四高的相關(guān)技術(shù)梳理(高可能往踢、高性能、高并發(fā)徘层、高智能)峻呕。讓你在微服務(wù)項目的各個階段都能夠不慌不忙,胸有成竹的構(gòu)建及完善我們的微服務(wù)項目

1.微服務(wù)最少組件

當我們對微服務(wù)的四高沒什么要求的時候惑灵,僅僅是想將項目拆分成多個團隊并行開發(fā)山上,那我們要如何去搭建我們的微服務(wù)項目呢?

以dubbo微服務(wù)框架為例:
我們至少需要有api網(wǎng)關(guān)、zk英支、provider佩憾、consumer

2.微服務(wù)編排

當我們對微服務(wù)項目進行拆分的時候,該如何下手,怎么拆分才是正確的? 有沒有統(tǒng)一的標準妄帘?

目前業(yè)內(nèi)對微服務(wù)的拆分并沒有統(tǒng)一的規(guī)范及標準楞黄,拆分的時候必須根據(jù)具體的業(yè)務(wù)及開發(fā)團隊現(xiàn)狀來確定。下面我們以一個旅游微服務(wù)系統(tǒng)平臺實例來進行說明:

RPC依賴關(guān)系圖

從上圖我們不難看出一些基本的編排規(guī)則:

  1. 微服務(wù)不能交叉調(diào)用抡驼,否則上線的時候可能會出現(xiàn)服務(wù)不可用的問題
  2. 微服務(wù)可以是獨立的鬼廓、不依賴其他任何服務(wù)的
  3. 微服務(wù)必須進行分層,低層級的不能調(diào)用高層級的微服務(wù)
  4. 微服務(wù)的交互方式致盟,必須提前設(shè)計好碎税,是同步還是異步?
    比如: 消息通知最好用MQ異步來實現(xiàn)馏锡,否則會影響諸如訂單主流程的運行

3.微服務(wù)排障

當我們在線運行的微服務(wù)項目頻繁出現(xiàn)Bug雷蹂,又無法快速準確的定位的時候,我們需要對微服務(wù)項目進行哪些升級改造杯道?

以Dubbo微服務(wù)框架為例匪煌,常見的使用zipkin來進行調(diào)用鏈的跟蹤:


zipkin

在zipkin的圖形管理界面上,很容易能看到調(diào)用鏈故障環(huán)境
ELK日志系統(tǒng)通過對日志的監(jiān)控及分析党巾,也可以幫我們快速定位故障


ELK日志監(jiān)控界面

4.微服務(wù)的高并發(fā)

當微服務(wù)項目在線運營一段時間后萎庭,總會迎來流量的高峰,那我們應(yīng)該提前做好哪些準備來應(yīng)對高并發(fā)的用戶場景呢齿拂?

  1. 利用Nginx進行前后端分離驳规,請靜態(tài)資源部署在NG上
  2. 接入云存儲,把圖片署海、視頻达舒、app安裝包等發(fā)布到云存儲上
  3. 把云存儲、靜態(tài)資源全部接入CDN叹侄,并做好相應(yīng)的策略
  4. 充分利用Redis等緩存層,減輕數(shù)據(jù)庫的壓力

5.微服務(wù)高可用

當個別微服務(wù)偶爾出現(xiàn)問題影響用戶體驗的時候昨登,比如偶爾用戶無法下單趾代、無法支付,又或者我們需要頻繁升級的時候丰辣,我們應(yīng)該采取什么樣的措施撒强?

  1. 負載比較高的服務(wù),相同的開啟多個
  2. 上線發(fā)布的時候笙什,采用灰度發(fā)布的方式
  3. 打開錯誤重試機制飘哨,dubbo默認重試3次

6.微服務(wù)的高性能

當一個項目用戶越來越多、業(yè)務(wù)越來越復(fù)雜琐凭、我們該如何保證在復(fù)雜的業(yè)務(wù)場景下芽隆,實現(xiàn)對用戶請求的快速響應(yīng)?

  1. 數(shù)據(jù)庫開啟一主多從,把查詢量大的微服務(wù)單獨分配到從庫上
  2. 利用Mycat等服務(wù)中間件胚吁,實現(xiàn)對數(shù)據(jù)庫主從自動切換
  3. 利用MapReduce算法牙躺,都任務(wù)進行分片處理,統(tǒng)一結(jié)果匯總
  4. 利用多庫進行數(shù)據(jù)庫水平拆分腕扶,也就是我們常說的分庫分表
  5. 把查詢量大的服務(wù)采用NoSQL數(shù)據(jù)庫(例如:ES)進行部署

7.微服務(wù)的分布式事務(wù)

當多個微服務(wù)同時處理一個用戶請求的時候孽拷,比如用戶下單需要同時調(diào)用權(quán)限系統(tǒng)、商品管理系統(tǒng)半抱、進銷存系統(tǒng)脓恕、支付系統(tǒng)等微服務(wù),如果保證數(shù)據(jù)的一致性窿侈?而且失敗的時候還必須同時回滾炼幔?

常見的分布式事務(wù)有2種

  1. 補償機制,利用定時任務(wù)檢查數(shù)據(jù)是否需要回滾
  2. 強事務(wù)棉磨,利用mysql的xa事務(wù)(也可以使用各種中間件:比如阿里的FESCAR)
#mysql實現(xiàn)XA事務(wù)的SQL語句
XA START 'xatestx','XXXXXXXXXXXXXXXXXXXXXXXX';
INSERT INTO suoron_test (id,name) VALUES(21,'試試');
XA END 'xatestx';
XA PREPARE 'xatestx';
#大家都準備好了江掩,一塊提交
XA COMMIT 'xatestx';
XA ROLLBACK 'xatestx';
XA RECOVER;

8.微服務(wù)服務(wù)治理

當我們團隊越來越大的時候,我們需要把系統(tǒng)交付給運維的兄弟進行維護乘瓤,我們該如何幫忙他們制定專門的運維管理的規(guī)則环形?

微服務(wù)治理

常見的服務(wù)治理框架有:

  1. Dubbo的Admin -- 服務(wù)管理
  2. Spring cloud 的hystrix -- 熔斷
  3. zabbix -- 微服務(wù)監(jiān)控及巡檢
  4. apollo -- 攜程配置管理(后期服務(wù)器配置全由運維負責)

9.微服務(wù)的高智能

當系統(tǒng)出現(xiàn)問題,或者資源不夠的時候衙傀,每次需要手工去維護顯然不現(xiàn)實抬吟,人工處理的響應(yīng)速度太慢,恢復(fù)一個故障可能需要長達幾個小時的時間统抬,那我們該如何實行系統(tǒng)的智能運行火本?

必須充分利用容器集群及容器調(diào)度系統(tǒng)(例如:Kubernetes)
比如:微服務(wù)出現(xiàn)嚴重故障時,容器能夠自動重啟
當請求流量增大的時候自動開啟新的微服務(wù)
當流量減少時聪建,自動釋放資源钙畔,用于資源消耗嚴重的報表統(tǒng)計等

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市金麸,隨后出現(xiàn)的幾起案子擎析,更是在濱河造成了極大的恐慌,老刑警劉巖挥下,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件造烁,死亡現(xiàn)場離奇詭異镐侯,居然都是意外死亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進店門便锨,熙熙樓的掌柜王于貴愁眉苦臉地迎上來婉陷,“玉大人聚蝶,你說我怎么就攤上這事奄侠∷材冢” “怎么了?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵蔓肯,是天一觀的道長遂鹊。 經(jīng)常有香客問我,道長蔗包,這世上最難降的妖魔是什么秉扑? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮调限,結(jié)果婚禮上舟陆,老公的妹妹穿的比我還像新娘。我一直安慰自己耻矮,他們只是感情好秦躯,可當我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著裆装,像睡著了一般踱承。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上哨免,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天茎活,我揣著相機與錄音,去河邊找鬼琢唾。 笑死载荔,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的采桃。 我是一名探鬼主播懒熙,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼普办!你這毒婦竟也來了工扎?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤衔蹲,失蹤者是張志新(化名)和其女友劉穎定庵,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體踪危,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年猪落,在試婚紗的時候發(fā)現(xiàn)自己被綠了贞远。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡笨忌,死狀恐怖蓝仲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤袱结,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布亮隙,位于F島的核電站,受9級特大地震影響垢夹,放射性物質(zhì)發(fā)生泄漏溢吻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一果元、第九天 我趴在偏房一處隱蔽的房頂上張望促王。 院中可真熱鬧,春花似錦而晒、人聲如沸蝇狼。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽迅耘。三九已至,卻和暖如春监署,著一層夾襖步出監(jiān)牢的瞬間颤专,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工焦匈, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留血公,地道東北人。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓缓熟,卻偏偏與公主長得像累魔,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子够滑,可洞房花燭夜當晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 地圖 5 皮膚 5 種子 2 材質(zhì) 1 插件 2
    Lopo閱讀 339評論 0 0
  • 我的第一套標配護膚品??美智恩6件套 美智恩前身是專門為韓國新加坡等國家的高端美容院提供專業(yè)院線皮膚修復(fù)產(chǎn)品的品牌...
    目目了閱讀 374評論 0 0
  • 讀一篇膾炙人口的名作垦写, 去邂逅一份古典與優(yōu)雅。 春江潮水連海平彰触,海上明月共潮生梯投。 滟滟隨波千萬里,何處春江無月明况毅。...
    洪華閱讀 1,682評論 13 41
  • 春陽正暖尔许,海風颯然卻也還溫柔么鹤。極目之處,遠山依然如黛味廊,水面波光燦燦蒸甜。近點兒棠耕,一只只漁船整齊列隊,旗幟招展柠新。有海鷗...
    猶俏閱讀 407評論 0 0