微服務-初級篇

微服務-初級篇

  • 認識微服務
    • 1.1 單體架構
    • 1.2 分布式架構
    • 1.3 微服務
  • SpringCloud
    • 2.1 了解
    • 2.2 服務拆分原則
    • 2.3 服務拆分效果
  • Nacos注冊中心
    • 3.1 認識和安裝Nacos
      • 3.1.1 Nacos下載
      • 3.1.2 Nacos安裝
    • 3.2 服務注冊到Nacos
  • Feign遠程調用
    • 4.1 Feign引入
    • 4.2 Feign配置

認識微服務

1.1 單體架構

特點:

  • 共用一個啟動類
  • 共用一個端口號
  • 共用一個數據庫

優點:

  • 架構簡單
  • 部署成本低
  • 開發成本低

缺點:

  • 耦合度高(維護困難、升級困難)
  • 升級困難
  • 維護成本高

1.2 分布式架構

優點:

  • 降低服務耦合
  • 有利于服務升級和拓展
  • 方便升級改造
  • 維護成本低

缺點:

  • 架構復雜度高
  • 開發困難

1.3 微服務

特征:

  • 單一職責:微服務拆分粒度更小,每一個服務都對應唯一的業務能力,做到單一職責
  • 自治:團隊獨立、技術獨立、數據獨立,獨立部署和交付
  • 面向服務:服務提供統一標準的接口,與語言和技術無關
  • 隔離性強:服務調用做好隔離、容錯、降級,避免出現級聯問題

以上四個關于微服務的特征能夠進一步降低服務之間的耦合度,提供服務的獨立性和靈活性。做到高內聚,低耦合

SpringCloud

2.1 了解

SpringCloud是目前國內使用最廣泛的微服務框架,官網地址: https://spring.io/projects/spring-cloud

SpringCloud

SpringCloud集成了各種微服務功能組件,并基于SpringBoot實現了組件的自動裝配。

常見的組件包括:

SpringCloud常見組件

基于Spring Cloud分布式微服務的優點主要包括:

  1. 彈性和可擴展性:Spring Cloud提供了各種解決方案,如服務注冊與發現、負載均衡、斷路器、限流等,使得微服務架構更加彈性和可擴展。可以根據實際需求動態增加或減少微服務實例,根據流量和負載情況自動調整服務的規模。

  2. 高可用性:通過使用分布式架構,將應用程序拆分為多個小型服務,每個服務都有自己的獨立部署和運行環境。當一個服務發生故障時,其他服務仍然可以繼續運行,確保整個系統的高可用性。

  3. 增強開發效率:Spring Cloud提供了一系列的開發工具和解決方案,如服務注冊與發現(Eureka)、配置中心(Config)、服務網關(Zuul)等。這些工具能夠簡化分布式系統的開發和部署過程,提高開發效率。

  4. 系統解耦:采用微服務架構可以將一個大型復雜系統拆分為多個小型服務,每個服務只關注自己的業務邏輯,降低了系統的復雜性,并使得各個服務之間的開發、測試和維護更加獨立和靈活。

  5. 技術棧靈活性:Spring Cloud是一個開放的框架,可以與各種技術組件和平臺集成,如Netflix的Eureka、Ribbon、Hystrix等,使得開發團隊可以根據具體需求選擇合適的技術棧來搭建分布式系統。

總的來說,基于Spring Cloud分布式微服務可以提供彈性和可擴展性、高可用性、增強開發效率、系統解耦和技術棧靈活性等優點,使得開發和維護分布式系統更加方便和可靠。

2.2 服務拆分原則

原則:

  • 不同微服務,不要重復開發相同業務
  • 微服務數據獨立,不要訪問其它微服務的數據庫
  • 微服務可以將自己的業務暴露為接口,供其它微服務調用

2.3 服務拆分效果

服務拆分效果

Nacos注冊中心

3.1 認識和安裝Nacos

3.1.1 Nacos下載

Nacos官方地址:https://nacos.io/zh-cn/docs/quick-start.html

3.1.2 Nacos安裝

具體安裝教程可參考: 阿里Nacos系列——Nacos安裝教程(帶圖–手把手教學

3.2 服務注冊到Nacos

1)引入依賴
在父工程的pom文件中的中引入SpringCloudAlibaba的依賴:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2.2.6.RELEASE</version><type>pom</type><scope>import</scope>
</dependency>

在子工程的pom文件中引入nacos-discovery依賴:

<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId><version>4.0.2</version>
</dependency>

2)配置nacos地址
配置文件
在上圖標注的application.yml中添加nacos地址:

spring:cloud:nacos:discovery:server-addr: localhost:8848username: nacospassword: nacos

Feign遠程調用

4.1 Feign引入

Feign是一個聲明式的http客戶端,官方地址:
https://github.com/OpenFeign/feign

4.2 Feign配置

1)引入依賴

<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId><version>4.0.2</version>
</dependency>
<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId><version>4.0.2</version>
</dependency>

2)在啟動類上添加注解

@EnableFeignClients // 開啟fegin調用

3)編寫Feign的客戶端

新建一個interface

@FeignClient("type-service")  // 被調用者服務的配置文件里面的名字
public interface TypeFeign {@RequestMapping("type/findTypeAll")   // 注意:路徑補全List<Type> findTypeAll();
}

4)優化

將Feign接口抽取到統一的模塊中,這樣可以降低服務之間的耦合性

5)小結
使用Feign的步驟:
① 引入依賴
② 添加@EnableFeignClients注解
③ 編寫FeignClient接口

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

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

相關文章

如何利用java依賴jave-all-deps實現視頻格式轉換

視頻格式轉換是常見的需求&#xff0c;通過使用Java依賴庫jave-all-deps可以實現視頻格式的轉換。本文將詳細介紹在Java中如何利用jave-all-deps實現視頻格式轉換。 什么是jave-all-deps庫&#xff1f; jave-all-deps是一款基于FFmpeg庫的Java音視頻編解碼庫。它提供了一系列AP…

java 實現人臉特征提取和比對

特征提取 1. 安裝必要的庫 確保你已經安裝了JPEG庫、BLAS和LAPACK庫。在Ubuntu或Debian系統上&#xff0c;可以使用以下命令安裝&#xff1a; sudo apt-get update sudo apt-get update sudo apt-get install build-essential cmake sudo apt-get install libgtk-3-dev sud…

【C語言】標識符大通關!

目錄 1. 簡介2. 標識符的定義3. 標識符的命名規則3.1 有效字符3.2 長度限制 4. 關鍵字與保留字5. 標識符的作用域5.1 塊作用域5.2 文件作用域5.3 函數作用域5.4 原型作用域 6. 命名規范與最佳實踐6.1 命名習慣6.2 避免沖突 7. 標識符示例與解析8. 參考文獻9. 結束語 1. 簡介 標…

Zynq系列FPGA實現SDI視頻編解碼+UDP以太網傳輸,基于GTX高速接口,提供3套工程源碼和技術支持

目錄 1、前言工程概述免責聲明 2、相關方案推薦本博已有的 SDI 編解碼方案本博已有的以太網方案本博已有的FPGA圖像縮放方案1G/2.5G Ethernet PCS/PMA or SGMII架構以太網通信方案AXI 1G/2.5G Ethernet Subsystem架構以太網通信方案本方案的縮放應用本方案在Xilinx--Kintex系列…

2024年全國青少年信息素養大賽復賽及決賽、我知道的有這些

周末兩天2024年全國青少年信息素養大賽復賽部分賽區已經結束&#xff0c;還沒有考試的同學加緊備考后面的2次&#xff0c;成績預計&#xff08;7月13日、7月20日兩次考試&#xff09;結束之后的2周左右出&#xff0c;2024年全國青少年信息素養大賽決賽將在2024年8月16日-20日在…

解決:Flink向kafka寫數據使用Producer精準一次(EXACTLY_ONCE)異常

在使用flink向kafka寫入數據報錯&#xff1a;Caused by: org.apache.kafka.common.KafkaException: Unexpected error in InitProducerIdResponse; The transaction timeout is larger than the maximum value allowed by the broker (as configured by transaction.max.timeou…

文獻解讀-基準與方法研究-第十六期|《GeneMind 公司的 GenoLab M 測序平臺 WGS 和 WES 數據基準測試》

關鍵詞&#xff1a;基準與方法研究&#xff1b;基因測序&#xff1b;變異檢測&#xff1b; 文獻簡介 標題&#xff08;英文&#xff09;&#xff1a;Accuracy benchmark of the GeneMind GenoLab M sequencing platform for WGS and WES analysis標題&#xff08;中文&#xf…

差分+前綴和習題集

&#xff08;luogu題號&#xff09; P6568 [NOI Online #3 提高組] 水壺 思路分析 前綴和優化問題。 其實題意就是讓你求有k1個數的區間和最大值&#xff0c;那么直接前綴和優化&#xff0c;就可以通過本題。 代碼 #include<bits/stdc.h> using namespace std;const in…

@component注解的分類

Component作用類似于xml文件里面的<Bean>:交給IOC去創建相關的實體類對象&#xff1b; 如果用xml配置的話&#xff0c;還要在xml配置文件中添加<context:component-scan base-package”掃描范圍路徑”> Component有三個主要的衍生注解&#xff0c;它們分別用于標…

QByteArray 轉換成 QString 類型

在Qt中&#xff0c;QByteArray和QString是兩種常用的數據類型&#xff0c;分別用于處理字節數組和字符串。如果你有一個QByteArray對象&#xff0c;并希望將其轉換為QString對象&#xff0c;你可以使用QString的構造函數或fromUtf8()靜態方法來完成這一轉換。 以下是兩種常用的…

機器學習——關于極大似然估計法的一些個人思考

最近在回顧機器學習的一些相關理論知識&#xff0c;回顧到極大似然法時&#xff0c;對于極大似然法中的一些公式有些迷糊了&#xff0c;所以本文主要想記錄并分享一下個人關于極大似然估計法的一些思考&#xff0c;如果有誤&#xff0c;請見諒&#xff0c;歡迎一起前來探討。當…

Could not find Chrome (ver.xxxxx). This can occur if either\n

文章目錄 錯誤解決方法 錯誤 Could not find Chrome (ver. 119.0.6045.105). This can occur if either\n 1. you did not perform an installation before running the script (e.g. npx puppeteer browsers install chrome) or\n 2. your cache path is incorrectly configu…

topic 之RCLCPP實現

創建節點 本節我們將創建一個控制節點和一個被控節點。 控制節點創建一個話題發布者publisher&#xff0c;發布控制命令&#xff08;command&#xff09;話題&#xff0c;接口類型為字符串&#xff08;string&#xff09;&#xff0c;控制接點通過發布者發布控制命令&#xf…

【Linux】升級FastJSON版本-jar

摘要 在長期運行的應用服務器上&#xff0c;近期的安全漏洞掃描揭示了fastjson組件存在潛在的安全隱患&#xff08;FastJSON是一個Java 語言實現的 JSON 解析器和生成器。FastJSON存在遠程代碼執行漏洞&#xff0c;惡意攻擊者可以通過此漏洞遠程執行惡意代碼來入侵服務器&…

怎么解析二級域名,一個一級域名可以解析多少二級域名?

在構建網站或應用時&#xff0c;域名是連接用戶與服務器的重要橋梁。注冊了一級域名后&#xff0c;如何解析二級域名&#xff0c;以及一個一級域名可以解析多少個二級域名&#xff0c;是很多網站管理人員都非常關心的問題。本文國科云將簡單探討下這兩個問題&#xff0c;并給出…

數學,LeetCode 3102. 最小化曼哈頓距離

一、題目 1、題目描述 給你一個下標從 0 開始的數組 points &#xff0c;它表示二維平面上一些點的整數坐標&#xff0c;其中 points[i] [xi, yi] 。 兩點之間的距離定義為它們的 曼哈頓距離 。 請你恰好移除一個點&#xff0c;返回移除后任意兩點之間的 最大 距離可能的 最小…

Dynadot 2024年第一季度回顧

關于Dynadot Dynadot是通過ICANN認證的域名注冊商&#xff0c;自2002年成立以來&#xff0c;服務于全球108個國家和地區的客戶&#xff0c;為數以萬計的客戶提供簡潔&#xff0c;優惠&#xff0c;安全的域名注冊以及管理服務。 Dynadot平臺操作教程索引&#xff08;包括域名郵…

java進程把服務器CPU打滿問題排查

1、top命令定位問題進程 2、查看進程的所有線程信息&#xff0c;記下占用最高的進程 top -Hp 38080553、將第2步得到的線程號轉化為十六進制 printf %x\n 38080594、結果里搜索 jstack 3808055|grep -A 10 3a1b3b5、定位問題 根據上步搜索到的結果&#xff0c;可以看到是GC…

【PyQt5】

PyQT5線程基礎&#xff08;1&#xff09; 分離UI主線程和耗時子線程QThread自定義信號 分離UI主線程和耗時子線程 在應用程序中&#xff0c;主線程負責處理用戶的輸入事件、更新UI元素和響應系統的回調&#xff0c;而耗時的任務&#xff08;例如網絡請求、數據庫訪問、圖像處理…

關閉這八個電腦設置,保護個人隱私

你知道嗎&#xff1f;電腦可能一直在偷窺你的小秘密。朋友們&#xff0c;一定要記得關閉這8個電腦設置哦&#xff0c;這樣可以有效地保護我們的個人隱私。 按住鍵盤Windows鍵加i鍵&#xff0c;快速打開Windows設置。然后點擊隱私選項。 我們來看基本的常規設置。里面有四個設置…