技术选型
管理模板
基于 Bootstrap 的前端流行框架 MetroNic 为后台管理模板
核心框架
使用 Spring Boot 构建整个项目,去除 XML 配置
视图框架
使用 Spring MVC 构建视图层
持久化框架
使用 MyBatis 做 ORM 关系映射并使用二次封装的工具类 tk.mybatis 简化持久化开发
数据库连接池
使用阿里巴巴 Druid 作为 MySQL 数据库连接池,原因你懂的
页面引擎
因为 Spring Boot 项目都是打包成 Jar 文件运行,我们选择使用和 Spring MVC 契合度最高的 Thymeleaf 作为前端模板引擎
全文检索
使用基于 Lucence 的全文检索引擎 Solr 为整个系统提供搜索服务
数据库
使用在互联网领域最受欢迎的 MySQL 为系统数据库
数据缓存
采用 Redis 集群方案做数据缓存服务
项目构建及管理工具
使用 Maven 统一管理 Jar 版本并打包及构建项目
存储服务
内部系统使用 FastDFS 管理图片及文件存储,外部采用阿里云 OSS 作文件存储服务
消息中间件
消息队列使用 RabbitMQ ,Broker 方面直接采用官方的 RabbitMQ Management
接口文档引擎
在开发阶段采用 Swagger2 自动生成 API 接口文档,方便开发人员查看,提高开发效率
负载均衡
使用反向代理服务 Nginx 为负载均衡服务器并配合容器化引擎提供高并发、高性能、高可用服务
容器化引擎
使用 Docker 为容器化引擎并配合 Docker Compose 管理容器。容器编排解决方案使用 k8s(Kubernetes)
RPC 通信
微服务架构层面,各个模块的通信采用基于 RPC 通信协议的 Dubbo 为主要通信框架。由于使用的是开源版本,所以其中的服务治理方案采用 Zookeeper 桥接实现,可靠性也依赖于 Zookeeper。
代码管理
代码管理方面采用社区版的 GitLab 为代码托管服务器,代码的交付使用 Git Flow 工作流模式
CI/CD 持续集成与持续交付
本部门使用 GitLab 自带的 Runner 做持续集成的测试发布,运维部门采用 Jenkins 作为生产环境的持续交付方案