书接上回<java一个脚手架搭建-CSDN博客>
这个脚⼿架项⽬开发前,你要大概的了解一下这些东西:
Java基础、IDEA使⽤、Maven基础
• Linux基础
• Springboot/Spring Cloud 基础
• MySQL基础
• Redis基础
• RabbitMQ基础
• Docker基础
• Git基础
• JavaScript、CSS、HTML
• VUE基础
我们可以拿到网上找到的微服务架构图理解
对于本项目,我们大概可以想到微服务的一些流程
微服务介绍
⽤⼾通过客⼾端(浏览器)操作,客⼾端(浏览器)将请求发送⾄代理服务器(Nginx)。
• 若⽤⼾请求静态资源,Nginx 可直接处理并将资源返回给客⼾端(浏览器)展⽰。
• 若请求动态资源,Nginx 将请求转发⾄后端服务器。
• 后端服务器由 API ⽹关(Spring Cloud Gateway)先接收请求,再根据业务转发⾄具体微服务处 理,可能是开发⼈员根据实际项⽬新增的业务服务,也可能是脚⼿架项⽬本⾝提供的微服务。
◦ Nacos 作为服务注册与发现中⼼,可准确转发请求⾄对应微服务。
◦ Nacos 作为配置中⼼,各服务启动时相关配置从Nacos拉取。
◦ 业务处理时,如果需要使⽤公共sdk提供的相关功能可以直接使⽤。
◦ 业务处理时,后端服务可能调⽤其他微服务,如 Portal 调⽤File服务,借助 openfeign实现。
◦ 业务处理时,后端服务可能调⽤第三⽅服务,脚⼿架项⽬提供第三⽅服务集成⽅案。(如:微信登录、阿⾥云短信、腾讯地图等)
◦ 业务处理时,后端服务可能借助存储服务完成相关业务,脚⼿架项⽬提供相关存储机制集成⽅案。(如:Mysql、Redis、RabbitMQ、OSS)
具体一点,就体现在这张图中
这就是我们这个微服务脚手架的基础
组件介绍
序号 | 分类 | 技术组件 | 介绍 |
1 | 后端 | SpringBoot | 快速构建 Spring项⽬的框架,简化了 Spring应⽤的配置和开发过程。 |
2 | 后端 | SpringCloud | 基于Spring Boot的微服务架构⼯具集,提供微服务架构系统解决⽅案。 |
3 | 后端 | Redis | ⾼性能内存键值数据库,常应⽤于缓存实现⽅案。 |
4 | 后端 | RabbitMQ | 开源的消息队列,常⽤于异步解耦、流量削峰、异步通信等。 |
5 | 后端 | Nacos | 服务发现与注册中⼼、配置中⼼。 |
6 | 后端 | Mysql | 关系型数据库,⽀持结构化数据存储和SQL查询。 |
7 | 后端 | Mybatis | 持久层开发框架。 |
8 | 后端 | Redisson | 基于Redis的Java客⼾端,提供分布式锁、集合等⾼级功能。 |
9 | 后端 | Caffeine | ⾼性能的 Java 本地缓存库。 |
10 | 后端 | Jwt | JSON Web Token ⼀个轻量级的认证规范。常⽤于⽤⼾⾝份认证。 |
11 | 后端 | Nginx | ⾼性能的 HTTP 服务器和反向代理服务器,常⽤于负载均衡、静态资源服务器、反向代理等场景。 |
12 | 运维 | Docker | 容器化平台。 |
13 | 运维 | Docker Compose | 定义和运⾏多容器,实现⼀键启动、管理和编排多容器依赖关系。 |
14 | 第三方 | 阿⾥云OSS | 阿⾥云提供的对象存储服务,⽤于存储和管理⼤量的⾮结构化数据,如图⽚、视频、⽂件等。 |
15 | 第三方 | PostMan | API 设计、开发、测试⼀体化协作平台。 |
16 | 第三方 | 微信登录 | |
17 | 第三方 | 腾讯地图 | |
18 | 第三方 | 阿⾥云短信 | 阿⾥云提供的短信服务,允许开发者通过 API 向⼿机⽤⼾发送短信。 |
19 | 第三方 | 阿⾥云容器镜像仓库 | 阿⾥云提供的容器镜像存储服务。 |
20 | 第三方 | Gitee | |
21 | 前端 | Vue3 | |
22 | 前端 | Vue-Router | |
23 | 前端 | Pinia | Vue的状态管理库。 |
24 | 前端 | Element Plus | 基于Promise的HTTP客⼾端,⽤于浏览器和Node.js的请求发送。 |
25 | 前端 | Axios | |
26 | 前端 | Vite |
前面是我们的一些想法和准备做好了,我们大致地,会将代码的文件结构分成三个层次。
微服务结构层次:
1.⼯程分层:我们将整个⼯程划分为三层。
a.第⼀层:项⽬⽗⼯程,作为整个项⽬的根⽬录(frameworkjava)。
b.第⼆层:公共模块(bite-common)、各个微服务(bite-gateway、bite-file、bite-admin、
bite-portal、bite-mstemplate)。
c.第三层:
i.公共模块下第三层:基础通⽤包(bite-common-core)、通⽤消息包(bite-common-message)、公⽤协议(bite-common-domain)、通⽤安全包(bite-common-security)、各中间件通⽤包(bite-common-redis)。
ii.各个微服务下第三层:微服务api层(如:bite-file-api)、微服务实现层(如:bite-file-
service)。
2.公⽤协议:
软件开发时通信或者数据交换时的遵循的⼀套规则或约定。 ⽐如:统⼀响应数据结构、统⼀状态码这些是不都是前后端在进⾏通信时所需要遵循的规则。
3.服务划分对外API和服务实现:
a.服务api:提供外部调⽤api(通过openFeign实现),和外部调⽤共享的Bean或者常量等信息的
引⽤。
b.服务实现:具体业务实现。
4.包组织:
a.微服务中,业务模块按功能分包。
b.模块内分controller、domain、mapper、service包。