# 技术架构设计

# 概要

平台技术选型考虑的方向主要是稳定,容易入门,成本低,也会引入新技术,但新技术需要消化过程(比如 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 技术选型

待选

序号 说明 技术 版本 备注
1 前端开发环境 nodejs (opens new window) >= 8.0.0
2 nodejs 包依赖管理 npm (opens new window) >= 5.0.0
3 nodejs 包依赖管理 yarn (opens new window) >= 1.0.0
5 vuejs 的 UI 框架 antd (opens new window) >= 1.4.0
6 前端开发与打包工具(基于webpack2 (opens new window)) poi (opens new window) >= 9.0.0
7 在 react 中嵌入 css css-modules (opens new window)
8 编写更容易维护的 css sass (opens new window) >=4.0.0
9 在旧的浏览器使用下一代的 js 特性 babel (opens new window) >= 6.0.0
10 自动添加 css 的浏览器前缀 autoprefixer (opens new window)

# 其它