技术架构设计
概要
平台技术选型考虑的方向主要是稳定,容易入门,成本低,也会引入新技术,但新技术需要消化过程(比如 1~2 年左右),
所以在选型的时候,尽量选择市面上成熟的且方案比较成型的,考虑平台搭建及完善的周期为 1 年左右,
所以技术选型也以当前最新技术为用选型
前置条件
- 网络连接正常(内外网接通)
- 技术选型以搭建开发环境为主
技术架构
技术这里主要规范是通过的开源技术整合,便于快速低成本的使用
技术架构说明:
- 架构偏向于开源、免费的技术整合,低成本的实现且可控的能力
- 包含从管理、基础环境、自动化、前端整合的能力
技术选型
开发管理
| 序号 | 说明 | 技术 | 版本 | 备注 |
| 1 | 文档管理 | VuePress | | 企业内部做好考虑,团队未必每个人都能接受 markdown |
| 2 | Wiki 管理 | VuePress | | 企业内部做好考虑,团队未必每个人都能接受 markdown |
| 3 | 开发过程管理 | Jira | | |
| 4 | 开发工具管理 | 百度网盘 | | 团队内部建议使用 FTP 或者内部文件系统 |
| 5 | 邮件通知 | 163 邮箱 | | 建议使用企业内部邮箱 |
基础设施
此处统一采用阿里云,实在话,阿里云真的稳定
| 序号 | 说明 | 技术 | 版本 | 备注 |
| 1 | 服务器 | CentOS | 7.5_x64 | 不能低于 7.5(使用了 mini 版) |
| 2 | 虚拟化 | 阿里云 | 5.2.12 | 实际生产中建议使用 Exsi 或者云服务器 |
| 3 | 网络 | 阿里云 | | 团队内网 |
基础环境
| 序号 | 说明 | 技术 | 版本 | 备注 |
| 1 | 缓存工具 | Redis | 5.0 | 有些低版本集群不支持口令 |
| 2 | Redis 管理工具 | Redmon | 0.0.13 | |
| 3 | 消息列表 | Kafka | 2.01 | kafka 版本变动导致接口变动较大 |
| 4 | 消息管理工具 | Kafka-Manager | 1.3.3.7 | |
| 5 | 数据库 | MySQL | 5.7 | |
| 6 | 数据库客户端 | Navicat | | |
| 7 | 数据库中间件 | MyCAT | 1.5 | |
| 8 | JVM | jdk | jdk-8u112-linux-x64 | |
| 9 | 开发工具 | Spring Tool Suite | 3.9.x | 不建议使用 idea |
| 10 | jsp 容器 | Tomcat | 9.x | |
| 11 | 反向代理 | Nginx | 1.14.1 | 建议版本不要太低 |
| 12 | 网关 | Kong | 1.14.1 | 与 Nignx 配合使用或者去掉 Nginx |
| 13 | 高可用 | KeepAlived | 2.0.10 | |
| 14 | 分布式注册中心 | zeekeeper | 3.6 | 此目前版本是公认较稳定版 |
| 15 | 存储工具 | 七牛 | | 建议使用公有云或者自己搭建 FastDFS |
| 16 | 分布式存储 | minIO | | . |
自动化平台
| 序号 | 说明 | 技术 | 版本 | 备注 |
| 1 | 代码管理 | Git(gitee) | 2.17.1 | 企业内部建议使用 gitlab(更能满足需求) |
| 2 | 代码管理客户端 | SourceTree | 2.7.6 | |
| 3 | 自动部署工具 | Jenkins | 2.107.1 | 不建议使用太新版本 |
| 4 | 私服库 | Nexus | 2.14.1 | 不建议使用 3.x 版本 |
| 5 | 构建工具 | Maven | 3.6.0 | |
| 6 | 代码检测 | Sonar | 5.x | 不建议使用太新版本 |
| 7 | 镜像管理 | Harbor | 1.5.2 | 使用阿里云 |
| 8 | 镜像容器 | Docker | 1.12.1 | |
| 9 | 镜像容器 | Docker | 1.12.1 | |
| 10 | 容器管理安全检测 | Clair | | |
| 11 | 容器管理 | KubeOperator(kubernetes) | 1.15 | 容器管理和集成【暂定技术】 |
运维管理
| 序号 | 说明 | 技术 | 版本 | 备注 |
| 1 | 自动部署 | Ansible | 2.6.7 | |
| 2 | 应用监控 | SpringBootAdmin | | |
| 3 | 链接跟踪 | zipkin | 最新版 | 去掉 |
| 3 | 分布式日志 | PlumeLog | | 二次开发 |
| 5 | 日志监控 | elk | 5.x | |
| 6 | 服务器监控 | Promethues | 最新版本 | |
| 7 | 运维工单 | 禅道 | 最新版本 | 新版本操作更简便 |
开发技术
服务技术
| 序号 | 说明 | 技术 | 版本 | 备注 |
| 1 | SpringCloud 技术 | SpringCloud Alibaba | Greenwich.M3 | |
| 2 | 数据操作 | SpringDataJpa | | 针对于通用业务场景和维护数据库 |
| 2 | 数据操作 | JdbcTemplate | | 针对于复杂业务场景 |
| 3 | 数据操作 | QueryDSL | | 即 Jpa+QueryDSL 形式 |
| 4 | 集群定时任务 | SpringCloudTask | | |
| 5 | 服务间互调框架 | ~Dubbo~ | 2.7.3 | 新版本不再使用 |
| 6 | 注册与发现 | Zookeeper+Dubbo-amdin | | |
| 7 | 消息管理 | SpringCloudStream | | |
| 8 | 微服务框架 | SpringBoot | 2.1.4 | |
| 9 | 服务对外网关 | SpringCloudGateway | | |
| 10 | 熔断管理 | SpringCloudHystrix | | |
| 11 | 配置框架 | xxl-conf | | 自研(基于 xxl-conf) |
| 12 | 安全框架 | Apache Shiro | | |
| 13 | 单机限流 | SpringCloudHystrix | | 【推荐】单机方法并发量限流 |
| 14 | 多数据库源 | Atomikos | | 多数据源分布式事务 |
| 15 | 分布式事务(同步) | alibaba-seata | | 分布式事务 |
| 16 | 分布式限流和流量监控 | Sentinel | | 【网关】基于阿里 Sentinel |
| 17 | 防止表单重复提交 | SpringIOC/AOP | | |
| 18 | 邮件客户端 | JavaEmail | | |
| 19 | 分布式配置中心 | Apollo | 1.1.2 | 删除 |
| 20 | 分布式 Session 管理 | SpringSession | | |
| 21 | 分布式 Redis 操作 | Redisson | 3.4.1 | |
| 22 | 消息中间件 | Kafka | | |
| 23 | 单元测试 | JUnit | | |
| 24 | Office 操作工具 | POI | | |
| 25 | Xml 格式化工具 | XStream | | |
| 26 | 文档解析器 | Apache Tika | | |
| 27 | 数据库连接 | Druid | | |
| 28 | 日志 | Logback | | |
| 29 | 搜索框架 | Nutch | | |
| 30 | 邮件客户端 | JavaEmail | | |
| 31 | Socket 接口 | Netty | | |
| 32 | 规则引擎 | Drools | | |
| 33 | 数据采集 | DataX | | |
| 34 | 报表技术 | UReport2 + EchartsJS | | . |
数据技术
| 序号 | 说明 | 技术 | 版本 | 备注 |
| 1 | 数据存储 | Hadoop | 2.x/3.x | |
| 2 | 资源调度 | Yarn | | |
| 3 | 一致性 | Zookeeper | 1.8.5 | |
| 4 | 消息中间件 | Kafka | 2.12/3.x | |
| 5 | 数据仓库 | Hive | | |
| 6 | 数据抽取 | Sqoop | | |
| 7 | 实时仓库 | Hbase | | |
| 8 | 实时仓库 | clickhouse | latest | |
| 9 | 日志存储 | elasticsearch | | |
| 10 | 分布式存储 | minio | | |
| 11 | 接口服务 | magic-api | 1.7.5 | 二次开发 |
| 12 | 数据开发 | dolphinscheduler | 2.6.5 | 二次开发 |
| 13 | 前端集成 | kettle | | |
| 14 | 前端采集 | logjs | latest | 二次开发 |
| 15 | 数据安全网关 | spring-cloud-gateway | latest | 二次开发 |
| 16 | 实时计算 | Flink/FlinkSQL | | |
| | | | |
前端技术
前端技术是一个麻烦的过程,审美过程会不断的变动,而且更多的考虑是合适开发且简单配置,达到统一性,
这里只是先做此类型的选型,有大体的方向,具体会在前端设计环节做调整并确定
页面技术选型
| 序号 | 说明 | 技术 | 版本 | 备注 |
| 1 | 前端开发模板 | Thymeleaf | 3 | |
| 2 | UI 框架 | Bootstrap | 3 | |
| 3 | JS 框架 | vuejs | | |
| 4 | CDN | 七牛 CDN | | 略 |
node 技术选型
待选
其它