数据中台架构设计

由于当前项目需要对接多个不同的数据源,同时涉及到多端处理,而且需要考虑海量数据处理,还有总部与分部架构部署问题,因而整体技术栈倾向于大数据和分表分库式处理数据层接入问题。

简单讲,项目分为数据中台业务中台两个子系统,其中数据中台主要对接不同数据源,提供数据聚合,统一的数据报表。业务中台分为基础服务和业务服务,基础服务主要是提供统一网关,统一权限,日志,定时任务等服务。

一、关键功能需求

1、实时查询统计结果(妙级返回亿级海量数据查询)

2、支持离线数据按日生成统计报告,查询的时候直接查询生成好的报告,按5分钟或者其他固定时间片生成报告。

3、支持后续的系统架构扩展,支持dubbo框架和容器化技术。

4、支持总部和分部的数据对接。

5、支持自动化运维技术。

二、关键性能需求

1、接口s级返回查询结果。

2、遵循CAP原理。

3、支持TB级别消息和海量数据存入kafka

三、架构图参数

主要数据采集使用到技术栈为:Hive/Hbase/Hadoop+Flink(Spark Streaming/Struct Streaming),其中数据层分为两块,一块是数据采集层,一块是数据服务层。数据采集层需要对接多个不同的数据源。

1、来自总部的数据源。

2、来自于plc硬件采集的数据源。

3、来自于各个不同业务子系统接口。

数据采集层架构图参考

总部数据源对接: 总部和数据层主要通过消息队列kafka传递数据,也可以访问总部的接口,或者总部的消息队列,或者总部调用我们的接口数据,其中采用redis作为缓存,kafka作为内部消息队列,Flink/Spark stream/Struct Streaming数据解析kafka消息队列入库到hbasekafka高性能高可靠性目前是业内的一种主流技术用来解决不同系统之间的耦合问题。

plc对接服务: 这一块主要是通过netty服务来接收处理plc的上传数据,然后把数据写入到消息队列,通过flink实时解析,提供实时服务接口,并且通过分表分库插件写入关系数据库,kafka消息队列,redis作为缓存。

子系统对接服务: 通过统一restful风格接口对接不同的数据源,落盘到大数据系统和关系数据库,kafka作为消息队列,redis作为缓存。

统一基础服务层: 基于spring cloud技术栈,同时支持子系统未来改造服务系统。

业务层: 前段展示和业务报表等

四、关键质量需求

1、满足海量数据处理秒级返回。

2、超期数据能够妥善处理。

3、架构保持稳定性和伸缩性。

安全性:

1、防止基本SQL注入和XSS,CSRF漏洞。

2、密文传输。

3、使用https和白名单。

五、开发架构

类型 可选技术
主机 PC Server、IBM/HP小型机
操作系统 Cendos7
应用服务器 Spring Boot
Web服务器 Nginx
负载均衡 slob/Feign
消息中间件 kafka
数据库 Hbase Mysql
版本管理 SVN
组件管理 Maven
IDE Intelij
MVC Spring MVC
页面 FreeMarker、SiteMesh
JS Jquery、Jquery UI
容器 Spring
持久化 MyBatis、JdbcTemplate
服务 Hessian、CXF
调度 xxlJob
缓存 Redis
日志 SLF4J、Logback
XML Dom4j、Xstream

1、可控性:在短期时间内,架构师能够精通,开发人员能够掌握。

2、可扩展:考虑非功能性需求,在特定的场景下便于扩展。

3、高可用:选择框架、定制化框架必须要保证质量。

4、高效率:框架本身处理效率高,尽可能减少重复开发工作量,易于做性能调优。

5、低成本:在满足以上原则前提下,学习成本低,有较完善的手册文档。

相关推荐
李小白668 分钟前
Spring MVC(上)
java·spring·mvc
GoodStudyAndDayDayUp21 分钟前
IDEA能够从mapper跳转到xml的插件
xml·java·intellij-idea
独行soc26 分钟前
#渗透测试#漏洞挖掘#红蓝攻防#护网#sql注入介绍08-基于时间延迟的SQL注入(Time-Based SQL Injection)
数据库·sql·安全·渗透测试·漏洞挖掘
fantasy_arch33 分钟前
CPU性能优化-磁盘空间和解析时间
网络·性能优化
White_Mountain1 小时前
在Ubuntu中配置mysql,并允许外部访问数据库
数据库·mysql·ubuntu
Code apprenticeship1 小时前
怎么利用Redis实现延时队列?
数据库·redis·缓存
百度智能云技术站1 小时前
广告投放系统成本降低 70%+,基于 Redis 容量型数据库 PegaDB 的方案设计和业务实践
数据库·redis·oracle
装不满的克莱因瓶1 小时前
【Redis经典面试题六】Redis的持久化机制是怎样的?
java·数据库·redis·持久化·aof·rdb
n北斗1 小时前
常用类晨考day15
java
骇客野人1 小时前
【JAVA】JAVA接口公共返回体ResponseData封装
java·开发语言