数据中台架构设计

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

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

一、关键功能需求

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、低成本:在满足以上原则前提下,学习成本低,有较完善的手册文档。

相关推荐
u01330870927 分钟前
大模型训练数据库Common Crawl
数据库·语言模型
星空下夜猫子37 分钟前
JAVA 使用POI实现单元格行合并生成
java·开发语言
杨浦老苏37 分钟前
跨平台数据库管理软件SQLynx
数据库·docker·群晖
Flying_Fish_roe38 分钟前
Java中NoSQL 与分布式数据库
java·数据库·nosql
草木·君1 小时前
【SQL】百题计划:SQL排序Order by的使用。
数据库·sql
Renascence.4091 小时前
力扣--649.Dota2参议院
java·数据结构·算法·leetcode
山脚ice1 小时前
【Hot100】LeetCode—62. 不同路径
算法·leetcode·职场和发展
VaporGas1 小时前
掌握Java封装:以猜拳小游戏为例,深入理解OOP
java·开发语言·学习·面向对象编程·oop·猜拳游戏·封装思想
小小工匠2 小时前
加密与安全_ sm-crypto 国密算法sm2、sm3和sm4的Java库
java·算法·安全·sm2·sm3·sm4
好奇的菜鸟2 小时前
GORM安全-保护你的应用免受SQL注入攻击
数据库·sql·安全