模块规划
后续服务都按下图结构创建,主要分为三块: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 依赖
xml
复制代码
<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
yaml
复制代码
# 端口 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 系统用户表
sql
复制代码
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;
小结
模块结构与端口规划完事儿,接下来我们开始打通系统服务与数据库之间交互。