什么是微服務(wù)?

微服務(wù)是指使用一套小服務(wù)來開發(fā)單個(gè)應(yīng)用的方式,每個(gè)服務(wù)運(yùn)行在獨(dú)立的進(jìn)程里,一般采用輕量級(jí)的通訊機(jī)制互聯(lián),并且它們可以通過自動(dòng)化的方式部署

微服務(wù)的特征

  1. 單一職責(zé)
    只把緊密相關(guān)的服務(wù)放在一起,無關(guān)的業(yè)務(wù)獨(dú)立出去;
    例如:訂單和支付、登錄和注冊(cè)、郵件、短信分別放在一起
  2. 輕量級(jí)通訊
    定義:與平臺(tái)無關(guān),與開發(fā)語言無關(guān)
    例如:Http
    非輕量級(jí):Java的RMI,.Net的Remoting
  3. 隔離性
    每個(gè)微服務(wù)運(yùn)行在自己的進(jìn)程中,不會(huì)相互干擾
  4. 有自己的數(shù)據(jù)
    業(yè)務(wù)數(shù)據(jù)的獨(dú)立性,每個(gè)微服務(wù)都有自己獨(dú)立的存儲(chǔ)系統(tǒng)
  5. 技術(shù)多樣性
    可選擇自己熟悉的語言(Java、C、Golang、Python),提供api就可以了

微服務(wù)誕生的背景

  1. 互聯(lián)網(wǎng)的快速發(fā)展
    需求變化快、用戶數(shù)量變化快
  2. 敏捷開發(fā),精益方法深入人心
    用最小的代價(jià)做最快的迭代,頻繁修改、測(cè)試、上線
  3. 容器技術(shù)的成熟
    docker容器

微服務(wù)架構(gòu)圖

假定業(yè)務(wù)場(chǎng)景
— 在線教育網(wǎng)站

  1. 用戶可以注冊(cè)、登錄,獲取用戶信息
  2. 發(fā)短信、郵件功能
  3. 查看課程列表和課程的基本CURD
    單體架構(gòu)圖:


    image.png

    微服務(wù)架構(gòu)圖:


    image.png

優(yōu)勢(shì)

  1. 獨(dú)立性
    每個(gè)服務(wù)都是單獨(dú)運(yùn)行,與其他服務(wù)互不影響,數(shù)據(jù)庫也獨(dú)立開來,修改的時(shí)候就不用考慮會(huì)影響其他模塊
  2. 敏捷性
    功能單一,有清晰的API
  3. 技術(shù)棧靈活
    每個(gè)微服務(wù)都可以有自己獨(dú)立的技術(shù)棧
  4. 高效團(tuán)隊(duì)
    每個(gè)團(tuán)隊(duì)只負(fù)責(zé)自己的服務(wù)

不足

  1. 額外的工作
    考慮哪些服務(wù)放在一起,哪些服務(wù)需要拆分,不宜太大也不宜太小
  2. 數(shù)據(jù)一致性
    盡量保證對(duì)數(shù)據(jù)庫的連表操作,數(shù)據(jù)表盡量搭在同一個(gè)微服務(wù)內(nèi)
    單體:只有一個(gè)數(shù)據(jù)庫,可采用事物來進(jìn)行多表級(jí)聯(lián)修改、刪除,很容易達(dá)成一致性
  3. 溝通成本
    想修改某個(gè)不是本組負(fù)責(zé)的服務(wù),需要與其他組進(jìn)行溝通處理
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容