技术架构
- 框架概要
现有产品问题
- 用户多,分布广泛;维护难。
- 大流量,数据请求量大;大数据请求加载数据慢。
- 垂直式开发;维护难,版本升级混乱。
- 功能多,变更快,频繁发布,升级出现未知问题。
- 未模块、组件式开发,影响开发效率和bug修复。
- 以用户为中心,用户需求变更造成版本过多。
1、传统系统架构,耦合性太高,需求变化之后需要大量二次开发。本架构低耦合高内聚,开发升级周期短;
2、传统系统架构无法适应海量数据存储计算。本架构可以满足海量并发计算;
3、传统架构集成难度大,接口适应差。本架构可以适配各种流式/消息队列/文本各类接口。
4、本架构使用最新开源技术,支持分布式部署,保证架构先进性
分布式架构特点
- 系统拆分
- 对于一个复杂系统,首先对其分拆,拆成多个子系统。每个子系统自己的存储/Service/接口层,各个子系统独立开发、测试、部署、运维。 解决性能瓶颈、方便维护升级。
- 分库分表
- 因公司产品数据量巨大,已达到大数据级别,后续对产品进行分库、分表存储。
- 系统模块、组件化
- 系统复杂、构建效率慢,后续对产品模块化、组件化、高内聚,内耦合,提高复用性,扩展性。
- 面向接口开发
- 公司产品多、技术架构不统一、语言(VB、C#、JAVA)不统一,产品系统数据对接、维护困难,后续架构以面向服务方式提供接口,解决各业务组件之间相互交互问题。
二、框架特点
- 采用目前安全性高、扩展性好,框架技术最完善的JAVA语言作为框架开发语言
- 采用springboot+springcloud,使框架具有分层开发、模块开发、接口实现数据的沟通,使系统有极强的扩展性
- 基于模块组件开发,方便平台模块快速组装
- 与OS、中间件、数据库系统无关
- 所使用技术开源免费
- 支持分布式部署、监控
- 支持大数据存储、分析、计算
三、框架设计说明
框架架构图
架构层次说明
客户层
展现层
基于HTML/HTML5/Vue/CSS3开发web前端页面,兼容主流浏览器。展现层和数据层完全分离,通过跨域实现前后端数据通信。
业务层
核心业务基于Spring Cloud 架构实现微服务化。
数据层
对于平台中的所有应用,都存在着各种各样的配置信息、业务数据、系统运行状态等信息。数据库层对这些数据信息本身进行归档,提供快速查询的底层接口,并保证数据的完整性、可靠性。
在数据库方面, 框架可以无缝对接主流关系性数据库的包括 PostgreSQL、Oracle、Mysql 和 MSSql。
基础服务层
用户权限管理
日志服务管理
模型管理
缓存服务管理
任务调度
四、框架技术架构图
技术版本列表
序号 |
前/后/数据库 |
技术 |
版本 |
说明 |
|
前端 |
Jquery |
3.x |
Js工具类 |
|
VUE |
2.5 |
Js工具类 |
|
|
Bootstrap |
4.0.0 |
基于jqueryUI框架 |
|
|
iView |
3.x |
基于vue的UI框架 |
|
|
echarts |
4.x |
图表展示组件 |
|
|
Spreadjs |
v11.2 |
报表展示组件 |
|
|
yFiles |
待定 |
可视化组件 |
|
|
后端 |
JDK |
1.8 |
|
|
SpringBoot |
2.x |
底层框架 |
|
|
SpringCloud |
Dalston.SR5 |
微服务解决方案 |
|
|
Shiro |
1.3 |
安全(授权)框架 |
|
|
Activiti |
6.x |
工作流 |
|
|
Druid |
1.x |
连接池 |
|
|
FastJosn |
1.2x |
Json处理 |
|
|
大数据 |
PostgreSQL |
10.4 |
关系性数据库 |
|
Redis |
4.0 |
内存性数据库 |
|
|
Elasticsearch |
6.2 |
搜索引擎 |
五、技术说明
SpringBoot
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程
特点
1. 创建独立的Spring应用程序
2. 嵌入的Tomcat,无需部署WAR文件
3. 简化Maven配置
4. 自动配置Spring
5. 提供生产就绪型功能,如指标,健康检查和外部配置
6. 绝对没有代码生成和对XML没有要求配置
Spring Boot非常契合微服务的概念,可以结合Spring Boot与Spring Cloud和Docker技术来构建微服务并部署到云端:
一个可执行jar即为一个独立服务
很容易加载到容器,每个服务可以在自己的容器(例如docker)中运行
通过一个脚本就可以实现配置与部署,很适合云端部署,并且自动扩展也更容易
简单而言,即Spring Boot使编码更简单,使配置更简单,使部署更简单,使监控更简单。
SpringCloud
SpringCloud是基于SpringBoot的一套实现微服务的框架。
Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。
SpringCloud 组件架构图
Shiro
Apache Shiro™是一个功能强大且易于使用的Java安全框架,可执行身份验证,授权,加密和会话管理。借助Shiro易于理解的API,您可以快速轻松地保护任何应用程序 - 从最小的移动应用程序到最大的Web和企业应用程序。
Shiro特性
shiro除了基本的认证,授权,会话管理,加密之外,还有许多额外的特性
Shiro架构图:
ElasticSearch
Elasticsearch:是个开源分布式搜索引擎,提供搜集、分析、存储数据三大功能。它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful风格接口,多数据源,自动搜索负载等。