微服務簡介及其相關技術棧

目錄

1、簡介

2、技術棧

3、單體架構

4、分布式架構

5、微服務

6、總結


🍃作者介紹:雙非本科大三網絡工程專業在讀,阿里云專家博主,專注于Java領域學習,擅長web應用開發、數據結構和算法,初步涉獵Python人工智能開發和前端開發。
🦅主頁:@逐夢蒼穹

🥡所屬專欄:微服務

📕您的一鍵三連,是我創作的最大動力🌹

1、簡介

微服務是一種軟件架構風格,它將一個應用程序拆分成一組小型、獨立的服務,每個服務都運行在自己的進程中,并使用輕量級的通信機制(通常是HTTP API)進行相互通信。這些小型服務被設計成可以獨立部署、擴展和維護,從而提高系統的靈活性和可維護性。

以下是微服務架構的一些關鍵特點和優勢:

  1. 模塊化: 微服務將應用程序拆分成多個小型服務,每個服務負責特定的業務功能。這種模塊化的設計使得開發、測試和維護變得更加簡單。
  2. 獨立部署: 由于每個微服務都是獨立的,團隊可以獨立地開發、測試和部署每個服務,而不會影響整個應用程序。
  3. 彈性和可伸縮性: 微服務可以根據需求進行獨立的擴展和縮減。這使得系統更容易應對變化的工作負載。
  4. 技術多樣性: 不同的微服務可以使用不同的技術棧,這使得團隊可以選擇最適合其需求的技術和工具。
  5. 獨立數據存儲: 每個微服務通常有自己的數據庫,這減少了數據耦合,提高了系統的可維護性。
  6. 容錯性和韌性: 單個微服務的故障不會影響整個應用程序,系統可以更容易地從故障中恢復。
  7. 團隊自治: 不同的團隊可以負責不同的微服務,這促進了團隊的自治和獨立性。

盡管微服務架構提供了許多優勢,但也需要考慮一些挑戰,如服務發現、分布式事務、服務間通信等。引入微服務需要仔細權衡利弊,并確保團隊具備適當的技能和工具來成功實施和管理微服務架構。

2、技術棧

技術棧組件

描述

Spring Boot

用于快速創建獨立的、生產級別的基于Spring的應用程序

Spring MVC

一個構建Web應用程序的框架

Netflix Archaius

用于服務配置與管理的組件

阿里 Diamond

Eureka

用于服務注冊與發現的組件

Consul

Zookeeper

REST

用于服務調用的方式

RPC

gRPC

Hystrix

用于實現服務熔斷器的組件

Envoy

Ribbon

用于負載均衡的組件

Nginx

OpenFeign

用于服務接口調用的組件

Kafka

用于消息隊列的組件

RabbitMQ

ActiveMQ

Spring Cloud Config

用于服務配置中心管理的組件

Docker

用于自動化應用程序的部署為輕量級容器

Kubernetes

用于自動部署、擴展和管理容器化應用程序

圖解如下:

3、單體架構

單體架構:將業務的所有功能集中在一個項目中開發,打成一個包部署。

單體架構的優缺點如下:

優點:架構簡單、部署成本低

缺點:耦合度高(維護困難、升級困難)

4、分布式架構

分布式架構:根據業務功能對系統做拆分,每個業務功能模塊作為獨立項目開發,稱為一個服務。

分布式架構的優缺點:

優點:降低服務耦合、有利于服務升級和拓展

缺點:服務調用關系錯綜復雜

分布式架構雖然降低了服務耦合,但是服務拆分時也有很多問題需要思考:

①服務拆分的粒度如何界定?

②服務之間如何調用?

③服務的調用關系如何管理?

人們需要制定一套行之有效的標準來約束分布式架構。

5、微服務

微服務的架構特征:

單一職責:微服務拆分粒度更小,每一個服務都對應唯一的業務能力,做到單一職責

自治:團隊獨立、技術獨立、數據獨立,獨立部署和交付

面向服務:服務提供統一標準的接口,與語言和技術無關

隔離性強:服務調用做好隔離、容錯、降級,避免出現級聯問題

微服務的上述特性其實是在給分布式架構制定一個標準,進一步降低服務之間的耦合度,提供服務的獨立性和靈活性。做到高內聚,低耦合。

因此,可以認為微服務是一種經過良好架構設計的分布式架構方案

微服務這種方案需要技術框架來落地,全球的互聯網公司都在積極嘗試自己的微服務落地技術。在國內最知名的就是SpringCloud和阿里巴巴的Dubbo。

SpringCloud是目前國內使用最廣泛的微服務框架。

官網地址:https://spring.io/projects/spring-cloud

SpringCloud集成了各種微服務功能組件,并基于SpringBoot實現了這些組件的自動裝配,從而提供了良好的開箱即用體驗。

其中常見的組件包括:

另外,SpringCloud底層是依賴于SpringBoot的,并且有版本的兼容關系,如下:

企業需求:

微服務技術對比:

6、總結

  • 單體架構:簡單方便,高度耦合,擴展性差,適合小型項目。例如:學生管理系統
  • 分布式架構:松耦合,擴展性好,但架構復雜,難度大。適合大型互聯網項目,例如:京東、淘寶
  • 微服務:一種良好的分布式架構方案
    ①優點:拆分粒度更小、服務更獨立、耦合度更低
    ②缺點:架構非常復雜,運維、監控、部署難度提高
  • SpringCloud是微服務架構的一站式解決方案,集成了各種優秀微服務功能組件

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/713265.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/713265.shtml
英文地址,請注明出處:http://en.pswp.cn/news/713265.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【QT+QGIS跨平臺編譯】之五十七:【QGIS_CORE跨平臺編譯】—【VECTOR_TILE生成】

文章目錄 一、protoc二、生成來源三、構建過程一、protoc Protocol Buffers(簡稱 protobuf)是一種輕量級、高效的數據序列化框架,它可以將結構化數據序列化為二進制格式,同時還可以進行反序列化和數據壓縮。相比于 XML 和 JSON 等傳統的文本序列化格式,protobuf 采用二進制…

wpa_supplicant交叉編譯

文章目錄 源碼編譯openssl編譯libnl交叉編譯WPA 開發板測試使用 源碼 wpa_supplicant官網:http://w1.fi/wpa_supplicant/ GIT源:git://w1.fi/hostap.git openssl 源碼: https://www.openssl.org/ libnl 源碼: https://github.c…

自定義preference的使用

自定義preference的使用 control_iconsize_preference_top.xmlcontrol_iconsize_preference_middle.xmlcontrol_iconsize_preference_bottom.xmlcontrol_iconsize_preference_airplane.xmlcontrol_iconsize_preference_no_arrow_top.xmlcontrol_iconsize_preference_no_arrow_m…

3 開源鴻蒙OpenHarmony4.1源碼下載、編譯,生成OHOS_Image可執行文件的最簡易流程

開源鴻蒙OpenHarmony4.1源碼下載、編譯,生成OHOS_Image可執行文件的最簡易流程 作者將狼才鯨日期2024-03-01 準備一臺Windows電腦 安裝VMware或者VMware Player虛擬機 從華為鏡像下載Ubuntu系統,用國內源下載速度更快 Ubuntu 鏡像說明https://repo.hu…

map和set例題應用

個人主頁:Lei寶啊 愿所有美好如期而遇 目錄 第一題 第二題 第三題 第一題 隨機鏈表的復制https://leetcode.cn/problems/copy-list-with-random-pointer/description/ 思路 首先遍歷舊鏈表,并創建新節點,同時用map將舊節點與新節點…

python模型訓練

目錄 1、新建模型 train_model.py 2、運行模型 (1)首先會下載data文件庫 (2)完成之后會開始訓練模型(10次) 3、 訓練好之后,進入命令集 4、輸入命令:python -m tensorboard.ma…

網絡工程師筆記6

ICMP協議 Internet控制報文協議ICMP(InternetControlMessage Protocol)是網絡層的一個重要協議。ICMP協議用來在網絡設備間傳遞各種差錯和控制信息,它對于收集各種網絡信息、診斷和排除各種網絡故障具有至關重要的作用。使用基于ICMP的應用時,需要對ICMP…

Vue.js+SpringBoot開發社區買菜系統

目錄 一、摘要1.1 項目介紹1.2 項目錄屏 二、系統設計2.1 功能模塊設計2.1.1 數據中心模塊2.1.2 菜品分類模塊2.1.3 菜品檔案模塊2.1.4 菜品訂單模塊2.1.5 菜品收藏模塊2.1.6 收貨地址模塊 2.2 可行性分析2.3 用例分析2.4 實體類設計2.4.1 菜品分類模塊2.4.2 菜品檔案模塊2.4.3…

多輸入多輸出 | Matlab實現RIME-BP霜冰算法優化BP神經網絡多輸入多輸出預測

多輸入多輸出 | Matlab實現RIME-BP霜冰算法優化BP神經網絡多輸入多輸出預測 目錄 多輸入多輸出 | Matlab實現RIME-BP霜冰算法優化BP神經網絡多輸入多輸出預測預測效果基本介紹程序設計往期精彩參考資料 預測效果 基本介紹 多輸入多輸出 | Matlab實現RIME-BP霜冰算法優化BP神經網…

Springboot+vue的考勤管理系統(有報告)。Javaee項目,springboot vue前后端分離項目。

演示視頻: Springbootvue的考勤管理系統(有報告)。Javaee項目,springboot vue前后端分離項目。 項目介紹: 采用M(model)V(view)C(controller)三層…

GitHub Copilot extension activation error: ‘No access to GitHub Copilot found‘

好不容易學生認證通過了,打開vscode用copilot結果一直報這個錯誤。我的原因是:還未給copilot授權, 通過了學生認證后要進入這里進行授權:

Vue Html中插入本地視頻(Video 標簽)

在 Vue 中插入本地視頻可以通過使用標簽來實現。你可以將視頻文件放在你的項目中的合適位置(比如assets文件夾),然后在 Vue 組件中引用這個視頻文件。html同理 首先,在你的 Vue 項目中的assets文件夾下放入你的視頻文件&#xff…

k8s單機部署zookeeper

(作者:陳玓玏) 拉取鏡像:docker pull zookeeper;編輯yaml: apiVersion: v1 kind: Service metadata:name: zookeeperlabels:app: zookeeper spec:ports:- name: clientport: 2181protocol: TCPtargetP…

QT TCP傳輸文件+ui

TCPFile tcp協議傳輸文件 TCPFile.pro QT core gui networkclientwidget.h #include <QWidget> #include <QTcpSocket> // 通信套接字 #include <QFile>private slots:void on_pushButton_clicked();private:QTcpSocket *tcpSocket;QFile file; /…

selenium進階設置

1、無頭瀏覽設置和規避爬蟲檢測 問題一&#xff1a;有界面時可以展示的元素&#xff0c;無頭模式報錯element not interactable 解決方法&#xff1a;通過錯誤截圖發現&#xff0c;頁面上有該元素&#xff0c;但是頁面不夠大&#xff0c;沒有顯示想定位的元素。 from seleni…

centos7 安裝 docker-compose

1、直接參考官方&#xff1a; Install Compose standalone | Docker Docs 1、安裝命令 curl -SL https://github.com/docker/compose/releases/download/v2.24.6/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose 2、修改 docker-compose 執行權限 不修改執行權…

升級pycharm之后,jupyter無法識別新安裝的包

import sys print(sys.executable)在jupyter中運行&#xff0c;檢測一下當前jupyter內核運行在哪個環境中-再pycharm的setting里面設置jupyter環境并沒有什么用。需要重新在想要使用的環境中重新安裝jupyter內核&#xff0c;并且重啟。

c# cad2016系統變量解釋說明

一、cad系統變量設置和獲取 /// <summary> /// 設置CAD系統變量 /// </summary> /// <param name"name">變量名</param> /// <param name"value">變量值</param> public static void SetSystemVariable(string name,…

Sora背后的技術原理:深度探索Video Compression Network與語言理解在視頻生成中的應用

Sora背后的技術原理&#xff1a;深度探索Video Compression Network與語言理解在視頻生成中的應用 摘要&#xff1a; 隨著人工智能技術的飛速發展&#xff0c;視頻生成技術逐漸成為研究熱點。Sora作為一種先進的視頻生成技術&#xff0c;其背后的技術原理值得深入研究。本文詳…

物聯網平臺如何實現SaaS化

物聯網平臺實現SaaS化是一個復雜的過程&#xff0c;涉及到多個關鍵步驟和要素。以下是實現物聯網平臺SaaS化的主要步驟和要點&#xff0c;以及如何確保成功實施。 一、平臺架構設計是實現SaaS化的基礎 一個分布式、模塊化的架構設計對于支持多租戶、高并發、高可擴展性等特性…