【总结盘点类】2024,一场关于海量数据治理以及合理建模的系列写作

目录

1.今年的创作路线

2.先说第一条线

2.1.由日志引出的海量文本数据存储和分析问题

2.2.监控以及监控的可视化

2.3.数据量级再往上走牵扯出了大数据

2.4.由大数据牵扯出的JAVA线程高级内容

3.第二条线,也是2025要继续的主线


1.今年的创作路线

今年的写作内容并不是碎片化的想到什么写什么,而是有起承转合关系的。为了方便大家阅读先抛出总结,总共两条线:

1.由海量日志存储引出ES、mongoDB、监控、可视化,大数据内容,在大数据里引出了JAVA线程相关内容。

2.用了小半年把上面那一套大数据的内容写完,然后转头决定写一个系列,如何用面向对象的思维来规范软件的开发周期,力求做到做出能很方便应对需求变动的代码。也就是从需求建模、UI设计、对象设计,到最后的编码,一套可靠的DDD落地打法。

2.先说第一条线

2.1.由日志引出的海量文本数据存储和分析问题

在23年的最后一篇文章里,我聊了一下分布式链路追踪技术:

分布式链路追踪技术其实就是基于日志来完成的,这个时候就引出了日志的存储问题,日志的存储问题其实就是一个海量文本型数据的存储问题,于是在24年开头,就引出了关于ES的系列文章:

一说到ES就不得不提另一个有名的文本数据库——MongoDB,于是写完ES的系列,马上就写了MongDB,顺势对比了一下二者各自的特点和各自的适用场景:

在对比的文章里我比对了各自的特点得出:

聊完日志的存储问题后,我们找到了合适的方法来存储日志,那么自然就会想到日志的分析问题,数据我们存储好了,需要进行数据的可视化,我决定用docker来搭建测试环境,于是先写了一下docker的快速使用手册,然后选择es的配套组件ELK全家桶来实现日志的可视化:

使用logstath对日志进行清洗,用kibana自带的快速配置的数据大屏来实现日志数据的可视化。

到这里日志的从存储到二次开发,可视化就完成了,但是既然都聊到日志的可视化了,自然就要聊一下其它的可视化。除了日志信息是需要采集的,业务系统的一些指标也是需要进行收集和进行可视化的,也就是监控问题。

2.2.监控以及监控的可视化

监控问题自然要从JAVA EE的标准,最原始的监控系统JMX开始聊,于是我从JMX到spring actutaor,结再到Prometheus聊了一下监控的问题,以及如何结合grafana快速搭建监控的数据大屏:

日志和监控加上可视化其实就完成了一个完善的业务系统运行情况的监测,能搭建出这样一套基本上能第一时间定位到线上生产问题。

2.3.数据量级再往上走牵扯出了大数据

一开始是为了存储海量日志数据牵扯出前面的内容,前面的内容确实能扛住很大的数据量,完成大量数据的存储和分析,但是如果数据量级再往上走,该怎么办喃?说的直白一点,ES和MongeDB能抗住的数据量级在几个GB到几TB之间,再大的话,其数据的操作就有点吃力了。既然一开始想的是海量数据的存储和分析问题,那么就再往上走直接推演到极限,数据量起步就是TB级别,这时候就要引入大数据技术了。

数据的使用无非要解决存储和计算两个问题,大数据无非就是要用合理的架构来解决海量数据的存储和计算问题。

大数据最核心的概念是Google的三驾马车:

GFS、bigtable、mapreduce。

这三驾马车就是大数据存储和计算的基础理念,可以说一切大数据技术都是基于三驾马车的思想演变出来的。于是我先去理了一下三驾马车的论文以及其经典的一些衍生。

首先是海量数据的存储问题——GFS:

GFS提出了大数据存储的核心打法:

1.将数据分块来将数据切小,从而使得数据可以被分布式的进行存储。

2.分布式存储后,利用一个目录来记录同一个数据分出来的块儿被存在哪些服务器上。

3.将数据复制成多分副本,以应对切块后数据可能存在的丢失问题。

4.在读写上做出一些约束,充分拉高数据的读写。

聊完GFS当然应该就要聊到Hadoop,Hadoop中的核心组件,分布式文件系统——HDFS,其实就是基于GFS的核心打法来实现的。

聊完分布式文件系统就要考虑数据操作的易用性,也就是用GFS作为底座,在上面封装出一个数据库出来便于用类SQL的方式对数据进行便捷的操作,于是写了分部式数据库bigtable以及基于其打法落地的经典分布式数据库——HBase:

聊完数据的存储和查询,自然就要聊数据的计算了,也就是大数据里的另一个核心——计算引擎。计算引擎的技术底座是Google三驾马车的其中一架——MapReduce。其核心思想就是:任务去找数据将任务分发到数据所在地,就地计算,然后将结果汇总。后面的诸如Spark之类的计算引擎也是对mapreduce的优化,但其核心都是计算和汇总两步:

2.4.由大数据牵扯出的JAVA线程高级内容

大数据并不会直接牵扯出多线程的问题,只是聊到大数据的计算引擎就不得不聊流计算引擎。mapreduce、spark之类的都叫做批处理引擎,其核心理念是:

任务去找数据。

适合的场景是数据已经存在了,在数据上进行计算,但是有些时候数据是实时产生的,并不是已经提前准备好了,这种数据叫流数据,这类数据产生的量大,但不会被存储,只需要一个计算结果,流计算引擎用来处理流数据,核心理念是:

数据去找任务。

因为流数据里面是数据去找任务,数据量很大也就意味着任务是要并发被执行的,要有极为高效的调度和编排才行,这就需要对JAVA线程的编排很熟悉才行,于是引入了JAVA线程的各种高级编排和并发编程的内容:


聊完JAVA并发的高级内容后,我们进正式进入了流计算的内容,在这部分里面我们可以看到对JAVA线程编排的极致性能追求,我们会对JAVA的多线程有更高更深的认识:

3.第二条线,也是2025要继续的主线

终于聊到最后一条线了。在2024年博主完成了上面第一条线的内容后,开始回过头来进行另一个维度的思考。前面第一条线是在组件和技术上面追求技术选型的合适和性能的极致。上面是在追求深,接下来是追求广了。在软件中,除了合适的技术选项,还有一方面是值得我们注意的就是:

合理的工作流程。

在实际的开发过程中变化是永恒的,需求经常变动,有没有一种落地打法可以尽量的轻松一点去应对变化,而不至于狼狈?其实是有的:

利用真正的面向对象的方法进行真正合适的建模。

其实软件的本质是对现实世界的虚拟仿真,我们在建立逻辑关系的时候只要合理其实后期的改动影响就是局部的,如何进行这种逻辑关系的建立?这需要一套完整的打法,涉及:

1.从需求建模开始就要采用合适的描述方式描述好系统

2.基于需求建模建立出合理的领域模型,即概念间的关系

3.画出合理的原型

4.基于领域建模和原型设计好对象关系

于是博主开始进行DDD落地打法的探讨,已经创作一部分,2025年会继续深耕该系列:

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot整合ES及简单API使用

1、pom文件导入ES依赖 <dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level-client</artifactId><version>7.4.2</version> </dependency>2、编写配置&#xff0c;给容器中注…

Ardupilot开源无人机之Geek SDK进展2024-2025

Ardupilot开源无人机之Geek SDK进展2024-2025 1. 源由2. 状态3. TODO3.1 【进行中】跟踪目标框3.2 【暂停】onnxruntime版本3.3 【完成】CUDA 11.8版本3.4 【完成】pytorch v2.5.1版本3.5 【未开始】Inference性能3.6 【未开始】特定目标集Training 4. Extra-Work4.1 【完成】C…

计算机网络 (54)系统安全:防火墙与入侵检测

前言 计算机网络系统安全是确保网络通信和数据不受未经授权访问、泄露、破坏或篡改的关键。防火墙和入侵检测系统&#xff08;IDS&#xff09;是维护网络系统安全的两大核心组件。 一、防火墙 定义与功能 防火墙是一种用来加强网络之间访问控制的特殊网络互联设备&#xff0c;它…

大模型GUI系列论文阅读 DAY1:《基于大型语言模型的图形用户界面智能体:综述》(6.6W 字长文)

摘要 图形用户界面&#xff08;Graphical User Interfaces, GUIs&#xff09;长期以来一直是人机交互的核心&#xff0c;为用户提供了直观且以视觉为驱动的方式来访问和操作数字系统。传统上&#xff0c;GUI交互的自动化依赖于基于脚本或规则的方法&#xff0c;这些方法在固定…

12位磁编码器AS5600磁式转动位置传感器

AS5600 12位磁式转动位置传感器 描述主要优点和特点应用方框图引脚分配引脚描述工作条件详细说明IC 电源管理IC 接口支持的模式寄存器描述阶跃响应和过滤器设置方向&#xff08;顺时针与逆时针&#xff09;磁滞现象磁体检测低功耗模式看门狗定时器 应用信息 描述 智能非接触式电…

微服务知识——4大主流微服务架构方案

文章目录 1、微服务聚合模式2、微服务共享模式3、微服务代理模式4、微服务异步消息模式 微服务是大型架构的必经之路&#xff0c;也是大厂重点考察对象&#xff0c;下面我就重点详解4大主流微服务架构方案。 1、微服务聚合模式 微服务聚合设计模式&#xff0c;解决了如何从多个…

在视频汇聚平台EasyNVR平台中使用RTSP拉流的具体步骤

之前有用户反馈&#xff0c;在EasyNVR平台中添加Pull时使用海康设备的RTSP流地址无法播放。经过研发的优化及一系列严谨的验证流程&#xff0c;我们已确认优化后的EasyNVR平台&#xff0c;通过Pull方式添加海康设备的RTSP流已经能够正常播放。以下是具体的操作步骤&#xff1a;…

【重庆市乡镇界】面图层shp格式arcgis数据乡镇名称和编码wgs84坐标无偏移内容测评

标题中的“最新重庆市乡镇界面图层shp格式arcgis数据乡镇名称和编码wgs84坐标无偏移最新”指的是一个地理信息系统&#xff08;GIS&#xff09;的数据集&#xff0c;特别设计用于ArcGIS软件。这个数据集包含了重庆市所有乡镇的边界信息&#xff0c;以Shapefile&#xff08;.shp…

Linux系统 C/C++编程基础——使用make工具和Makefile实现自动编译

ℹ️大家好&#xff0c;我是练小杰&#xff0c;今天周二了&#xff0c;距离除夕只有&#xff16;天了&#xff0c;新的一年就快到了&#x1f606; 本文是有关Linux C/C编程的make和Makefile实现自动编译相关知识点&#xff0c;后续会不断添加相关内容 ~~ 回顾:【Emacs编辑器、G…

系统思考—转型

我们大多数问题的来源是&#xff1a;人们的思考方式与大自然的运作方式之间的差异。——葛雷果利贝特森&#xff08;人类学家、生物学家及系统思考先驱&#xff09; 在企业转型的过程中&#xff0c;许多企业创始人常常面临一个困境——过去的成功经验和旧有的思维方式&#xf…

【Linux系统】—— 编译器 gcc/g++ 的使用

【Linux系统】—— 编译器 gcc/g 的使用 1 用 gcc 直接编译2 翻译环境2.1 预处理&#xff08;进行宏替换&#xff09;2.2 编译&#xff08;生成汇编&#xff09;2.3 汇编&#xff08;生成机器可识别代码&#xff09;2.4 链接2.5 记忆小技巧2.6 编译方式2.7 几个问题2.7.1 如何理…

LARGE LANGUAGE MODELS ARE HUMAN-LEVEL PROMPT ENGINEERS

题目 大型语言模型是人类级别的提示工程师 论文地址&#xff1a;https://arxiv.org/abs/2211.01910 项目地址&#xff1a;https://github.com/keirp/automatic_prompt_engineer 摘要 通过对自然语言指令进行调节&#xff0c;大语言模型 (LLM) 显示了作为通用计算机的令人印象深…

计算机的错误计算(二百一十八)

摘要 大模型能确定 sin(2.6^100) 的符号吗&#xff1f;实验表明&#xff0c;大模型给的结论是正确的&#xff0c;但其证明过程是错误百出。大模型的推理实在是不敢恭维。 就同样题目&#xff0c;测试一下另外一个大模型。 例1. 能确定 sin(2.6^100) 的符号吗&#xff1f; 下…

51c~SLAM~合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/12327374 #GSLAM 自动驾驶相关~~~ 一个通用的SLAM架构和基准 GSLAM&#xff1a;A General SLAM Framework and Benchmark 开源代码&#xff1a;https://github.com/zdzhaoyong/GSLAM SLAM技术最近取得了许多成功&am…

【2024年终总结】我与CSDN的一年

&#x1f449;作者主页&#xff1a;心疼你的一切 &#x1f449;作者简介&#xff1a;大家好,我是心疼你的一切。Unity3D领域新星创作者&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6; &#x1f449;记得点赞 &#x1f44d; 收藏 ⭐爱你们&#xff0c;么么哒 文章目录 …

Day 14 卡玛笔记

这是基于代码随想录的每日打卡 226. 翻转二叉树 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,7,2,9,6,3,1]示例 2&#xff1a; 输入&#xff1a;r…

51c大模型~合集105

我自己的原文哦~ https://blog.51cto.com/whaosoft/13101924 #刚刚&#xff0c;ChatGPT开始有了执行力&#xff01; 现在 AI 智能体可以 24*7 小时为你打工。 2025 刚过去了半个月&#xff0c;OpenAI 在智能体领域「开大」了。 今天&#xff0c;OpenAI 正在为 ChatGPT 推出…

《Effective Java》学习笔记——第2部分 对象通用方法最佳实践

文章目录 第2部分 所有对象通用方法一、前言二、最佳实践内容1. equals()方法2. hashCode()方法3. toString() 方法4. clone() 方法5. finalize() 方法6. compareTo()方法&#xff08;实现 Comparable 接口&#xff09; 三、小结 第2部分 所有对象通用方法 一、前言 《Effect…

国家统计局湖北调查总队副总队长张小青一行调研珈和科技农业遥感调查智能化算法

1月15日上午&#xff0c;国家统计局湖北调查总队党组成员、副总队长张小青一行莅临珈和科技开展调研。调研期间&#xff0c;张小青一行实地了解了珈和科技在自动化作物分布提取技术领域的最新成果&#xff0c;深入探讨了作物自动化处理模型在农业调查上应用的创新价值及优化方向…

2025-1-21 Newstar CTF web week1 wp

文章目录 week1headach3会赢吗智械危机 week1 headach3 根据提示&#xff0c;在页面的请求头里找到flag flag{You_Ar3_R3Ally_A_9ooD_d0ctor} 会赢吗 打开控制台&#xff0c;拿到第一部分flag 将地址栏改为提示&#xff0c;去到下一关 控制台调用函数&#xff0c;得到flag …