SpringCloud微服务实战系列:01让SpringCloud项目在你机器上运行起来

news/2024/12/16 17:10:44/

目录

项目选型

项目安装-本地运行起来

软件安装:

项目启动:

总结&答疑


项目选型

软件开发,基本上都不会从0开始,一般都是在其他项目或者组件的基础上进行整合优化迭代,站在巨人肩膀上才能看得更远, 其实这条规则也适用于任何行业。

软件项目组件选型最好的地方就是公有git库 ,最出名是: GitHub · Build and ship software on a single, collaborative platform · GitHub    Gitee - 基于 Git 的代码托管和研发协作平台   国内的

找一个符合国人习惯的springcloud项目,通过搜索发现芋道spring boot>spring boot 系列遥遥领先: 

选择springcloud 版本,关于SpringBoot和SpringCloud的关系请看我另外一篇文章: 

Spring、SpringBoot、SpringCloud关系是什么?你真的需要SpringCloud吗?-CSDN博客

项目安装-本地运行起来

芋道官网提供了比较详细的安装步骤,本章主要介绍我习惯使用的好的软件和安装过程中遇到的问题和解决方案。

搭建yudao-cloud 必须依赖的软件有:

IntelliJ IDEA java 集成开发环境,商业软件,非常好用,java程序员标配
mysql  server 8.2.0   和  yudao-cloud 源码里面sql文件版本一致,避免sql版本兼容问题产生麻烦
DBeaver sql客户单,基于jdbc连接,支持各种数据库,非常好用,开源软件
git 拉项目源码:  https://gitee.com/zhijiantianya/yudao-cloud  
redis  server缓存, yudao-cloud 必须依赖组件

AnotherRedisDesktopManager

开源redis 客户端
nacos-serveryudao-cloud 注册中心

软件安装:

1. IntelliJ IDEA    git   jdk17 安装步骤省略

需要下载两个项目: 

yuddao-cloud  java后端:      https://gitee.com/zhijiantianya/yudao-cloud    

yudao-demo  vue前端:    https://gitee.com/yudaocode/yudao-demo   

yuddao-cloud  导入到idea 后,切换到 master-jdk17分支,  springboot3  需要jdk17 

前端项目导入后, 我们直接用vue3的版本:

代码拉下来后,其实目录结构有点问题,不是maven的标准结构,IDEA导入后识别不了ElementPlusApplication.java ,解决办法:新建src目录, 把main拖到src里面去,点击右上角maven刷新按钮

2. mysql  server  安装注意事项:

版本: 8.2.0

为了避免yudao-cloud源码里面改一堆配置文件,端口,root密码和源码保持一致:

端口:3306

root 密码: 123456 

3. DBeaver 安装:安装完成后,创建一个mysql 连接

连接过程中如果出现 PublicKeyRetrieval 相关错误,将驱动属性这个值改成true .

4.DBeaver 连接成功后,建库:  ruoyi-vue-pro

5. DBeaver 里面执行sql, 建表: 

不要将sql粘贴到DBeaver 的Sql窗口执行,因为该文件是sqldump出来的,执行会报错。

你可以用DBeaver导入(DBeaver底层也是命令行,命令见第三张图红框内容),也可以直接用mysql 命令行导入:

5.  安装redis-server 和客户端: 

为了简单,我习惯docker 安装 redis-server
 

docker pull redis:7.2.6    docker run  -p 6379:6379  --name redis7   -d   redis:7.2.6  

AnotherRedisDesktopManager客户单 测试redis 是否安装成功: 

6.  安装nacos-server 单机版:

docker 安装, nacos-server 需要把多个端口映射出来。

docker pull nacos/nacos-server:2.0.2#注意这里要映射多个端口:
docker run --name nacos -e MODE=standalone -p 8848:8848  -p 9848:9848   -d nacos/nacos-server:2.0.2

你也可以选择本机安装, nacos-server也是spring-boot开发的

单机版启动的时候需要加参数  startup.cmd   -m standalone ,否则会报错

cd  D:\Program Files\nacos-server-2.4.3\nacos\bin.\startup.cmd -m standalone

安装完成登录并创建namespace 

http://127.0.0.1:8848/nacos/index.html#/login  用户名/密码:nacos/nacos

 

项目启动:

启动后端,只要启动gateway 和  system 这两个模块就可以看效果了。

启动后查看nacos注册中心数据(需要切换到dev namespace):

启动前端:

浏览器访问:

http://localhost:2048/

总结&答疑

1. 这是一个spring微服务项目吗?为什么微服务很多组件、概念这里没涉及? 

这是基于springcloud的微服务,最精简版, 只用了2个与微服务概念相关的服务治理组件,所有的微服务架构必须要有这2个组件。

gateway : 业务网关

nacos:  注册中心

2. yudao-demo 这个明显是java项目,为什么叫前端项目?

这里就是将前端源码编译后,直接放到springboot项目里,springboot内置了一个tomcat,这里整个 yudao-demo 项目就是个tomcat , 充当一个静态文件服务器角色 

前端nodejs+vue 技术栈也比较复杂,如果没写过vue的后端直接用vue源码编译,估计很费劲,原作者为了让后端开发快速上手就用了这么个变通方法,考虑的很周到。目前为了快速演示,先这么运行着,后面再讲vue前端源码。

3.项目架构和各组件调用关系: 

静态文件部分: 

浏览器 ---->  yudao-demo(tomcat+静态js 图片等文件)---> 静态文件返回给浏览器完成页面渲染

接口数据部分:

浏览器页面(js发起的ajax请求)---->gateway(统一转发到后端各个模块,借助nacos注册中心) -----> 后端各个业务模块(目前只启动了 system-server)  


http://www.ppmy.cn/news/1555627.html

相关文章

.NET MAUI开发的安卓、iOS软件和Java开发的安卓和Swift开发的iOS的区别

1. 开发语言和平台 .NET MAUI: 使用 C# 作为开发语言。通过 .NET 6/7/8 平台编译并打包应用。.NET MAUI 会根据目标平台(Android 或 iOS)编译和运行不同的本地代码。代码是跨平台的,开发者可以使用相同的代码库为 Android 和 iOS …

什么是战略思想?

古今中外,关于战略是什么?有非常多的理论,也有不同的视角。 中国最早的涉及战略的书籍据传是黄帝所著的《握奇文》,后有较为系统的兵法战略书籍为周朝姜太公(亦称姜尚、姜子牙等)所著的《六韬》&#xff0c…

关于Python程序消费Kafka消息不稳定问题的处理方法

在使用Python程序消费Kafka消息的过程中,有时会遇到各种不稳定的情况,如自动提交偏移量无效、CommitFailedError错误等。这些问题不仅影响了数据处理的可靠性,还可能导致重复消费或丢失消息。本文将针对这两个常见问题提供详细的解决方案和最…

如何实现接口继承与实现继承的区别?如何处理多态性与性能的平衡?

如何实现接口继承与实现继承的区别? 接口继承:只继承方法签名 实现继承:继承实际的方法 实现接口继承:基类只定义纯虚函数,抽象为接口(纯虚类),接口类中只保留函数声明&#xff0…

新能源汽车安全充电管理方案

摘要:近年来,随着国家碳达峰和碳中和目标的提出,国家节能减排政策实施力度的进一步加大大众的环保意识、环保理念进一步深入人心,同时根据国家战略安全需要,新能源汽车行业异军突起,发展迅猛。随着新能源汽车数量的不断…

2024.12.11-13——攻防世界unserialize3

知识点:PHP中的序列化和反序列化 一、序列化和反序列化 1.序列化(serialize) 将对象的状态信息转换为可以存储或传输的形式的过程,简单来说,就是将状态信息保存为字符串。为了解决不同机器之间传输复杂数据类型的一种机制 2.反序列化(uns…

牛客周赛71(字符串,状压dp)

目录 B. 宝石手串 D. 气球谜题 B. 宝石手串 (1)两种扩容方式: // 法一:直接加(通常用于拼接字符串)s s// 法二:一个一个字符加(用于加单个字符)for (…

如何实现一套完整的CI/CD?

CI/CD在项目中的作用不可言喻,避免了手工操作的低级失误以及便捷了开发部署项目。首先实现完整CI/CD,需要一些前置知识。 CI是什么? CI是持续化集成。他主要流程其实就是开发将代码上传到Github,持续集成工具(Github …