微服務(wù)實(shí)踐分享與探討

服務(wù)調(diào)用關(guān)系

API網(wǎng)關(guān)優(yōu)缺點(diǎn)

  • 簡(jiǎn)化溝通方式
    API網(wǎng)關(guān)對(duì)所有微服務(wù)提供單一的訪問點(diǎn)
  • 安全性
    對(duì)客戶端隱藏了服務(wù)發(fā)現(xiàn)和服務(wù)版本
    阻止大規(guī)模攻擊,包括SQL注入,XML解析漏洞和Dos攻擊
    驗(yàn)證token,certificates和其他credentials
  • 混合通訊協(xié)議
    API網(wǎng)關(guān)翻譯并支持不同的通訊協(xié)議
  • 調(diào)用頻率,跨域,緩存配置
  • 需要額外的配置
  • 需要管理路由的配置


常見的微服務(wù)組件及概念

  • 身份認(rèn)證
    用戶、客戶端、資源交互過程中的身份認(rèn)證授權(quán)框架

  • 服務(wù)注冊(cè)
    服務(wù)提供方將自己調(diào)用地址注冊(cè)到服務(wù)注冊(cè)中心,讓服務(wù)調(diào)用方能夠方便地找到自己。

  • 服務(wù)發(fā)現(xiàn)
    服務(wù)調(diào)用方從服務(wù)注冊(cè)中心找到自己需要調(diào)用的服務(wù)的地址。

  • 負(fù)載均衡
    服務(wù)提供方一般以多實(shí)例的形式提供服務(wù),負(fù)載均衡功能能夠讓服務(wù)調(diào)用方連接到合適的服務(wù)節(jié)點(diǎn)。并且,節(jié)點(diǎn)選擇的工作對(duì)服務(wù)調(diào)用方來說是透明的。

  • 服務(wù)網(wǎng)關(guān)
    服務(wù)網(wǎng)關(guān)是服務(wù)調(diào)用的唯一入口,可以在這個(gè)組件是實(shí)現(xiàn)用戶鑒權(quán)、動(dòng)態(tài)路由、灰度發(fā)布、A/B 測(cè)試、負(fù)載限流等功能。

  • 配置中心
    將本地化的配置信息(properties, xml, yaml 等)注冊(cè)到配置中心,實(shí)現(xiàn)程序包在開發(fā)、測(cè)試、生產(chǎn)環(huán)境的無差別性,方便程序包的遷移。

  • API 管理
    以方便的形式編寫及更新 API 文檔,并以方便的形式供調(diào)用者查看和測(cè)試。

  • 集成框架
    微服務(wù)組件都以職責(zé)單一的程序包對(duì)外提供服務(wù),集成框架以配置的形式將所有微服務(wù)組件(特別是管理端組件)集成到統(tǒng)一的界面框架下,讓用戶能夠在統(tǒng)一的界面中使用系統(tǒng)。

  • 分布式事務(wù)
    對(duì)于重要的業(yè)務(wù),需要通過分布式事務(wù)技術(shù)(TCC、高可用消息服務(wù)、最大努力通知)保證數(shù)據(jù)的一致性。

  • 調(diào)用鏈
    記錄完成一個(gè)業(yè)務(wù)邏輯時(shí)調(diào)用到的微服務(wù),并將這種串行或并行的調(diào)用關(guān)系展示出來。在系統(tǒng)出錯(cuò)時(shí),可以方便地找到出錯(cuò)點(diǎn)。

  • 支撐平臺(tái)
    系統(tǒng)微服務(wù)化后,系統(tǒng)變得更加碎片化,系統(tǒng)的部署、運(yùn)維、監(jiān)控等都比單體架構(gòu)更加復(fù)雜,那么,就需要將大部分的工作自動(dòng)化。
    現(xiàn)在,可以通過 Docker 等工具來中和這些微服務(wù)架構(gòu)帶來的弊端。 例如持續(xù)集成、藍(lán)綠發(fā)布、健康檢查、性能健康等等。嚴(yán)重點(diǎn),以我們兩年的實(shí)踐經(jīng)驗(yàn),可以這么說,如果沒有合適的支撐平臺(tái)或工具,就不要使用微服務(wù)架構(gòu)。

身份認(rèn)證架構(gòu)的演變

開發(fā)過程中常見的交互
  • 瀏覽器與Web應(yīng)用程序通信, B/S
  • 瀏覽器與web API通信 B/S
  • 基于瀏覽器的應(yīng)用程序與Web API通信(有時(shí)是獨(dú)立的,有時(shí)代表用戶) electron node-webkit H/S
  • 桌面程序程序與Web API通信 C/S
  • 后臺(tái)Service與web API通信 S/S
  • Web API與Web API通信(有時(shí)是獨(dú)立的,有時(shí)代表用戶)S/S



  • Users 用戶
    使用客戶端訪問微服務(wù)資源的人。
  • Clients 客戶端
    請(qǐng)求令牌的軟件,用于驗(yàn)證用戶(請(qǐng)求身份令牌)或訪問微服務(wù)的程序(請(qǐng)求訪問令牌)。
    如:Web應(yīng)用程序,本地移動(dòng)或桌面應(yīng)用程序,SPA,服務(wù)器進(jìn)程等。
  • Resources(微服務(wù)) 資源
    想要使用IdentityServer保護(hù)的資源 - 您的用戶的身份數(shù)據(jù)或API。
    (每個(gè)資源都有1個(gè)唯一的名稱 - 客戶端使用這個(gè)名稱來指定他們想要訪問的資源。)
  • Identity Data 身份資源
    用戶的標(biāo)識(shí)符,可以包含其他身份數(shù)據(jù)。
  • Access Token 訪問令牌
    訪問API資源的令牌。包含有關(guān)客戶端和用戶的信息(如果存在)。API使用該信息來驗(yàn)證授權(quán)并判斷是否可訪問其數(shù)據(jù)。
    附上:微軟Azure AspNetCore微服務(wù)實(shí)戰(zhàn)PPT
最后編輯于
?著作權(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)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,534評(píng)論 19 139
  • 1. 微服務(wù)架構(gòu)介紹 1.1 什么是微服務(wù)架構(gòu)? 形像一點(diǎn)來說,微服務(wù)架構(gòu)就像搭積木,每個(gè)微服務(wù)都是一個(gè)零件,并使...
    靜修佛緣閱讀 6,808評(píng)論 0 39
  • 摘要:本文中,我們將進(jìn)一步理解微服務(wù)架構(gòu)的核心要點(diǎn)和實(shí)現(xiàn)原理,為讀者的實(shí)踐提供微服務(wù)的設(shè)計(jì)模式,以期讓微服務(wù)在讀者...
    Java架構(gòu)師Carl閱讀 6,361評(píng)論 0 20
  • 最重要的事情只有一件。 我一直不太認(rèn)同這個(gè)觀點(diǎn)。還記得多任務(wù)操作系統(tǒng)的說法,總自信自己也可以做到。直到最近開始反思...
    來是春初閱讀 667評(píng)論 6 7
  • 文/常一 當(dāng)?shù)搅诉x擇的階段,就說明已經(jīng)出現(xiàn)變革的時(shí)期。難道不是嗎?就如紙質(zhì)書與電子書的選擇。 紙與字的...
    常一閱讀 748評(píng)論 0 1

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