赞
踩
参考视频或文章链接 |
---|
RuoYi-Cloud官方文档 |
《若依框架讲解-微服务版》- bilibili |
How To Install DBeaver Universal Database Tool in Linux |
请参考官方文档进行环境搭建,这里只记录遇到的零散问题。
安装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
。
参考视频或文章链接 |
---|
2023最新nacos的windows 10安装 |
nacos支持三种部署模式:
单机模式 - 用于测试和单机试用。
集群模式 - 用于生产环境,确保高可用。
多集群模式 - 用于多数据中心场景。
ruoyi项目默认使用单机模式
RuoYi可以集成seata分布式事务,见参考文章。
1.2 参考文章 |
---|
[1] 《Seata 是什么?》 |
见参考文章[7]
参考视频或文章链接 |
---|
[1]《前端技术栈 —— Vue框架 —— (一)快速上手》 |
工程文件的打包是用/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=true
pause
这是转换后的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,启动方法请往上翻。
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官方文档 |
Spring-Cloud是一个微服务框架,什么是微服务(Microservices)?微服务由许多较小的,松散耦合的服务组成一个应用程序,与大型,紧密耦合的应用程序的整体方法相反。比如一个党支部达到一定人数时,为方便活动,就会拆分成一支部,二支部,这样分开活动更为方便,但整体仍同属一个组织架构,天下最基本的道理其实就这么多,只是变化无穷。所以只需要将各个模块的jar
包或war
包启动即可,启动脚本在项目的/bin
目录下。
nacos中的配置文件应如下图所示,实际上,Ruoyi-Cloud项目下的/sql/ry_config_yyyymmdd.sql
文件就可以创建了,前提是你的nacos使用的是mysql后端,并且连到了这份sql
文件所建立的数据库中。
对于前后端分离的Ruoyi版本,需要单独启动一个ruoyi-ui的项目,你需要提前安装node和npm。
cd
到ruoyi-ui
目录下,执行npm run dev
,使用较新版本的Node.js
可能会出现报错 ERROR Error: error:0308010C:digital envelope routines::unsupported
,数字信封例程不支持,这和openssl有关,运行npm run dev
前先执行即可。
export NODE_OPTIONS=--openssl-legacy-provider
1.6.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 |
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就有华为的贡献。
2.2.2.1 参考文章 |
---|
《注册中心 | RuoYi》 |
《2023最新nacos的windows 10安装(保姆级)》 |
配置文件加载的优先级(由高到低)bootstrap.properties ->bootstrap.yml -> application.properties -> application.yml
其中,nacos是同时包含 服务注册与发现 和 配置中心这两项功能的,看图就知道了。
2.2.2.2 参考文章 |
---|
《配置中心 | RuoYi》 |
2.2.2.3 参考文章 |
---|
《服务网关 | RuoYi》 |
Load Balancing,简称LB。是一种将网络流量和用户请求均匀分配到多个服务器或服务实例的策略,目的是提高响应速度、可用性,以及资源的高效利用。
服务熔断一般是指软件系统中,由于某些原因使得服务出现了过载现象,为防止造成整个系统故障,从而采用的一种保护措施。
服务降级是在服务器压力陡增的情况下,利用有限资源,根据当前业务情况,关闭某些服务接口或者页面,以此释放服务器资源以保证核心任务的正常运行。
2.2.2.5 参考文章 |
---|
《熔断和降级 | RuoYi》 |
Elasticsearch 基于java,是个开源分布式搜索引擎。
Kibana 基于nodejs,也是一个开源和免费的工具,Kibana可以为Logstash和ElasticSearch提供的日志分析友好的Web 界面,可以汇总、分析和搜索重要数据日志。
Logstash 基于java,是一个开源的用于收集,分析和存储日志的工具。
2.2.2.6 参考文章 |
---|
《分布式日志 | RuoYi》 |
服务网格(Service Mesh)是一种用于微服务间通信和管理的基础设施层。它提供了一种将服务间通信控制和安全性从应用程序代码中抽象出来的方法,使得开发者可以专注于业务逻辑,而不必处理服务间的通信细节。
如果没有远程调用组件,你想从微服务A调微服务B的接口,需要用Http工具发Http请求,而且这样写起来很丑陋,但有了远程调用组件,比如Feign,就可以用声明式的方式进行调用,仿佛在调本地服务接口一样,这就是远程调用组件的含义,类似于部门之间的沟通桥梁。
2.2.2.8 参考文章 |
---|
[1] 《微服务之Feign的介绍与使用》 |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。