「微服務系列 01」什麼是微服務,微服務的思考和認知

来源:https://www.cnblogs.com/Agui520/archive/2019/07/26/11248612.html
-Advertisement-
Play Games

近期看了楊波老師講的《微服務》課程,深有感觸,準備做下記錄和學習筆記,希望能尋找到更多的一些方法論和思想進行微服務架構上的指引。 談到微服務,有必要談到兩個人,這兩個人對微服務架構的定義產生非常深遠的影響,一個是馬丁福勒,一個是netflix架構總監Adrian Cockcroft,netflix公 ...


近期看了楊波老師講的《微服務》課程,深有感觸,準備做下記錄和學習筆記,希望能尋找到更多的一些方法論和思想進行微服務架構上的指引。

 

 

談到微服務,有必要談到兩個人,這兩個人對微服務架構的定義產生非常深遠的影響,一個是馬丁福勒,一個是netflix架構總監Adrian Cockcroft,netflix公司對整個微服務架構推進起到決定性的推進作用。其中馬丁福勒在一篇博文中說了幾個微服務定義的核心點,這裡把它羅列出來。

 

 

第一個人馬丁福勒認為微服務架構是一種架構風格,此架構風格包含了上圖的六個特點

一組小的服務

原來的單塊服務都是業務能力大而全的打包在一個單塊中,微服務主張把這些單塊服務進行拆分,形成一個個小的獨立的服務。這裡有個最大的特點是“小”,那麼糾結要小到什麼程度才為之小,很多同學都會糾結這個小的點,因為這個小並沒有特別和明確的規定,所以這也就引申出了現在很多DDD領域驅動設計來指引微服務的拆分,但基本上一個微服務能讓一個開發人員能夠獨立的理解,基本上就稱為一個微服務,具體有多少行代碼並不是很關鍵。

獨立的進程

微服務是運行在獨立的進程當中,例如java程式部署在tomcat,也可以部署在容器docker中,容易本身也是一種進程,所以微服務可以以進程的方式去擴展。

輕量級的通訊

微服務主張使用輕量級去構建通訊機制,例如http,固定消息格式和減少消息格式,服務之間不耦合,讓通訊儘量輕量。

基於業務能力

微服務是基於業務能力進行構建,例如有用戶服務,登陸服務,商品服務,基於這些業務能力去構建這些微服務。

獨立部署

微服務被拆分開後,每個團隊獨立維護自己的微服務,開發,迭代自己的微服務,是可以獨立的去部署,團隊之間是不需要特別的去協調,這些對業務開發維護可以做到更加的敏捷,輕量,快速。

無集中式管理

原來單體服務是需要整個技術團隊是需要獨立的架構團隊去管理,統一架構,統一技術棧,統一存儲,微服務就不太一樣,微服務主張每個團隊根據自己的技術需要,選擇自己最熟悉,最高效解決問題的技術棧,甚至選擇不同存儲方式。

說到第二個人netflix架構總監 Adrian Cockcroft,他給微服務下了一個定義 : "Loosely Coupled service oriented architecture with bounded context"

  • 首先第一點:服務之間應該是鬆散耦合,不能對周邊有強依賴,如果一個團隊的開發對周邊有強依賴性,則不能認為鬆散耦合
  • 其實第二點:服務面向的架構,微服務還是在本質上無法脫離SOA的理念,本身來說還是一種SOA,只是更加細化落地。
  • 第三點:有界上下文,每個團隊可以維護自己的數據源,不是集中式的數據源,每個團隊可以自己獨立去演化自己的數據源,對業務的支持會更加敏捷

思考點:

微服務可以獨立部署,獨立部署給業務帶來什麼的好處? 微服務是基於有界上下文,每個團隊是可以擁有自己獨立的數據源,但在分散式系統中每個團隊擁有了獨立的數據源會帶什麼挑戰?


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 基於.net core2.2的webapi程式,接收客戶端上傳的文件.按照以下寫法,file的值永遠是null 一.有兩種方法解決這個問題: 1.屬性綁定.在[FromForm]里添加Name屬性如:[FromForm(name = "file")],客戶端調用時需要保持一致 還可以和其他參數一起傳 ...
  • 使用bootstrap3對界面進行柵格佈局的效果比element-ui的效果要強很多,主要體現在不同設備的顯示上,element-ui在這方面有所欠缺。。。 引用bootstrap yarn add bootstrap@3 基於jquery,因此還需要引用2個包,jquery和popper.js, ...
  • 基於Oracle.ManagedDataAccess.Client封裝的Oracle工具類OracleHelper,代碼如下: ...
  • Serilog的基本使用 (一) 引言 (二) 導入包 (三) 配置 (四) 使用 (五) 結語 一 引言 作為一枚小白,來複習一下serilog的使用,如果有錯誤的地方請大佬們斧正。 下麵給出一些資料: 官方網址:https://serilog.net/ Github:https://github ...
  • 擁抱.NETCore,意味著一切跨平臺的開源產品任君選擇,可不必局限於單一操作系統產品,在Java收費的大背景下,.NETCore-prevew7的更新就更能凸顯其價值,Java趨於封閉,.NETCore走向開放,這是顯而易見且正在發生的,選擇做鼓掌的路人還是奮進的勇士,想必已有答案。 ...
  • private void button1_Click(object sender, System.EventArgs e) { //瀏覽文件夾 this.folderBrowserDialog1.ShowDialog(); if(this.folderBrowserDialog1.SelectedP ...
  • Asp.Net Core 使用 MediatR 項目中使用了CQRS讀寫分離, 增刪改 的地方使用了 ,將進程內消息的發送和處理進行解耦。於是便有了這篇文章,整理並記錄一下自己的學習。 遇到問題,解決問題,記錄問題,成長就是一步一步走出來的。 是什麼? 是的,不管你怎麼翻譯都查不到該詞,好多人都猜測 ...
  • 之前在C#裡面序列化直接引入命名空間後使用JavaScriptSerializer jss = new JavaScriptSerializer();就可以用, 而net core裡面不這樣用了,我們來看一看怎麼使用。 1、序列化與反序列化。 2、開發中與C#的不同點。 序列化與反序列化: 同樣的, ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...