SpringCloud:服務拆分和遠程調用


程序員老茶

🙈作者簡介:練習時長兩年半的Java up主
🙉個人主頁:程序員老茶
🙊 P? ?S : 點贊是免費的,卻可以讓寫博客的作者開心好久好久😎
📚系列專欄:Java全棧,計算機系列(火速更新中)
💭格? ?言:種一棵樹最好的時間是十年前,其次是現在
🏡動動小手: 點個關注不迷路,感謝寶子們一鍵三連

目錄

  • 課程名:Java
    • 內容/作用:知識點/設計/實驗/作業/練習
    • 學習:SpringCloud服務拆分和遠程調用
  • SpringCloud服務拆分和遠程調用
    • 1.1.服務拆分原則
    • 1.2.服務拆分示例
      • 1.2.1.導入Sql語句
      • 1.2.2.導入demo工程
    • 1.3.實現遠程調用案例
      • 1.3.1.案例需求:
      • 1.3.2.注冊RestTemplate
      • 1.3.3.實現遠程調用
    • 1.4.提供者與消費者
    • 總結

課程名:Java

內容/作用:知識點/設計/實驗/作業/練習

學習:SpringCloud服務拆分和遠程調用

SpringCloud服務拆分和遠程調用

任何分布式架構都離不開服務的拆分,微服務也是一樣。

1.1.服務拆分原則

這里我總結了微服務拆分時的幾個原則:

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

在這里插入圖片描述

1.2.服務拆分示例

以課前資料中的微服務cloud-demo為例,其結構如下:

在這里插入圖片描述

cloud-demo:父工程,管理依賴

  • order-service:訂單微服務,負責訂單相關業務
  • user-service:用戶微服務,負責用戶相關業務

要求:

  • 訂單微服務和用戶微服務都必須有各自的數據庫,相互獨立
  • 訂單服務和用戶服務都對外暴露Restful的接口
  • 訂單服務如果需要查詢用戶信息,只能調用用戶服務的Restful接口,不能查詢用戶數據庫

1.2.1.導入Sql語句

首先,將課前資料提供的cloud-order.sqlcloud-user.sql導入到mysql中:

在這里插入圖片描述

cloud-user表中初始數據如下:

在這里插入圖片描述

cloud-order表中初始數據如下:

在這里插入圖片描述

cloud-order表中持有cloud-user表中的id字段。

1.2.2.導入demo工程

用IDEA導入課前資料提供的Demo:

在這里插入圖片描述

項目結構如下:

在這里插入圖片描述

導入后,會在IDEA右下角出現彈窗:

在這里插入圖片描述

點擊彈窗,然后按下圖選擇:

在這里插入圖片描述

會出現這樣的菜單:

在這里插入圖片描述

配置下項目使用的JDK:

在這里插入圖片描述

1.3.實現遠程調用案例

在order-service服務中,有一個根據id查詢訂單的接口:

在這里插入圖片描述

根據id查詢訂單,返回值是Order對象,如圖:

在這里插入圖片描述

其中的user為null

在user-service中有一個根據id查詢用戶的接口:

在這里插入圖片描述

查詢的結果如圖:

在這里插入圖片描述

1.3.1.案例需求:

修改order-service中的根據id查詢訂單業務,要求在查詢訂單的同時,根據訂單中包含的userId查詢出用戶信息,一起返回。

在這里插入圖片描述

因此,我們需要在order-service中 向user-service發起一個http的請求,調用http://localhost:8081/user/{userId}這個接口。

大概的步驟是這樣的:

  • 注冊一個RestTemplate的實例到Spring容器
  • 修改order-service服務中的OrderService類中的queryOrderById方法,根據Order對象中的userId查詢User
  • 將查詢的User填充到Order對象,一起返回

1.3.2.注冊RestTemplate

首先,我們在order-service服務中的OrderApplication啟動類中,注冊RestTemplate實例:

package cn.itcast.order;import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
public class OrderApplication {public static void main(String[] args) {SpringApplication.run(OrderApplication.class, args);}@Beanpublic RestTemplate restTemplate() {return new RestTemplate();}
}

1.3.3.實現遠程調用

修改order-service服務中的cn.itcast.order.service包下的OrderService類中的queryOrderById方法:

在這里插入圖片描述

1.4.提供者與消費者

在服務調用關系中,會有兩個不同的角色:

服務提供者:一次業務中,被其它微服務調用的服務。(提供接口給其它微服務)

服務消費者:一次業務中,調用其它微服務的服務。(調用其它微服務提供的接口)

在這里插入圖片描述

但是,服務提供者與服務消費者的角色并不是絕對的,而是相對于業務而言。

如果服務A調用了服務B,而服務B又調用了服務C,服務B的角色是什么?

  • 對于A調用B的業務而言:A是服務消費者,B是服務提供者
  • 對于B調用C的業務而言:B是服務消費者,C是服務提供者

因此,服務B既可以是服務提供者,也可以是服務消費者。

總結

? ?感謝小伙伴們一鍵三連,咱們下期文章再見~

往期專欄
Java全棧開發
數據結構與算法
計算機組成原理
操作系統
數據庫系統
物聯網控制原理與技術

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

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

相關文章

使用socat做端口轉發

最近買的云上mongo數據庫但是數據庫不支持外網訪問,準備做iptables轉發但是一直不成功,騰訊云官方給予的解釋是受服務器內啟動的docker影響 做iptables轉發會沖突,所以只能另想辦法,我發現使用socat做轉發也很好用,所以…

JAVA_4

JAVA_4 一、JAVA內存總體架構二、棧的特點如下三、堆的特點如下四、方法區(又叫靜態區,也是堆)特點如下五、this的本質 一、JAVA內存總體架構 多個線程里面有:程序計數器、虛擬機棧、本地方法棧方法區:運行時常量池堆…

FPGA相關論文閱讀

一、Achieving 100Gbps Intrusion Prevention on a Single Server 論文名稱中文翻譯:在單臺服務器上實現100Gbps吞吐量的入侵防御檢測。 文章中的Mixed-1和Norm-1 二、Distributed Password Hash Computation on Commodity Heterogeneous Programmable Platforms…

【回溯 字典樹(前綴樹)】212. 單詞搜索 II

本文涉及知識點 回溯 字典樹(前綴樹) LeetCode212. 單詞搜索 II 給定一個 m x n 二維字符網格 board 和一個單詞(字符串)列表 words, 返回所有二維網格上的單詞 。 單詞必須按照字母順序,通過 相鄰的單元…

第3周 后端微服務基礎架構與前端項目聯調配備

第3周 后端微服務基礎架構與前端項目聯調配備 1. 微服務項目層次設計與Maven聚合1.1 項目層次設計1.2 父項目pom1.2.1 打包方式 1.3 創建通用 ************************************************************************************** 1. 微服務項目層次設計與Maven聚合 1.1…

電商平臺遭遇DDOS、CC攻擊有什么防護方案

電商平臺遭遇DDOS、CC攻擊有什么防護方案?在數字化浪潮的推動下,電商平臺已成為現代商業的重要組成部分,為消費者提供便捷、多樣的購物體驗。然而,隨著業務的發展,電商平臺也面臨著日益嚴峻的網絡安全挑戰,…

Tower for Mac:Git管理的新境界

Tower for Mac,讓您的Git管理進入新境界!這款專為Mac用戶打造的Git客戶端,憑借其出色的性能和豐富的功能,成為眾多開發者的首選工具。 Tower不僅支持常規的Git操作,如提交、推送和拉取,還提供了許多高級功能…

四、VGA項目:聯合精簡幀+雙fifo+sobel算法 實現VGA顯示

前言:該項目實際上是在很多基礎的小練習上合成起來的,例如涉及到uart(rs232)的數據傳輸、雙fifo流水線操作、VGA圖像顯示,本次內容在此基礎上又增添了sobel算法,能實現圖像的邊沿監測并VGA顯示。 文章目錄…

簡單的DbUtils工具類【精細】

目錄 單條通用增刪改方法 1.創建maven項目,并加載依賴 2.創建數據庫連接工具類(Dbutils類) 3.創建一個執行器(SqlExecutor類) 4.通用(增,刪,改)方法 1.創建方法 2.創建userInfo實體類 3.創建測試類,測試增,刪&#xf…

探索數據結構:樹與二叉樹

?? 歡迎大家來到貝蒂大講堂?? 🎈🎈養成好習慣,先贊后看哦~🎈🎈 所屬專欄:數據結構與算法 貝蒂的主頁:Betty’s blog 1. 樹 1.1. 樹的定義 樹是一種非線性的數據結構,它是由n&a…

ORA-609頻繁出現在alert.log,如何解決?

ORA-609就alertlog中比較常見的一個報錯,雖然并沒有太大的影響,但是頻繁的出現在alert log也是很讓人厭煩的事情,本文介紹如何排查解決ORA-609問題。 1.ORA-609官方定義 could not attach to incoming connection Cause Oracle process cou…

【SRC實戰】前端脫敏信息泄露

挖個洞先 https://mp.weixin.qq.com/s/xnCQQCAneT21vYH8Q3OCpw “ 以下漏洞均為實驗靶場,如有雷同,純屬巧合 ” 01 — 漏洞證明 一、前端脫敏,請求包泄露明文 “ 前端脫敏處理,請求包是否存在泄露? ” 1、獲取驗…

|Python新手小白中級教程|第二十八章:面向對象編程(類定義語法私有屬性類的繼承與多態)(4)

文章目錄 前言一、類定義語法二、私有方法和私有屬性1.私有屬性2.私有方法 三、類“繼承”1.初識繼承2.使用super函數調用父類中構造的東西 四、類“多態”1.多態基礎2.子類不同形態3.使用isinstance函數與多態結合判斷類型 總結 前言 大家好,我是BoBo仔吖&#xf…

6818Linux內核開發移植

Linux內核開發移植 Linux內核版本變遷及其獲得 Linux是最受歡迎的自由電腦操作系統內核, 是一個用C語言寫成, 并且符合POSIX標準的類Unix操作系統 Linux是由芬蘭黑客Linus Torvalds開發的, 目的是嘗試在英特爾x86架構上提供自由免費的類Un…

Task Office for Mac v9.0激活版:任務管理新境界

還在為繁瑣的任務管理而煩惱嗎?Task Office for Mac為您帶來全新的任務管理體驗。簡潔明了的界面設計,讓您輕松上手;強大的任務管理和項目管理功能,讓您輕松掌握任務進度;多用戶協作功能,讓團隊協作更加高效…

ubuntu24.04安裝ros

ubuntu24.04安裝ros 踩坑 踩坑 目前安裝人數比較少,沒有較為詳細的博客,參考官網的鏈接 http://docs.ros.org/en/rolling/Installation/Ubuntu-Install-Debians.html 同時在如下的一步中會找不到網址報錯,此時可以參考https://blog.51cto.c…

Excel辦公技巧之下拉菜單

在日常辦工中,經常需在單元格中輸入特定的值,此時我們可以使用下拉菜單解決,輸入錯誤和錯誤值,可以一勞永逸的解決固定數據輸入問題。 使用Excel下拉菜單時,它在數據輸入和驗證方面發揮著重要作用通過點擊單元格的下拉…

學習筆記-Vue3中Hook函數

什么是Hook函數 Hook翻譯過來是鉤子的意思,其本質上是一組可復用的函數。簡單理解來說,你能夠在不同的組件中,實現相同的代碼邏輯,以達到代碼復用、提高維護性的效果。那為何叫’鉤子’呢,我的理解是: 它可…

商業數據分析--時間序列圖及趨勢分析

繪制時間序列圖,并指出存在什么樣的狀態如上兩圖: 可見狀態:從時間序列圖可以看出,這些數據存在明顯的季節性波動,每年的第4季度值都最高,而第2季度值最低。同時也存在一些下降的趨勢。 通過引進虛擬變量,建立多元線性回歸模型。答: 通過引入虛擬變量,我們可以建立如下的…

Oracle數據庫之多表查詢、層次查詢(五)

目錄 前言 Oracle 的連接條件的類型 多表查詢 1. 使用JOIN關鍵字 2. 使用WHERE子句進行多表查詢 3. 子查詢 4. EXISTS關鍵字 5. 集合運算 6. 注意事項: 層次查詢 前言 Oracle 的連接條件的類型 等值連接不等值連接外連接自連接 多表查詢 在Oracle數據…