008-从零搭建微服务-系统服务(一)

834 阅读3分钟

写在最前

如果这个项目让你有所收获,记得 Star 关注哦,这对我是非常不错的鼓励与支持。

源码地址(后端):gitee.com/csps/mingyu…

源码地址(前端):gitee.com/csps/mingyu…

文档地址:gitee.com/csps/mingyu…

模块规划

后续服务都按下图结构创建,主要分为三块:mingyue-system 系统服务聚合模块、mingyue-system-api 系统服务公共 API 模块、mingyue-system-biz 系统服务。

image-20230605134842498

mingyue-system-api

系统服务公共 API 模块

  • dto:请求入参类;
  • entity:数据库实体类;
  • feign:远程调用类;
  • utils:工具包;
  • vo:请求响应类;

mingyue-system-biz

系统服务

  • controller:接口类;

  • mapper:数据层交互类;

  • service:业务逻辑抽象类;

    • impl:业务逻辑实现类;
  • resource/mapper: xxx_mapper.xml 文件存放

端口规划

端口分为两类 8xxx9xxx

  • 基础设施端口(9xxx):

    • 认证中心:9000;
    • 网关中心:9100;
    • 任务调度中心:9200;
    • 监控中心:9300;
    • 。。。
  • 基础服务端口(8xxx):

    • 系统服务:8000;
    • 文件服务:8100;
    • 推送服务:8200;
    • 搜索服务:8300;
    • 。。。

集群端口规划

以认证中心与网关中心为例,端口分别是 90009100。如果启动集群,端口则可以如下编排:

  • 认证中心: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;

小结

模块结构与端口规划完事儿,接下来我们开始打通系统服务与数据库之间交互。