技术平台.md 12 KB

[toc]

技术平台建设方案(Hubble)

平台介绍

​ Hubble技术平台一套分布式微服务开发平台,它是业务中台建设的关键技术基础,它将保证业务中台的高性能和稳定性。该平台基于 行业成熟框架基础上进行二次开发,开源框架基于Spring Boot 2.1.3、 Spring Cloud Greenwich.SR3 & Alibaba、 Shiro、JWT 的快速开发平台,前端采用 ant-design-vue,简单易用封装各种组件,轻松满足企业级项目需求。

技术体系

  • 1、Nacos 服务注册和发现

  • 2、Nacos 统一配置中心

  • 5、SpringCloud Gateway

  • 6、JWT + Shiro 权限控制

  • 7、分布式文件系统 Minio、阿里OSS

  • 9、Spring Boot Admin服务监控

  • 10、链路跟踪 SkyWalking

  • 13、分布式定时任务 XXL-JOB

  • 14、ELK分布式日志

  • 15、支持 jenkins、docker-compose、k8s

平台架构图

image-20220409094116377

平台逻辑图

image-20220419091340805

开发环境

  • 语言:Java 8
  • IDE: IDEA 或 Eclipse (安装lombok插件)
  • 依赖管理:Maven
  • 数据库:MySQL5.7 & Oracle 11g
  • 缓存:Redis

技术平台常用系统

系统名 开源组件 地址 状态
服务注册中心系统 http://usky-cloud-nacos/nacos/#/login (nacos/naoc@Usky2022) 建设完成
API文档系统 http://101.133.214.75:7700/ 没有API
服务监控系统 http://usky-cloud-admin/ (ruoyi/123456) 建设完成
持续集成发布系统 http://10.0.240.163:8080/ (usky,Usky@208) 建设完成
代码质量管理系统 http://47.111.81.118:3000/ 建设完成
容器管理系统 http://192.168.31.114:9000/#/containers 不建设()
基础监控 http://192.168.31.114:3001/ 建设完成
Nexus maven私服 http://101.133.214.75:8081/(admin/Usky@208) 建设完成

技术点

序号 知识点 资料
1 Node.js 入门 http://www.runoob.com/nodejs/nodejs-tutorial.html
2 Npm 命令 http://www.runoob.com/nodejs/nodejs-npm.html
3 Yarn 建议,比npm更快
4 Vue https://cn.vuejs.org/
5 ES6 https://blog.csdn.net/itzhongzi/article/details/73330681
6 Vue全家桶 Webpack 、axios、Vue router、Vuex、Vue Loader、Vue cli
7 Springboot
8 Mybatis-plus
9 Shiro
10 Spring Cloud Alibaba 微服务技术解决方案

永天云平台结构说明

http://47.111.81.118:3000/uskycloud

usky-cloud

  • base-components -- 基础组件提供网关,注册中心,监控服务

    • gateway
    • monitor
    • Register
  • base-modules -- 公共服务模块,提供文件,代码生成,job,系统管理

​ - file-service

​ - gen-service

   - job-service 
   - System-service
  • base-common -- 公共工具模块

​ - common-core

​ - common-util

  • usky-modules -- 永天服务模块,每个服务模块结构,参照《微服务业务模块结构说明》

    • demo-service -- demo服务

    • system-service -- 永天云系统管理

    • backend-service -- 永天云租户后台管理

    • dianli-service -- 电力服务

    • fire-service -- 消防服务

微服务业务模块结构说明

├── usky-module-xiaofang            --CMS微服务模块
    ├──usky-module-xiaofang-api     -- 实体、dto、vo、服务定义
        ├──dto
        ├──entity
        ├──feign
        ├──vo
    ├──usky-module-xiaofang-biz    --业务实现(引用usky-module-cms-api)
        ├──controller
        ├──mapper
        ├──service
  • 这种目录结构好处是将实体拆分出去,实现单体和微服务共用实体定义;
  • 其他微服务模块需要调用微服务接口,直接引入usky-module-cms-api 即可。

现有业务SaaS多租户改造方法

针对某个表实现SAAS模式,具体实现以下三点功能:

  1. 添加数据自动注入登录人租户ID。
  2. 查询自动根据登录人租户ID进行数据筛选。
  3. 数据库表修改 多租户的表需要添加一个int类型字段 tenant_id,同时java对应实体也加上字段tenantId

参照方案:http://doc.jeecg.com/2044164

行业成熟半成品框架

  • ruoyi-cloud

https://gitee.com/y_project/RuoYi-Cloud

1.auth 模块合并到 system模块(实现)

2.file 模块合并system模块(实现)

3.客户端可以独立运行,提出common-securit(实现)

4.系统管理模块改为mysqlplus架构()

  • 统一返回(目前盖好)

5.网关不做具体权限控制

  • Jeecg-cloud

https://gitee.com/enzhouguo/jeecg-cloud

平台规范

建表规范

表设计规范

  • 1.主键必须为:ID,类型 [Long(19)] 唯一索引
  • 2.外键字段命名:{【关联表名】去掉业务前缀}+“_”+ {关联字段名},例如:order_main_id
  • 3.区分位: iz* [String(1)] 1表示是 0表示否,(禁用 is,代码生成实体有问题 )
  • 4.状态位: *_status [String(1-2)] 状态字段必须加注释说明每个值代表含义
  • 5.字段命名,多单词采用下划线分隔 例如:school_id
  • 6.索引命名: 主键索引命名为:pk_表名缩写_字段名(索引要求全库唯一,为兼容多数据库); 唯一索引命名为:uniq_表名缩写_字段名uk_表名缩写_字段名; 普通索引命令为: idx_表名缩写_字段名(表名缩写: 下划线分隔单词首字母组合)
  • 7.区分、状态、类型字段,尽量用String类型,避免数字类型的一些问题;如果需要考虑性能建议用int类型 (禁用tinyint类型,需要兼容其他数据库);
  • 8.字段默认值(字段尽量不设置默认值,采用编码方式加默认值) 因为在转库的过程中,不同数据库会有丢失默认值的情况

表业务前缀 和 建表标准字段

  • 1.表命名必须带上业务前缀:例如 sys_开头(系统表前缀)
  • 2.所有的表加字段:所属部门,用于部门数据权限
  • 3.所有的表加字段:创建时间,创建者,最后更新时间,更新人
  • 4.逻辑删除字段,del_flag [int(1)],1表示删除 0表示未删除 ,可选择加
  • 5.乐观锁字段, update_count[Integer],可选择加
  • 6.字符串类型字段,varchar类型长度不允许超过1000(过长转库会变类型)
  • 7.大文本尽量少用,字段类型采用text、longtext,禁用blob系列类型(必须用要确认)

帮助脚步

ALTER TABLE `表名`
ADD COLUMN `create_by`  varchar(32) NULL COMMENT '创建人',
ADD COLUMN `create_time`  datetime NULL COMMENT '创建时间' AFTER `create_by`,
ADD COLUMN `update_by`  varchar(32) NULL COMMENT '修改人' AFTER `create_time`,
ADD COLUMN `update_time`  datetime NULL COMMENT '修改时间' AFTER `update_by`,
ADD COLUMN `del_flag`  int(1) NULL COMMENT '0表示未删除,1表示删除' AFTER `update_time`;

其他说明:

  • 表字段注释,每个字段必须设置注释说明;
  • 表字段注释,状态类型的字段必须说明取值规则(比如性别sex取值规则) 比如:'性别 0男,1女'
  • 索引,查询频率高的字段加索引(单字段索引 、组合索引、唯一索引);
  • 状态、类型字段,尽量用字符串varchar类型1-2长度,少用int类型,避免不必要的问题。

服务器部署地址约定

后端部署地址: /var/services/服务名称

前端部署地址:/var/www/服务名称

日志输出地址:/var/log/uskycloud/服务名称

例如:永天电力 服务名 usky-power

后端部署地址: /var/services/usky-power

前端部署地址:/var/www/usky-power

日志输出地址:/var/log/uskycloud/usky-power

其它

Compose 安装

官方文档:https://docs.docker.com/compose/install/

您可以在macOSWindowsLinux上运行Compose。本文演示基于Linux环境的安装。我们可以使用curl命令从Github下载它的二进制文件来使用,运行以下命令下载Docker Compose的当前稳定版本。或者从网页下载后上传至服务器指定目录/usr/local/bin也行。

  • 下载
curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 因为Docker Compose存放在GitHub,可能不太稳定。可以通过DaoCloud加速下载
curl -L https://get.daocloud.io/docker/compose/releases/download/1.26.2/docker-compose-`uname -s`-`uname -m` > /usr/local/bin/docker-compose

您可以通过修改 URL 中的版本,自定义您所需要的版本文件。

安装完成以后,查看指定目录,发现该文件没有可执行权限,进行授权操作。

  • 授权
# 将可执行权限应用于该二进制文件
sudo chmod +x /usr/local/bin/docker-compose

1 2

  • 测试
docker-compose --version

1

  • 卸载
rm /usr/local/bin/docker-compose

统一网关访问

  • 测试环境

http://172.16.120.165:801/api

  • 线上环境

http://gateway.usky.cn/api

# 开发记录

平台化-技术平台 V0.1 100%
参与:詹叶俊,杨强,郭恩洲
内容 进度
【数据平台】device-writer-mongo存储服务开发 100%
【数据平台】auth模块整合到system 100%
【数据平台】mqtt-acceptance 订阅解析发送MQ 100%
【业务平台】系统模块开发 100%
平台化-技术平台 V0.2 7/4-7/14 完成评分
参与:王涛,吉超博,郭恩洲
内容 进度
【业务平台】system改成租户模式,形成运营中心版本 70%
【数据平台】数据平台查询服务 50%
【数据平台】data-collector 统一接收监听 0%
【业务平台】Mybatisplus搭建多租户拦截器模式 0%
【业务平台】新的前端框架增加租户管理,平台管理,登录体系 20%

#验收结论

1.admin 账号属于