Java技術棧 —— 微服務框架Spring Cloud —— Ruoyi-Cloud 學習(一)

Ruoyi-cloud 項目學習

  • 一、項目環境搭建與啟動
    • 1.1 nacos安裝部署
      • 1.1.1 nacos安裝、啟動
      • 1.1.2 nacos部署
    • 1.2 seata安裝部署
    • 1.3 后端部署與運行
      • 1.3.1 ruoyi-modules-file模塊運行報錯
    • 1.4 nginx安裝、部署、配置與啟動
    • 1.5 redis安裝與部署
    • 1.6 前段框架知識
    • 1.7 項目啟動
    • 1.8 參考
  • 二、技術選型與框架理解
    • 2.1 技術選型
    • 2.2 框架理解
      • 2.2.1 Spring Boot框架
      • 2.2.2 Spring Cloud框架
        • 2.2.2.1 服務注冊與發現
        • 2.2.2.2 配置中心
        • 2.2.2.3 服務網關
        • 2.2.2.4 智能路由
        • 2.2.2.5 負載均衡
        • 2.2.2.6 斷路器
        • 2.2.2.7 監控跟蹤
        • 2.2.2.8 分布式消息隊列

一、項目環境搭建與啟動

參考視頻或文章鏈接
RuoYi-Cloud官方文檔
《若依框架講解-微服務版》- bilibili
How To Install DBeaver Universal Database Tool in Linux

請參考官方文檔進行環境搭建,這里只記錄遇到的零散問題。

1.1 nacos安裝部署

1.1.1 nacos安裝、啟動

安裝nacos,并使用bash startup.sh -m standalone單機模式啟動后,訪問 http://127.0.0.1:8848/nacos/,我發現沒有登錄界面即可登錄nacos,也就是說,沒有鑒權我就進入了nacos,原因是我目前使用的是nacos-2.3.0,“Nacos自2.2.2版本開始,在未開啟鑒權時,默認控制臺將不需要登錄即可訪問”,具體說明可見官方文檔,注意是中文文檔,有個規律,外國人開發的項目優先看英文文檔,中國人開發的項目優先看中文文檔,因為更新更及時,如果中國人開發的項目更新中文文檔都不及時,反倒更優先更新“程序員的第一母語——英語”,那就說明這項目壓根就不打算面向國內程序員。停止nacos的命令是sh shutdown.sh

1.1.2 nacos部署

nacos支持三種部署模式:
單機模式 - 用于測試和單機試用。
集群模式 - 用于生產環境,確保高可用。
多集群模式 - 用于多數據中心場景。
ruoyi項目默認使用單機模式

1.2 seata安裝部署

RuoYi可以集成seata分布式事務

1.3 后端部署與運行

工程文件的打包是用/bin/package.bat文件完成的,但我使用的是Ubuntu系統,所以要將內容轉換成shell文件才能執行,網絡上有現成的執行轉換任務的工具,直接拿來用,也可以直接借助于大模型,轉換規則放在參考文章里了,但沒人愿意手敲,我用的是大模型,后面遇到了更好更直接的工具再放到文章里。

REM package.bat, bat文件中, 注釋符號為REM
@echo off REM 關閉命令回顯功能,在執行后續的命令時,不顯示命令本身。
echo. REM 輸出一個空行
echo [信息] 打包Web工程,生成war/jar包文件。
echo.%~d0 REM 獲取當前批處理文件所在目錄的驅動器號
cd %~dp0 REM 改變當前工作目錄到批處理文件所在目錄cd ..
call mvn clean package -Dmaven.test.skip=truepause

這是轉換后的package.sh文件,執行后就會在各ruoyi-xxx模塊下的/target目錄,生成該模塊對應的jar

#!/bin/bash
#package.sh
echo "[信息] 打包Web工程,生成war/jar包文件。"
# $0 是 Bash shell 中的一個特殊變量,表示當前正在執行的shell腳本的名稱
# dirname 是一個 Bash shell 內置命令,用于返回指定文件或目錄的父目錄名稱。
cd "$(dirname "$0")" || exit
cd ..
mvn clean package -Dmaven.test.skip=true

啟動各個模塊前,先要啟動nacos,啟動方法請往上翻。

1.3.1 ruoyi-modules-file模塊運行報錯

Caused by: java.lang.IllegalArgumentException: Could not resolve placeholder 'fdfs.domain' in value "${fdfs.domain}" ,解決方法請看參考文章鏈接,配置nacos,所以并不是簡單的把nacos啟動了,就完事了。搜索fdfs,看到,需要在nacos下建立一份ruoyi-file-dev.yml,根據ry-config數據庫下config_info表的字段,data_id為ruoyi-file-dev.yml,group_id為DEFAULT_GROUP即可,

參考文章鏈接
《分布式事務》- Ruoyi官方文檔

1.4 nginx安裝、部署、配置與啟動

1.5 redis安裝與部署

見參考文章

1.6 前段框架知識

npm:node.js的包管理工具,用于統一管理我們前端項目中需要用到的包、插件、工具、命令等,便于開發和維護。
ES6:Javascript的新版本,ECMAScript6的簡稱。利用ES6我們可以簡化我們的JS代碼,同時利用其提供的強大功能來快速實現JS邏輯。
vue-cli:Vue的腳手架工具,用于自動生成Vue項目的目錄及文件。
vue-router: Vue提供的前端路由工具,利用其我們實現頁面的路由控制,局部刷新及按需加載,構建單頁應用,實現前后端分離。
vuex:Vue提供的狀態管理工具,用于統一管理我們項目中各種數據的交互和重用,存儲我們需要用到數據對象。
element-ui:基于MVVM框架Vue開源出來的一套前端ui組件。

1.7 項目啟動

Spring-Cloud是一個微服務框架,什么是微服務(Microservices)?微服務由許多較小的,松散耦合的服務組成一個應用程序,與大型,緊密耦合的應用程序的整體方法相反。比如一個黨支部達到一定人數時,為方便活動,就會拆分成一支部,二支部,這樣分開活動更為方便,但整體仍同屬一個組織架構,天下最基本的道理其實就這么多,只是變化無窮。所以只需要將各個模塊的jar包或war包啟動即可,啟動腳本在項目的/bin目錄下。

1.8 參考

參考文章
《Nacos-v2 下載、安裝并使用》
《Nacos-v2 用戶指南-權限認證》
《Nacos-v2 部署手冊》
《Seata 是什么?》
Rules of Converting DOS Batch Files to Shell Scripts
Nginx中文官網
《Redis 安裝》- 菜鳥教程
Microservices - Wikipedia

二、技術選型與框架理解

2.1 技術選型

技術棧選型
系統環境Java EE 8
Servlet 3.0
Apache Maven 3
主框架Spring Boot 2.3.x
Spring Cloud Hoxton.SR9
Spring Framework 5.2.x
Spring Security 5.2.x
持久層Apache MyBatis 3.5.x
Hibernate Validation 6.0.x
Alibaba Druid 1.2.x
視圖層Vue 2.6.x
Axios 0.21.0
Element 2.14.x

2.2 框架理解

2.2.1 Spring Boot框架

參考文章
Spring Boot - offical website

2.2.2 Spring Cloud框架

Spring Cloud是一系列框架的有序集合。看到Spring Cloud與Spring Boot,一定要搞清楚這兩個框架到底有什么區別,面試的時候大概率肯定會問。

Question 1: Spring Cloud與Spring Boot這兩個框架到底有什么區別?
(1) Spring Boot 是 Spring的一套快速配置腳手架,可以基于Spring Boot 快速開發單個微服務;Spring Cloud是一個基于Spring Boot實現的云應用開發工具;
(2) Spring Boot專注于快速、方便集成的單個個體;Spring Cloud是關注全局的服務治理框架;
(3) Spring Boot使用了默認大于配置的理念,很多集成方案已經幫你選擇好了,能不配置就不配置;Spring Cloud很大的一部分是基于Spring Boot來實現。
(4) Spring Boot可以離開Spring Cloud獨立使用開發項目,但是SpringCloud離不開Spring Boot,屬于依賴的關系。

Question 2: Spring Cloud與Spring Cloud Alibaba這兩個框架到底又有什么區別?
搞懂了上面那個問題,這個問題又需要回應。我先說說我自己的理解,再把綜合了其它文章的答案貼到下面,我的理解是:“微服務可以理解為一套技術標準,你得滿足服務注冊與發現、配置中心、服務網關等特性,但不同廠家有不同的實現標準,官方的Spring Cloud有自己的一套組件去實現這些功能(可能是從開源社區拿過來用或其它組織貢獻的),國外的Netflix有它的Spring Cloud Netflix下的一系列組件,國內的阿里有Spring Cloud Alibaba下的一系列組件”。

(1) 組件來源: Spring Cloud是一套微服務解決方案,它集成了Netflix的組件如Eureka、Ribbon、Feign等,為開發者提供了一整套微服務開發工具和框架。而Spring Cloud Alibaba是Spring Cloud的擴展組件,它集成了阿里巴巴的一些開源組件,包括但不限于Nacos(一個更易于構建云原生應用的動態服務發現、配置管理和服務管理平臺),Sentinel(面向分布式服務架構的流量控制產品)和RocketMQ。
(2)功能特點: Spring Cloud Alibaba提供了一些阿里巴巴的開源組件,以便于開發者更方便地使用這些組件來開發分布式應用服務。例如,Spring Cloud Alibaba Nacos可以用于服務發現和配置管理,而Spring Cloud Alibaba Sentinel則可以提供流量控制、熔斷降級、系統負載保護等功能。
(3)關系: Spring Cloud Alibaba是阿里巴巴出品的Spring Cloud第二代實現標準,它是阿里巴巴公司對微服務的實踐總結出的,已經在業界廣泛使用。總的來說,Spring Cloud Alibaba是Spring Cloud的子項目,符合Spring Cloud的標準。
—— 來自星火大模型的回答

從這里可以看出阿里系的戰略布局,開發自己的一套技術架構并加入Spring生態,從而得到更大面積的推廣,讓更多的受眾群體離不開Spring Cloud Alibaba,成為阿里系產品的使用者,并發展成潛在的用戶,這一招戰略十分精妙,華為的戰略與之類似,華為也在推廣它自己的技術體系到主流生態中,PyTorch就有華為的貢獻。

參考文章
Spring Cloud - offical website
Spring Boot Vs Spring cloud
《一篇文章搞懂 Spring Cloud 是什么》
《終于有阿里資深架構師講通Springcloud與Springboot的關系了》
哈嘍沃德先生 —— 博客主頁
《一文帶您讀懂什么是Spring Cloud與Spring Cloud Alibaba》- 知乎
《最詳細說明spring cloud和Spring Cloud Alibaba的聯系和區別》- CSDN
【一張圖完整說明微服務基本概念和核心思想】 - bilibili
2.2.2.1 服務注冊與發現

《注冊中心 | RuoYi》

2.2.2.2 配置中心

配置文件加載的優先級(由高到低)bootstrap.properties ->bootstrap.yml -> application.properties -> application.yml
《配置中心 | RuoYi》

2.2.2.3 服務網關
2.2.2.4 智能路由
2.2.2.5 負載均衡
2.2.2.6 斷路器
2.2.2.7 監控跟蹤
2.2.2.8 分布式消息隊列

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

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

相關文章

實用方法 | 搭建真正滿足用戶需求的在線幫助中心

隨著互聯網的普及和信息技術的快速發展,客戶服務和支持變得越來越重要。為了提高客戶滿意度和維持良好的品牌形象,越來越多企業都開始搭建自己的在線幫助中心。 不知從何下手?細想一下,搭建在線幫助中心主要就是為了解決用戶的問…

根據java類名找出當前是哪個Excel中的sheet

pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 …

shell_81.Linux在命令行中創建使用函數

在命令行中使用函數 在命令行中創建函數 兩種方法 單行方式來定義函數&#xff1a; $ function divem { echo $[ $1 / $2 ]; } $ divem 100 5 20 $ 當你在命令行中定義函數時&#xff0c;必須在每個命令后面加個分號&#xff0c;這樣 shell 就能知道哪里是命令的起止了&am…

反射實現tomcat

獲取類信息的方法 1.通過類對象 x.getClass() 2.通過class.forname方法 Class.forname(className);這里className是存儲類名的字符串 3.通過類名.class 類名.class 通過類名創建對象 類名.newInstance&#xff08;&#xff09;&#xff1b; 反射可以看到類的一切信息&#xff1…

C語言聯合和枚舉講解

目錄 聯合體的大小 聯合體如何省空間 巧用聯合體 聯合判斷大小端&#xff08;驚為天人&#xff0c;大佬寫的&#xff0c;我借鑒&#xff09; 枚舉 枚舉類型的使用 首先我們先看一下菜鳥教程中的對C語言聯合體的說明 聯合體的大小 #include <stdio.h> union u {char…

Proteus仿真--基于ADC0808設計的調溫報警器

本文介紹基于ADC0808實現的調溫報警器設計&#xff08;完整仿真源文件及代碼見文末鏈接&#xff09; 溫度調節使用滑動變阻器模擬實現&#xff0c;ADC0808采集信號并輸出在LCD上面顯示&#xff0c;報警系統是LED燈和蜂鳴器實現聲光電報警 仿真圖如下 仿真運行視頻 Proteus仿真…

Java實現二分法的案例,什么是二分法

文章目錄 Java實現二分法的案例&#xff0c;什么是二分法二分法實現 Java實現二分法的案例&#xff0c;什么是二分法 二分法 概念&#xff1a; 二分法&#xff08;Bisection method&#xff09; 即一分為二的方法&#xff0c;又叫折半查找方法。把一組有序數列分為左右兩部分…

前程無憂接口分析

前程無憂接口分析 所需用到的工具URL解析通過抓包軟件或者開發者選項抓取數據包對代碼中的參數解析分析對acw_sc__v2進行分析對acw_sc__v2進行轉換代碼生成生成outPutList數組生成arg2參數生成arg3參數最終的效果 對詳情頁面的分析對timestamp__1258的生成分析 所需用到的工具 …

Vue3.0優點詳解

相對于Vue2.0 3.0有了比較大的改進&#xff0c;優勢主要有以下幾點&#xff1a; 一、性能提升 1、Vue3.0的響應式系統使用了Proxy代理對象&#xff0c;取代了Vue2.0中的Object.defineProperty&#xff0c;使得Vue3.0的響應式系統更快、更靈活。 2、Vue3.0對TypeScript的支持更…

Ubuntu22.04安裝完成后便可直接使用鍵盤上的Print鍵進行截圖

概要&#xff1a;Ubuntu22.04安裝完成后&#xff0c;無需安裝什么截圖軟件&#xff0c;可以直接使用鍵盤上的Print鍵進行截圖。 1、按一下Print鍵 我的電腦上Print鍵是PrtSc&#xff0c;如下圖所示 2、框選區域并截圖 如下圖中&#xff0c;可以框選(Selection)&#xff0c;也…

【教學類-35-06】17號的學號字帖延伸出的全體字帖(1-9去0)(A4豎版1份)

作品展示 背景需求&#xff1a; 給大4班17號同學單獨做了一個學號字帖后&#xff0c;我想可以把這樣的學具用在中班&#xff08;我馬上要成為中4班老師了&#xff09;&#xff0c;那就需要給全班做一份這樣的大號學號貼。 使用17號同學的word模板&#xff08;見下文&#xff…

3dMax vs Cinema4d哪個更好更適合你?

Cinema 4d和3dMax的區別 用于游戲風格、開發和風格可視化的3D建模、動畫和渲染軟件系統&#xff0c;為用戶提供制作和編輯動畫、視覺效果和環境的靈活性。4D CINEMA可能是由MAXON構建的強大的3D建模、運動圖形、繪畫和動畫軟件系統。Cinema 4D將在每個Windows和MAC操作系統上運…

多目標追蹤評價指標

多目標追蹤性能評價 基礎&#xff1a; GT&#xff1a;Ground Truth&#xff0c;是指真實的標簽或者真實的對象&#xff1b; TP&#xff1a;True Positive&#xff0c;被正確預測檢測到的樣本&#xff1b; TN&#xff1a;True Negative&#xff0c;被預測為負的負樣本&#…

啃下這50道筆試題,你就是SQL專家!(附答案,收藏備用)

【關注微信公眾號&#xff1a;跟強哥學SQL&#xff0c;回復“筆試”免費領取大廠SQL筆試題。】 有兩個名為Department&#xff08;部門&#xff09;和Employees&#xff08;員工&#xff09;的表結構如下&#xff1a; CREATE TABLE Department ( DepId int, DepName va…

文章解讀與仿真程序復現思路——電力系統自動化EI\CSCD\北大核心《考慮兩階段魯棒優化配置的多微網合作博弈》

這個標題涉及到多個概念&#xff0c;讓我們逐步解讀&#xff1a; 考慮兩階段魯棒優化配置&#xff1a; 兩階段&#xff1a; 指的是在解決問題或進行優化時&#xff0c;可能存在兩個不同的階段或步驟。這表明問題的解決不是一步完成的&#xff0c;而是需要經過多個步驟或階段。魯…

前端學習系列之CSS

目錄 CSS 簡介 發展史 優勢 基本語法 引用方式 內部樣式 行內樣式 外部樣式 選擇器 id選擇器 class選擇器 標簽選擇器 子代選擇器 后代選擇器 相鄰兄弟選擇器 后續兄弟選擇器 交集選擇器 并集選擇器 通配符選擇器 偽類選擇器 屬性選擇器 CSS基本屬性 優…

virtualenv創建虛擬環境

目錄 概念安裝創建虛擬環境激活虛擬環境刪除虛擬環境退出虛擬環境更改虛擬環境路徑概念 virtualenv是一個創建隔離的Python運行環境的工具。它允許用戶為每個Python項目創建一個獨立的虛擬環境,以避免不同項目之間的依賴沖突。 安裝 pip install virtualenv virtualenvwrapper…

JS如何實現豎屏輪播圖

首先是HTML搭建結構 <div class"banner-box"><div class"bannerbox"><div class"banner"><a class"a-img-ban"> <img class"img-ban" src"./img/640 (4).jpg" alt"終于等到你還…

SpringBoot項目訪問resources下的靜態資源

1.新建一個配置文件夾&#xff0c;放配置類 2.編輯 WebMvcConfig.java package com.southwind.configuration;import org.springframework.context.annotation.Configuration; import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; import or…

openlayers地圖使用---跟隨地圖比例尺動態標繪大小的一種方式3

openlayers地圖使用—跟隨地圖比例尺動態標繪大小的一種方式 預期&#xff1a;隨著地圖比例尺放大縮小&#xff0c;地圖上的標繪隨著變化尺寸 思路&#xff1a;通過VectorImage和動態修改Feature尺寸實現Feature跟隨地圖比例尺尺寸變化 優點&#xff1a;結合第1和第2種方式的…