《Spring Cloud微服務實戰》讀書筆記之基礎知識1

来源:https://www.cnblogs.com/guanjianzhuo/archive/2018/09/30/9732970.html
-Advertisement-
Play Games

微服務是一種系統架構的設計風格,它主旨在於將一個原本獨立的系統,拆分成多個獨立運行的小型服務。不同服務之間通過Restful介面進行通訊協作。 ...


摘要

微服務是一種系統架構的設計風格,它主旨在於將一個原本獨立的系統,拆分成多個獨立運行的小型服務。不同服務之間通過Restful介面進行通訊協作。

關鍵詞:Spring Cloud微服務

一、什麼是微服務

微服務是一種系統架構的設計風格,它主旨在於將一個原本獨立的系統,拆分成多個獨立運行的小型服務。不同服務之間通過Restful介面進行通訊協作。

  • 拆分的小型服務圍繞系統耦合度高的業務功能進行構建;
  • 每個服務都維護自身的數據存儲(如何維護?)、業務開發、測試、部署機制;
  • 由於是輕量級通訊協作,微服務可以使用不同語言來編寫;

二、如何實施微服務

引入微服務(與單體應用對比)引發的問題:

  • 運維:維護進程數增加,需要一定的開發能力來編排組織進程;
  • 介面:需要交互雙方協調發佈,完善介面和版本管理,保證介面的正確調用;
  • 分散式環境:拆分後服務只能通過通信來進行協作,所以要考慮分散式環境的因素(網路延遲、分散式事務、非同步消息)

為瞭解決前面的問題,以下是實施微服務一些原則:

1、服務組件化

保證每個服務都獨立開發、部署,避免一個服務修改引起整個系統的重新部署。

2、按業務組織團隊

從按技術層面轉為按業務劃分團隊。(減少溝通成本)

3、以產品態度對待服務

對服務整個生命周期負責,持續關註服務的運作情況。

4、智能端點與啞管道原則

使用微服務不能簡單將函數調用直接改成Restful/RPC調用(避免繁瑣的通信),微服務常用兩種服務調用方式:

  • 基於Http的Restful API(或其它輕量級的消息發送協議) - 請求響應模型,同步阻塞
  • 基於輕量級消息匯流排(MQ) - 觀察模型

關於智能端點與啞管道的概念
關於智能端點與啞管道的概念,我是這樣理解:

  • 啞管道是指消息的通訊,管道是不會通知端點消息的內容、結構,僅提供一個可靠的信息交互功能,稱為“啞”。
  • 智能端點是指端點要主動訂閱管道的消息,去解析裡面的內容,稱為“智能”。

5、去中心化治理

整個架構採用輕量級協議定義介面,各個組件根據具體業務特點進行技術選型。

6、去中心化管理數據

每個服務管理其自有的資料庫。(在改造過程中,將資料庫的數據拆分到其它資料庫中(Mysql、MongoDB、Redis))

面臨的新問題:

  • 分散式事務,所以儘量避免事務,保證各服務之間是"無事務"的調用;
  • 一致性問題,保證最終一致性;

7、基礎設施自動化

由於服務數量的增多,務必需要一個“持續交付”平臺來支持實施。
自動化測試與自動化部署。

8、容錯設計

微服務架構中,可能存在部分服務故障的情況,處理不好會出現故障蔓延的情況。(一個正常服務頻繁調用故障服務、導致大量線程掛起等待超時,最後正常服務也出現了故障)
所以微服務架構中,應快速監測出故障源並儘可能恢復服務。(對每個組件的運行情況(服務狀態、斷路器狀態、吞吐量、網路延遲等)實現監控和日誌記錄)

9、演進式設計

實施微服務應該以演進的方式構建。

三、Spring Cloud 簡介

Spring Cloud 是一個基於Spring Boot 實現的微服務架構解決方案。提供了配置管理、服務治理、斷路器、智能路由、微代理、控制匯流排、全局鎖、決策競選、分散式會話和集群狀態管理等操作的簡單開發方式。

Spring Cloud 子項目介紹:

  • Spring Cloud Config:配置管理工具
  • Spring Cloud Netflix:核心組件
    • Eureka:服務治理組件,服務註冊中心、服務註冊與發現機制
    • Hystrix:容錯管理組件,實現斷路器模式
    • Ribbon:客戶端負載均衡調用組件
    • Feign:基於Ribbon和Hystrix的聲明式服務調用組件
    • Zuul:網關組件
    • Archaius:外部化配置組件
  • Spring Cloud Bus:事件、消息匯流排
  • Spring Cloud Cluster:針對ZooKeeper、Redis、Hazelcast、Consul的選舉演算法和通用狀態模式的實現。
  • Spring Cloud Cloudfoundry:與Private Cloudfoundry的整合支持。
  • Spring Cloud Consul:服務發現與配置工具。
  • Spring Cloud Stream:通過Redis、Rabbit或Kafka實現消息微服務,通過重簡單的聲明式模型來發送和接收消息。
  • Spring Cloud AWS:用於簡化整合Amazon Web Service組件
  • Spring Cloud Security:安全工具包,提供在Zuul代理中對OAuth2客戶端請求的中繼器。
  • Spring Cloud Sleuth:Spring Cloud 應用的分散式跟蹤實現,可以完美整合Zipkin。
  • Spring Cloud ZooKeeper:基於Zoopeer的服務發現與配置管理組件。
  • Spring Cloud Starters:Spring Cloud 的基礎組件,它是基於Spring Boot 風格項目的基礎依賴模塊。
  • Spring Cloud CLI:用於在Groovy中快速創建Spring Cloud 應用的Spring Boot CLI插件。

SpringCloud微服務架構圖(轉自黑馬視頻):
SpringCloud微服務架構圖(轉自黑馬視頻).png

參考資料


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

-Advertisement-
Play Games
更多相關文章
  • 以下介紹的兩種屬性是為後面的屬性支持左鋪墊,大概一看就OK了。 事件屬性 ...
  • 大概是CSS3吧,出了一個叫CSS變數的東西,也叫自定義屬性,還是比較有用的東東,可以用JavaScript靈活控制,變數作用 我們來實現一個div跟隨滑鼠滾動的小東西用來說明如何自定義變數 HTML代碼如下: JavaScript代碼,我們來寫一段監聽,處理變數值 這樣就實現了我們想要的效果,當然 ...
  • 3d建築,3d消防,消防演習模擬,3d庫房,3d檔案室,3d密集架,webGL,threejs,3d機房,bim管理系統 ...
  • 不同公司和組織之間的測試效率迥異。在這個富交互和響應式處理隨處可見的時代,很多組織都使用敏捷的方式來開發應用,因此測試自動化也成為軟體項目的必備部分。測試自動化意味著使用軟體工具來反覆運行項目中的測試,併為回歸測試提供反饋。 端到端測試又簡稱E2E(End-To-End test)測試,它不同於單元 ...
  • 某些手機上 fixed 元素在頁面滾動時會消失,某些 IOS 設備上觸發不了點擊事件,IOS 設備上點擊事件有 300ms 延遲,IOS 設備上 fixed 元素在鍵盤彈起時位置會變幻不定,在彈窗上滑動時底部頁面也跟著動,兩年移動端前端開發,我TM都經歷了什麼 ...
  • N-blog 使用 Express + MongoDB 搭建多人博客 原文地址: https://github.com/nswbmw/N-blog 建議初學者,研究下整個項目。 這裡節選了一些內容為筆記 : nrm 是一個管理 npm 源的工具。用來切換官方 npm 源和國內的 npm 源(如: c ...
  • BFC 即為Block formatting context 的縮寫,BFC 主要用來將一個盒子設置為一個隔離的容器,不管盒子內部的元素具有什麼屬性,都不會影響到盒子的外面。 1、哪些元素能產生BFC 不是所有的元素都能產生BFC的,只有display 屬性為 block, list-item, t ...
  • 一、阻止刷新頁面 在表單中的提交按鈕<button></button>標簽改為<input type="button">或者在<button>中添加屬性 type="button" 二、阻止表單的預設提交 1、使用preventDefault() 2、使用return false; ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...