[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](/Users/admin/Library/Application Support/typora-user-images/image-20220409094116377.png) ## 平台逻辑图 ![image-20220419091340805](/Users/admin/Library/Application Support/typora-user-images/image-20220419091340805.png) ## 开发环境 - 语言: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://doc.jeecg.com/2043893) | ### 永天云平台结构说明 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/ 您可以在`macOS`,`Windows`和`Linux`上运行`Compose`。本文演示基于`Linux`环境的安装。我们可以使用`curl`命令从`Github`下载它的二进制文件来使用,运行以下命令下载`Docker Compose`的当前稳定版本。或者从网页下载后上传至服务器指定目录`/usr/local/bin`也行。 - 下载 ```sh 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 中的版本,自定义您所需要的版本文件。 安装完成以后,查看指定目录,发现该文件没有可执行权限,进行授权操作。 - 授权 ```sh # 将可执行权限应用于该二进制文件 sudo chmod +x /usr/local/bin/docker-compose ``` 1 2 - 测试 ```sh docker-compose --version ``` 1 - 卸载 ```sh 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 账号属于 ``` ```