数据中台架构设计

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

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

一、关键功能需求

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
IDEIntelij
MVCSpring MVC
页面FreeMarker、SiteMesh
JSJquery、Jquery UI
容器Spring
持久化MyBatis、JdbcTemplate
服务Hessian、CXF
调度xxlJob
缓存Redis
日志SLF4J、Logback
XMLDom4j、Xstream

1、可控性:在短期时间内,架构师能够精通,开发人员能够掌握。
2、可扩展:考虑非功能性需求,在特定的场景下便于扩展。
3、高可用:选择框架、定制化框架必须要保证质量。
4、高效率:框架本身处理效率高,尽可能减少重复开发工作量,易于做性能调优。
5、低成本:在满足以上原则前提下,学习成本低,有较完善的手册文档。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/52336.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【MySQL数据库管理问答题】第3章 理解 MySQL 体系

目录 1. MySQL 服务器进程 mysqld 由哪三层组成,从各自所实现的功能角度分别加以说明。 2. MySQL 支持的通讯协议都有哪些?其连接方式和所支持的操作系统有何不同。 3. 请说明 SQL 层的组件名称和各自的作用。 4. MySQL 8.0 除了默认的存储引擎 InnoD…

数据库之权限与安全

目录 一、MySQL权限表 1.MySQL权限系统的工作原理 2.权限表 二、账号管理 1.创建账号 2.删除账号 3.root用户修改自身密码 4.root用户修改普通用户密码 5.root用户密码丢失的解决方法 三、MySQL权限管理 1.查看账号权限 2.给账号授权 3.收回权限 一、MySQL权限表 …

[新手入门]1台电脑+1个电视+2个软件(sunshine+moonlight) 解决黑神话悟空没有hdmi线的痛...

sunshinemoonlight 解决黑神话悟空 本地串流投屏 背景:偶然间在B站发现了sunshinemoonlight方案,替代hdmi线,做本地串流...于是心灵手巧的我开始尝试踩坑之路:1.准备安装包2.开始安装2.1 笔记本windows安装sunshine2.2 遇到了第一个坑.Fatal: ViGEmBus is not installed or run…

【ansible】ansible roles

ansible roles 简介 Ansible Roles是一种组织和管理Ansible Playbooks的方法。它们允许将相关的配置和任务分组到一个可重用的单元中,使得代码更加模块化和可维护。 一个Ansible Role包含了一组预定义的变量、任务和文件结构。它可以被其他Playbooks调用和使用&am…

docke进阶---镜像迁移、容器的ip地址、端口映射和持久化

1.镜像的迁移 1.镜像打包 #查看镜像有一个centos的镜像 [rootdocker0 ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 5d0da3dc9764 2 years ago 231MB 3查看帮助文件 docker --help save Save one or more…

【Unity】移动端草海解决方案

草海是开放大世界渲染的必不可少的因素,Unity 原生的 Terrain 草海效率较低,而且无法与 RVT 结合起来,无法在移动端上实现。因此我们自己搓出来一套草海系统,使用 C# 多线程辅助运算,并能支持割草、烧草等进阶玩法。草…

突破编程:深入理解C++中的组合模式

突破编程:深入理解C中的组合模式 在C及众多面向对象编程语言中,设计模式是解决问题的经典方案,它们帮助开发者在面对复杂系统设计时,能够遵循一套经过验证的最佳实践。组合模式(Composite Pattern)是这些设…

数据库内容保密检查系统:及时发现“潜在”安全威胁

日前,国内专注于保密与非密领域的分级保护、等级保护、业务连续性安全和大数据安全产品解决方案与相关技术研究开发的领军企业——国联易安自主研发的国联数据库内容保密检查系统V1.0通过国保局涉密检测,获得涉密信息系统产品检测证书。其主要具备以下主…

JS数据类型——【Map】精讲

JavaScript 中的 Map 是一种用于存储键值对的集合,它与传统的对象(Object)类似,但提供了更丰富的功能和灵活性。以下是 Map 相关的主要知识点: 1. 基础概念 键值对存储:Map 使用键值对的形式存储数据&…

输入名字转换成对象

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>输入名字转换成对象</title> </head>…

力扣算法总结

直接放别人简单易懂的总结&#xff0c;比我自己描述得好 代码随想录 (programmercarl.com) 崔添翼 (Tianyi Cui) 背包问题九讲 2.0 beta1.2 - jggnice! - 博客园 (cnblogs.com) 1.01背包 优化成一维就是利用之前上一维计算出来的数据&#xff0c;在不损害后面还要用的上一维…

在IAR开发环境下将尽可能多的代码重定向到RAM中执行的方法

今天给大家分享的是在IAR开发环境下将尽可能多的代码重定向到RAM中执行的方法。 最近和同事在讨论一个客户案例&#xff0c;客户 APP 工程是基于 IAR 开发环境&#xff0c;客户希望将工程里尽可能多的代码都重定向到 RAM 里执行&#xff0c;仅留必要或者指定的源文件代码在 Fl…

HTML5 浏览器支持

HTML5 浏览器支持 HTML5是最新版本的HTML&#xff0c;它引入了许多新特性&#xff0c;旨在更好地适应丰富的网络内容和服务。然而&#xff0c;由于浏览器的更新和兼容性问题&#xff0c;HTML5的浏览器支持情况可能会有所不同。本文将探讨HTML5的主要特性以及在不同浏览器上的支…

RabbitMQ(面试篇)

目录 MQ是什么 MQ的优点 消息队列有什么缺点 什么是RabbitMQ&#xff1f; rabbitMQ的使用常见 RabbitMQ基本概念 大家一起加油 &#xff01;&#xff01;&#xff01; MQ是什么 MQ是消息队列&#xff0c;是软件和软件之间同行的中间件产品 MQ的优点 异步处理&#xff0c…

【前端基础篇】JavaScript之BOM介绍

文章目录 浏览器对象模型&#xff08;BOM&#xff09;介绍1. 什么是BOM&#xff1f;2. Window 对象2.1 弹出框2.1.1 警告框2.1.2 确认框2.1.3 提示框 2.2 定时事件2.2.1 延时器2.2.2 定时器 2.3 Window 对象其他常用属性与方法2.3.1 获取窗口尺寸2.3.2 打开新窗口与关闭窗口2.3…

【习题】构建更加丰富的页面

判断题 1. Tabs组件可以通过接口传入一个TabsController&#xff0c;该TabsController可以控制Tabs组件进行页签切换。 A、正确(True) B、错误(False) 2. WebviewController提供了变更Web组件显示内容的接口&#xff0c;例如可以使用loadData来加载一个网页链接地址改…

【JS|第25期】探索HTTP POST请求:请求体的演变与应用

日期&#xff1a;2024年8月16日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…

iOS RunLoop

一:什么是Runloop Runloop&#xff0c;正如其名&#xff0c;loop表示某种循环&#xff0c;和run放在一起就表示一直在运行着的循环 二:Runloop的创建? iOS并没有提供Runloop的创建方法,因为创建了现场自然会有一个Runloop. 所以只有获取Runloop的方法: NSRunLoop * runloo…

Leetcode 3267. Count Almost Equal Pairs II

Leetcode 3267. Count Almost Equal Pairs II 1. 解题思路2. 代码实现 题目链接&#xff1a;3267. Count Almost Equal Pairs II 1. 解题思路 这一题同样是题目3265. Count Almost Equal Pairs I的进阶版本。 它主要的区别在于说&#xff1a; 最大的操作次数增加到两次&am…

C# 循环访问目录树详解与示例

文章目录 一、目录树遍历的概念二、使用System.IO命名空间三、DirectoryInfo和FileInfo类四、递归遍历目录树五、示例&#xff1a;列出目录树中的所有文件和文件夹六、异常处理七、迭代方法八、总结 在C#中&#xff0c;访问文件系统是常见的需求之一。有时我们需要遍历目录树以…