【技术总结类】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年会继续深耕该系列:

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

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

相关文章

用于牙科的多任务视频增强

Multi-task Video Enhancement for Dental Interventions 2022 miccai Abstract 微型照相机牢牢地固定在牙科手机上,这样牙医就可以持续地监测保守牙科手术的进展情况。但视频辅助牙科干预中的视频增强减轻了低光、噪音、模糊和相机握手等降低视觉舒适度的问题。…

Hnu电子电路实验2

目录 【说明】 与本次实验相关的代码及报告等文件见以下链接: 一、实验目的 二、实验内容 三:实验原理 1.指令译码器 2.AU 算术单元 四:实验过程 1.指令译码器 A)创建工程(选择的芯片为 familyCyclone II&am…

C语言之图像文件的属性

🌟 嗨,我是LucianaiB! 🌍 总有人间一两风,填我十万八千梦。 🚀 路漫漫其修远兮,吾将上下而求索。 图像文件属性提取系统设计与实现 目录 设计题目设计内容系统分析总体设计详细设计程序实现…

AI 新动态:技术突破与应用拓展

目录 一.大语言模型的持续进化 二.AI 在医疗领域的深度应用 疾病诊断 药物研发 三.AI 与自动驾驶的新进展 四.AI 助力环境保护 应对气候变化 能源管理 后记 在当下科技迅猛发展的时代,人工智能(AI)无疑是最具影响力的领域之一。AI 技…

ElasticSearch DSL查询之排序和分页

一、排序功能 1. 默认排序 在 Elasticsearch 中,默认情况下,查询结果是根据 相关度 评分(score)进行排序的。我们之前已经了解过,相关度评分是通过 Elasticsearch 根据查询条件与文档内容的匹配程度自动计算得出的。…

【NLP基础】Word2Vec 中 CBOW 指什么?

【NLP基础】Word2Vec 中 CBOW 指什么? 重要性:★★ CBOW 模型是根据上下文预测目标词的神经网络(“目标词”是指中间的单词,它周围的单词是“上下文”)。通过训练这个 CBOW 模型,使其能尽可能地进行正确的…

资料03:【TODOS案例】微信小程序开发bilibili

样式 抽象数据类型 页面数据绑定 事件传参

vim文本编辑器

vim命令的使用: [rootxxx ~]# touch aa.txt #首先创建一个文件 [rootxxx ~]# vim aa.txt #vim进入文件aa.txt进行编辑 vim是vi的升级版,具有以下三种基本模式: 输入模式(编辑模式) 点击i进入编辑模式 (说明…

(undone) 并行计算学习 (Day2: 什么是 “伪共享” ?)

伪共享是什么? TODO: 这里补点文档!!!!!! 缓存一致性、同步的代价!!! 也就是,当不同线程所访问的内存元素恰好在同一个 cache line 上时&#xf…

基于python的博客系统设计与实现

摘要:目前,对于信息的获取是十分的重要,我们要做到的不是裹足不前,而是应该主动获取和共享给所有人。博客系统就能够实现信息获取与分享的功能,博主在发表文章后,互联网上的其他用户便可以看到,…

使用插件SlideVerify实现滑块验证

作者gitee地址:https://gitee.com/monoplasty/vue-monoplasty-slide-verify 使用步骤: 1、安装插件 npm install --save vue-monoplasty-slide-verify 2、在main.js中进行配置 import SlideVerify from vue-monoplasty-slide-verify; Vue.use(SlideV…

【深度学习项目】语义分割-FCN网络(原理、网络架构、基于Pytorch实现FCN网络)

文章目录 介绍深度学习语义分割的关键特点主要架构和技术数据集和评价指标总结 FCN网络FCN 的特点FCN 的工作原理FCN 的变体和发展FCN 的网络结构FCN 的实现(基于Pytorch)1. 环境配置2. 文件结构3. 预训练权重下载地址4. 数据集,本例程使用的…

2024年博客之星主题创作|从零到一:我的技术成长与创作之路

2024年博客之星主题创作|从零到一:我的技术成长与创作之路 个人简介个人主页个人成就热门专栏 历程回顾初来CSDN:怀揣憧憬,开启创作之旅成长之路:从平凡到榜一的蜕变持续分享:打卡基地与成长复盘四年历程&a…

【整体介绍】

ODO:汽车总行驶里程 Chime: 例如安全带没系的报警声音 多屏交互就是中控屏的信息会同步到主驾驶的仪表盘上 面试问题:蓝牙电话协议HFP 音乐协议A2DP 三方通话测试的逻辑

PyTorch使用教程(13)-一文搞定模型的可视化和训练过程监控

一、简介 在现代深度学习的研究和开发中,模型的可视化和监控是不可或缺的一部分。PyTorch,作为一个流行的深度学习框架,通过其丰富的生态系统提供了多种工具来满足这一需求。其中,torch.utils.tensorboard 是一个强大的接口&…

2025寒假备战蓝桥杯01---朴素二分查找的学习

文章目录 1.暴力方法的引入2.暴力解法的思考 与改进3.朴素二分查找的引入4.朴素二分查找的流程5.朴素二分查找的细节6.朴素二分查找的题目 1.暴力方法的引入 对于下面的这个有序的数据元素的组合,我们的暴力解法就是挨个进行遍历操作,一直找到和我们的这…

Qt按钮美化教程

前言 Qt按钮美化主要有三种方式:QSS、属性和自绘 QSS 字体大小 font-size: 18px;文字颜色 color: white;背景颜色 background-color: rgb(10,88,163); 按钮边框 border: 2px solid rgb(114,188,51);文字对齐 text-align: left;左侧内边距 padding-left: 10…

ESP32下FreeRTOS实时操作系统使用

ESP32下FreeRTOS实时操作系统使用 文章目录 ESP32下FreeRTOS实时操作系统使用一、概述二、为什么要使用实时操作系统RTOS?三、FreeRTOS任务3.1 什么是 FreeRTOS 任务?3.2 FreeRTOS 任务的特点3.3 FreeRTOS 任务的生命周期3.4 FreeRTOS 任务的状态3.5 Fre…

包文件分析器 Webpack Bundle Analyzer

webpack-bundle-analyzer 是一个非常有用的工具,用于可视化和分析 Webpack 打包生成的文件。这使得开发者能够更好地理解应用的依赖关系、包的大小,以及优化打包的机会。以下是关于 webpack-bundle-analyzer 的详细介绍,包括它的安装、使用以…

BEVFusion论文阅读

1. 简介 融合激光雷达和相机的信息已经变成了3D目标检测的一个标准,当前的方法依赖于激光雷达传感器的点云作为查询,以利用图像空间的特征。然而,人们发现,这种基本假设使得当前的融合框架无法在发生 LiDAR 故障时做出任何预测&a…