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.mzph.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种方式的…