1. 程式人生 > >微服務架構解析(附思維導圖)

微服務架構解析(附思維導圖)



思維導圖


介紹

微服務架構(Microservice Architecture)是一種架構概念

旨在通過將功能分解到各個離散的服務中以實現對解決方案的解耦

將功能分解到離散的各個服務當中,從而降低系統的耦合性,並提供更加靈活的服務支援。

傳統開發模式和微服務的區別

優點

  • 開發簡單,集中式管理
  • 基本不會重複開發
  • 功能都在本地,沒有分散式的管理和呼叫消耗

缺點

  1. 效率低:開發都在同一個專案改程式碼,相互等待,衝突不斷
  2. 維護難:程式碼功功能耦合在一起,新人不知道何從下手
  3. 不靈活:構建時間長,任何小修改都要重構整個專案,耗時
  4. 穩定性差:一個微小的問題,都可能導致整個應用掛掉
  5. 擴充套件性不夠:無法滿足高併發下的業務需求

微服務架構特徵

官方的定義:

  1. 一些列的獨立的服務共同組成系統
  2. 單獨部署,跑在自己的程序中
  3. 每個服務為獨立的業務開發
  4. 分散式管理
  5. 非常強調隔離性

大概的標準

  1. 分散式服務組成的系統
  2. 按照業務,而不是技術來劃分組織
  3. 做有生命的產品而不是專案
  4. 強服務個體和弱通訊( Smart endpoints and dumb pipes )
  5. 自動化運維( DevOps )
  6. 高度容錯性
  7. 快速演化和迭代

SOA和微服務的區別

  • SOA喜歡重用,微服務喜歡重寫
  • SOA喜歡水平服務,微服務喜歡垂直服務
  • SOA喜歡自上而下,微服務喜歡自下而上

實踐微服務

客戶端如何訪問這些服務

一般在後臺N個服務和UI之間一般會一個代理或者叫API Gateway

作用:
- 提供統一服務入口,讓微服務對前臺透明
- 聚合後臺的服務,節省流量,提升效能
- 提供安全,過濾,流控等API管理功能

每個服務之間如何通訊

  • REST(JAX-RS,Spring Boot)
  • RPC(Thrift, Dubbo)

服務發現服務註冊

  • zookeeper
  • dubbo

服務掛了,如何解決

  • 重試機制
  • 限流
  • 熔斷機制
  • 負載均衡
  • 降級(本地快取)

參考:Netflix的Hystrix

優缺點

  • 優點
    複雜度可控,獨立按需擴充套件,技術選型靈活,容錯,可用性高
  • 缺點
    多服務運維難度,系統部署依賴,服務間通訊成本,資料一致性,系統整合測試,重複工作,效能監控等

思考

微服務對我們的思考,更多的是思維上的轉變。對於微服務架構:技術上不是問題,意識比工具重要。

關於微服務的幾點設計出發點:
1. 應用程式的核心是業務邏輯,按照業務或客戶需求組織資源(這是最難的)
2. 做有生命的產品,而不是專案
3. 頭狼戰隊,全棧化
4. 後臺服務貫徹Single Responsibility Principle(單一職責原則)
5. VM->Docker (to PE)
6. DevOps (to PE)

同時,對於開發同學,有這麼多的中介軟體和強大的PE支援固然是好事,我們也需要深入去了解這些中介軟體背後的原理,知其然知其所以然,在有限的技術資源如何通過開源技術實施微服務?

最後,一般提到微服務都離不開DevOps和Docker,理解微服務架構是核心,devops和docker是工具,是手段。

參考

相關推薦

服務架構解析(思維)

思維導圖 介紹 微服務架構(Microservice Architecture)是一種架構概念 旨在通過將功能分解到各個離散的服務中以實現對解決方案的解耦 將功能分解到離散的各個服務當中,從而降低系統的耦合性,並提供更加靈活的服務

Java架構書籍:服務架構必讀書單(服務架構模式進階

微服務架構必讀書單   《深入理解Spring Cloud與微服務構建》 方誌朋 著 談到微服務,大家眾說紛紜,但卻很難有一個清晰的概念來描述。微服務不是“銀彈”,我理解的微服務是一種文化,而我們要做的就是將微服務的理念運用到實際開發中。經過一系列的技術選型,最終Sp

優秀軟件測試工程師必備的8個能力!-(思維

修改 ron 發展 數據庫架構 很多 針對 個人 run alt 結合自己以往的工作經驗,自己梳理出來一些材料,絕對原創,絕對幹貨。 優秀的軟件測試工程師必備的“8個能力” 作為一名軟件工程師,需要的能力並不多,但是要成為一名優秀的軟件測試工程師,需要的能力就比較多了,自己

分布式學習最佳實踐:從分布式系統的特征開始(思維

擴展 問題 sca ref 調度 這也 集中 技術 park     我的探索歷程   這一部分,與分布式不大相關,記錄的是我是如何在分布式學習這條道路上摸索的,不感興趣的讀者請直接跳到下一章。   過去的一年,我在分布式學習這條道路上苦苦徘徊,始終沒有找到一個好的學

服務架構解析

ab測試 api 解析 很多 也有 機制 文章 處理 軟件 微服務架構的好處   微服務架構模式有很多好處。首先,通過分解巨大單體式應用為多個服務方法解決了復雜性問題。在功能不變的情況下,應用被分解為多個可管理的分支 或服務。每個服務都有一個用RPC-或者消息驅動API定義

C++中類的三種繼承方式public(公有繼承)、protected(保護繼承)、private(私有繼承)之間的差別(思維)【轉】

(轉自:https://blog.csdn.net/coco56/article/details/80467975) 注:若不指明繼承方式,則預設是私有繼承。 一:對於公有繼承(public)方式: 基類的public和protected成員的訪問屬性在派生類中保持不變,但基類的p

分散式學習最佳實踐:從分散式系統的特徵開始(思維

什麼是分散式系統 回到頂部   分散式系統是由一組通過網路進行通訊、為了完成共同的任務而協調工作的計算機節點組成的系統。分散式系統的出現是為了用廉價的、普通的機器完成單個計算機無法完成的計算、儲存任務。其目的是利用更多的機器,處理更多的資料。   首先需要明確的是,只

TensorFlow實現遷移學習(思維與程式碼)

看了李巨集毅的機器學習視訊和莫凡的TensorFlow視訊,對遷移學習的理解其實就是為了偷懶, 在訓練好了的模型上接著訓練其他內容, 充分使用原模型的理解力”. 有時候也是為了避免再次花費特別長的時間重複訓練大型模型. 本文根據《TenorFlow實戰Google深度學習框架》的程式碼進行深

優秀軟體測試工程師必備的“8個能力”——思維

結合自己以往的工作經驗,自己梳理出來一些材料,絕對原創,絕對乾貨。 優秀的軟體測試工程師必備的“8個能力” 作為一名軟體工程師,需要的能力並不多,但是要成為一名優秀的軟體測試工程師,需要的能力就比較多了,自己整理出來8個方面,每個方面都會分成很多細小的方便並進行舉例說明。同樣的,文章的思維導圖放在文末,需

優秀軟件測試工程師必備的“8個能力”——思維

什麽 發送請求 簡歷 測試時間 有一個 上線 ui界面 語言 需求 結合自己以往的工作經驗,自己梳理出來一些材料,絕對原創,絕對幹貨。 優秀的軟件測試工程師必備的“8個能力” 作為一名軟件工程師,需要的能力並不多,但是要成為一名優秀的軟件測試工程師,需要的能力就比較多了,自

WEB前端開發初學者必看的學習路線(思維

很多同學想學習WEB前端開發,雖然網際網路有很多的教程、網站、書籍,可是卻又不知從何開始如何選取。看完網友高等遊民白烏鴉無私分享的原標題為《寫給同事的前端學習路線》這篇文章,相信你會有所收穫。 前端開發入門學習有:HTML、CSS、JavaScript(簡稱JS

從小白到中高階軟體測試工程師成長路線圖!-(思維

本文針對測試小白或者已經簡單入職的朋友,從兩個方向著手,一個是一些思想上的準備和資料的準備,二是零基礎到中級階段的一個成長路線,(思維導圖我放在文末)本文共計 1741 字,預計閱讀時間 4分鐘,處於新的一年多的開頭,相當一部分想轉行或者想自學軟體測試的朋友都是抱著年後找一個

【乾貨】機器學習常用 35 大演算法盤點(思維

本文將帶你遍歷機器學習領域最受歡迎的演算法。系統地瞭解這些演算法有助於進一步掌握機器學習。當然,本文收錄的演算法並不完全,分類的方式也不唯一。不過,看完這篇文章後,下次再有演算法提起,你想不起它長處和用處的可能性就很低了。本文還附有兩張演算法思維導圖供學習使用。 在本文中,

HTML DOM學習筆記(思維

1.什麼是 DOM? DOM 是 W3C(全球資訊網聯盟)的標準。 DOM 定義了訪問 HTML 和 XML 文件的標準: “W3C 文件物件模型 (DOM) 是中立於平臺和語言的介面,它允許程式和指令碼動態地訪問和更新文件的內容、結構和樣式。” W3C

【Spring】只想用一篇文章記錄@Value的使用,不想再找其它了(思維)

1 簡介 不得不說,Spring為大家提供許多開箱即用的功能,@Value就是一個極其常用的功能,它能將配置資訊注入到bean中去。即使是一個簡單的功能,Spring也提供了豐富的注入型別和形式。我經常會忘記一些特別型別注入的寫法,比如說陣列,現在整理一下,希望以後不用再找了。 2 三種形式 使用@Val

精心整理「伺服器Linux C/C++」 成長路程(思維

前言 我不是名校畢業,更沒有大廠的背景,我只是一個畢業不到 2 年的普普通通的程式設計師,在摸爬滾打的工作這段時間裡,深知了有一個「完整的知識體系」是非常重要的。當事人非常後悔沒有在大學期間知道這個道理…… 眾多大廠招人的需求也是非常注重此方面,畢竟我們不能單單只是一個只會寫程式碼的程式設計師,更應該成為

一文帶你瞭解服務架構和設計(多

![南嶽衡陽(封面)](https://pcloud-1258173945.cos.ap-guangzhou.myqcloud.com/uPic/b670310e76c4381777a7eb437048e9d8的副本.jpg) 最近幾年微服務很火,大家都在建設微服務,如果不懂點微服務相關的技術,都不好意

ADO.Net之SqlConnection、 Sqlcommand的應用學習心得(思維,知識解析,案例分析)

ros statistic system 啟動 clone() 連接字符串 esp ans 用戶 ADO.Net之SqlConnection、 Sqlcommand的應用 一、思維導圖: ADO.NET與SQL連接: 二、知識點介紹: SqlConnecti

解析服務架構元件,看這一篇文章就夠

  1. 如何釋出和引用服務   服務描述:服務呼叫首先解決的問題就是服務如何對外描述。 常用的服務描述方式包括 RESTful API、XML 配置以及 IDL 檔案三種。   RESTful API   主要被用作 HTT

思維軟體MindManager2019||mindmanager2019破解版(破解補丁)

思維導圖軟體MindManager2019是一款多功能思維導圖繪製軟體,如同一個虛擬的白板,僅僅通過單一檢視組織頭腦風暴、捕捉想法、交流規劃資訊,有其他軟體無法媲美的專案管理和商業規劃高階功能。利用它可以建立思維導圖和視覺化框架、組織管理資訊、推進商業專案,也可以用它製作學習計劃和進度、展示各種資訊等。