写在最前
如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。
源码地址(后端):https://gitee.com/csps/mingyue
源码地址(前端):https://gitee.com/csps/mingyue-ui
文档地址:https://gitee.com/csps/mingyue/wikis
模块规划
后续服务都按下图结构创建,主要分为三块:mingyue-system 系统服务聚合模块、mingyue-system-api 系统服务公共 API 模块、mingyue-system-biz 系统服务。
mingyue-system-api
系统服务公共 API 模块
- dto:请求入参类;
- entity:数据库实体类;
- feign:远程调用类;
- utils:工具包;
- vo:请求响应类;
mingyue-system-biz
系统服务
- controller:接口类;
- mapper:数据层交互类;
- service:业务逻辑抽象类;
- impl:业务逻辑实现类;
- resource/mapper: xxx_mapper.xml 文件存放
端口规划
端口分为两类
8xxx
、9xxx
- 基础设施端口(9xxx):
- 认证中心:9000;
- 网关中心:9100;
- 任务调度中心:9200;
- 监控中心:9300;
- 。。。
- 基础服务端口(8xxx):
- 系统服务:8000;
- 文件服务:8100;
- 推送服务:8200;
- 搜索服务:8300;
- 。。。
集群端口规划
以认证中心与网关中心为例,端口分别是
9000
、9100
。如果启动集群,端口则可以如下编排:
- 认证中心:9000、9001、9002…
- 网关中心:9100、9101、9102…
mingyue-system-biz
Pom 依赖
<dependencies>
<!-- SpringCloud Alibaba Nacos -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- SpringCloud Alibaba Nacos Config -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!-- SpringBoot依赖 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
注册 Nacos
# 端口
server:
port: 8000
spring:
application:
name: @artifactId@
profiles:
# 环境配置
active: @profiles.active@
cloud:
nacos:
# nacos 服务地址
server-addr: @nacos.server@
username: @nacos.username@
password: @nacos.password@
discovery:
# 注册组
group: @nacos.discovery.group@
namespace: ${spring.profiles.active}
config:
# 配置组
group: @nacos.config.group@
namespace: ${spring.profiles.active}
config:
import:
- optional:nacos:application-common.yml
- optional:nacos:${spring.application.name}.yml
启动服务
启动服务查看 Nacos 是否注册成功
新建 mingyue 数据库
新建 mingyue 数据库,并创建 sys_user 系统用户表
DROP DATABASE IF EXISTS `mingyue`;
CREATE DATABASE `mingyue` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE `mingyue`;
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for sys_user
-- ----------------------------
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
`user_id` BIGINT ( 20 ) NOT NULL,
`username` VARCHAR ( 64 ) NOT NULL COMMENT '用户名',
`nickname` VARCHAR ( 64 ) NOT NULL COMMENT '用户昵称',
`sex` CHAR ( 1 ) DEFAULT '0' COMMENT '用户性别(0男 1女 2未知)',
`password` VARCHAR ( 255 ) NOT NULL COMMENT '密码',
`phone` VARCHAR ( 32 ) DEFAULT NULL COMMENT '手机号码',
`email` VARCHAR ( 32 ) DEFAULT NULL COMMENT '用户邮箱',
`avatar` VARCHAR ( 255 ) DEFAULT NULL COMMENT '头像',
`lock_flag` CHAR ( 1 ) DEFAULT '0' COMMENT '0-正常,9-锁定',
`del_flag` CHAR ( 1 ) DEFAULT '0' COMMENT '0-正常,1-删除',
`create_time` datetime DEFAULT NULL COMMENT '创建时间',
`update_time` datetime DEFAULT NULL COMMENT '修改时间',
`create_by` VARCHAR ( 64 ) DEFAULT NULL COMMENT '创建者',
`update_by` VARCHAR ( 64 ) DEFAULT NULL COMMENT '更新人',
PRIMARY KEY ( `user_id` ),
KEY `user_idx1_username` ( `username` )
) ENGINE = INNODB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = DYNAMIC COMMENT = '用户表';
-- ----------------------------
-- Records of sys_user
-- ----------------------------
BEGIN;
COMMIT;
SET FOREIGN_KEY_CHECKS = 1;
小结
模块结构与端口规划完事儿,接下来我们开始打通系统服务与数据库之间交互。