日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本篇文章轉自微軟官網技術文檔。設計原則,優缺點等都總結的很好,非常值得閱讀收藏,歡迎關注我。

微服務體系結構由一系列小型的自治服務組成。 每個服務都是自包含服務,并且應實現單個業務功能。

微軟關于微服務體系結構的理解

 

在某些方面,微服務是面向服務的體系結構 (SOA) 的自然演變,但微服務與 SOA 之間也存在一些差異。 下面是微服務的一些典型特征:

  • 在微服務體系結構中,服務具有規模小、獨立和松散耦合的特點。
  • 每個服務都是一個單獨的基本代碼,可由小型開發團隊管理。
  • 服務可獨立部署。 團隊可以更新現有服務,而無需重新生成和重新部署整個應用程序。
  • 服務負責暫留自己的數據或外部狀態。 這一點與傳統模型不同,后者由單獨的數據層處理數據暫留。
  • 服務通過定義完善的 API 相互通信。 每個服務的內部實現細節均對其他服務隱藏。
  • 服務無需共享相同的技術堆棧、庫或框架。

除了服務本身,典型微服務體系結構中還會出現其他組件:

管理。 管理組件負責將服務放置在節點上、標識故障、跨節點重新平衡服務等等。

服務發現。 維護一個包含服務及其所在節點的列表。 支持使用服務查找功能查找服務的終結點。

API 網關。 API 網關是客戶端的入口點。 客戶端不直接調用服務, 而是調用 API 網關,網關再將調用轉發到后端上的相應服務。 API 網關可以聚合來自多個服務的響應,并返回聚合的響應。

使用 API 網關的優點如下:

  • 它分離了客戶端與服務。 無需更新所有客戶端,便可對服務進行版本控制或重構。
  • 服務可以使用對 Web 不友好的消息傳遞協議,比如 AMQP。
  • API 網關可執行身份驗證、日志記錄、SSL 終止和負載均衡等其他跨領域功能。

何時使用此架構

請對以下情況考慮使用此體系結構樣式:

  • 需要較高發布速度的大型應用程序。
  • 需要高度可縮放的復雜應用程序。
  • 具有大量域或多個子域的應用程序。
  • 由小型開發團隊組成的組織。

優點

  • 獨立部署。 無需重新部署整個應用程序便可更新服務,出現問題時可回滾或前滾更新。 Bug 修復和功能發布更易管理,風險更低。
  • 獨立開發。 單個開發團隊便可生成、測試和部署服務, 從而推動持續創新,加快發布節奏。
  • 小型專屬團隊。 團隊可專注于一個服務。 縮小每個服務的范圍后,基本代碼變得更好理解,新的團隊成員也能更快上手。
  • 錯誤隔離。 某個服務中斷不會影響整個應用程序。 但是,這并不意味著用戶可以無償復原。 用戶仍需遵循復原最佳做法和設計模式。 請參閱設計可靠的 Azure 應用程序。
  • 混合技術堆棧。 團隊可選取最適合其服務的技術。
  • 精細縮放。 服務可獨立縮放。 與此同時,每個 VM 的較高服務密度也意味著 VM 資源得到充分利用。 使用放置約束,可將服務與 VM 配置文件(高 CPU、高內存等等)匹配。

挑戰

  • 復雜性。 與同等的單一式應用程序相比,微服務應用程序具有更多移動部件。 每個服務更簡單,但整個系統作為整體來說更復雜。
  • 開發和測試。 針對服務依賴關系的開發需要采用不同的方法。 現有工具不一定能處理這些服務依賴關系。 跨服務邊界進行重構可能很困難。 測試服務依賴關系也有一定難度,尤其是在應用程序快速發展之時。
  • 缺乏監管。 用于生成微服務的分散式方法具有一定優勢,但也可能導致許多問題。 用戶在生成過程中可能采用了許多不同的語言和框架,從而使應用程序變得難以維護。 這種情況下可以實施一些項目范圍內的標準,不過分限制團隊的靈活性。 這尤其適用于日志記錄等跨領域功能。
  • 網絡擁塞和延遲。 使用大量小型的精細服務可能會增加服務間的通信量。 此外,如果服務依賴關系鏈變得太長(服務 A 調用 B,B 調用 C...),額外延遲可能會成為一個問題。 用戶需要精心設計 API。 應避免過于繁瑣的 API,考慮使用序列化格式,并找到可以使用異步通信模式的地方。
  • 數據完整性。 每個微服務負責其自己的數據持久性。 因此,數據一致性可能是個挑戰。 如果可能,請采用最終一致性。
  • 管理。 成功使用微服務需要有成熟的 DevOps 區域性。 跨服務的關聯日志記錄可能很難。 通常情況下,日志記錄必須為單個用戶操作關聯多個服務調用。
  • 版本控制。 對某個服務的更新不應中斷依賴于它的其他服務。 多個服務可在任意給定時間更新,因此,若不精心設計,可能會遇到向后或向前兼容性問題。
  • 技能組合。 微服務是一種高度分布式系統。 請仔細評估團隊是否具有成功使用微服務所需的技能和經驗。

最佳做法

  • 圍繞業務域對服務建模。
  • 分散所有資源。 單個團隊負責設計和生成服務。 避免共享代碼或數據架構。
  • 擁有數據的服務應當有專用的數據存儲。 為每個服務和數據類型使用最合適的存儲。
  • 服務通過設計完善的 API 進行通信。 避免泄露實現細節。 API 應對域建模,而不是對服務的內部實現建模。
  • 避免服務之間耦合。 耦合的原因包括共享的數據庫架構和嚴格的通信協議。
  • 將身份驗證和 SSL 終止等跨領域操作分流到網關。
  • 讓網關不必了解域。 網關應處理和路由客戶端請求,而無需了解業務規則或域邏輯。 否則,網關會變成一個從屬物,從而導致服務之間耦合。
  • 服務應具有松散耦合和高功能內聚的特點。 應當將可能會一起更改的函數打包并部署在一起。 如果它們駐留在不同的服務中,這些服務最終會緊密耦合,因為一個服務中的更改將需要更新其他服務。 兩個服務之間的通信過于頻繁可能是緊密耦合和低內聚的征兆。
  • 隔離故障。

轉自:https://docs.microsoft.com/zh-cn/azure/architecture/guide/architecture-styles/microservices

分享到:
標簽:微服
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定