MySQL应用架构优化-实时数据处理

MySQL 数据库优化与定期数据处理策略 通过以上优化策略和定期数据处理方法,可以有效提高 MySQL 的查询效率,并保持主表数据在合理范围内。这将有助于提升应用的性能和用户体验。根据实际情况,您可以调整优化策略和定时任务的频率,以满足特定需求。码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。关注博主。 阅读详情

http://www.ttlsa.com/mysql/mysql-application-architecture-performerce-1/

1.1. 场景

在和开发人员做优化的时候,讨论最多的应该是结合应用场景编写出合适的SQL。并培训开发应该如何编写SQL让MySQL的性能尽量好。但是有一些的场景对于SQL的优化是行不通的。

打个比方,产品有这样的需求:针对每个商品实时显示销售者的销售量,并且按销售量做排序,还要实现 分页。这个需求看上去很简单,实现起来也很容易。无非就是对三张表(seller、goods、orders)进行查询、聚合、排序。但是对于上亿订单量来说,这样查询简直就是一个噩梦。

分析:这边主要是需要按销售量来进行排序,这样的操作在这里就比较可怕。如果没有这个的话,我们的按下面步骤来写SQL,MySQL跑起来就很爽:

  • 按分页需求,先查出销售者的个数(如:100个销售着,去10个)。
  • 通过1取出的销售者到orders中查询订单并GROUP BY。
  • 通过2中的orders中的goods id 取出商品信息。

可惜的是我们不是产品,不能按照我们的意愿来。当然,最好的办法就是说服产品,干掉类似这样的需求。或改变一种方式来实现这中需求,如:不要实时的展示。可是说服产品和顶在头上的人谈何容易啊,也许是关注的东西是不一样的吧。

1.2. 解决方案

首先要说明一些,像这样统计的计算能不实时就不实时。我们应该把OLAP的操作和OLTP的操作尽量解耦。来做。如白天我们关注的是OLTP(就是大家普通在用的应用程序),晚上我们关注的OLAP(Hadoop实现)。

这是我们的奇葩需求需要实时,所以Hadoop都是用不上的了。这时我们就需要用气实时计算的系统。现在业界应该有两个实时计算系统比较流行:Storm、Spark。这边我选用了使用Storm来作为我们的方案。这边选择Storm的原因主要也就是之前接触过,比较熟悉上手比较快。

当然这边我们要需要用到其他的主键:

  • Logstash:主要也就是用来收集日志。这边我们将交易一笔订单记录都会化成json格式输出到日志文件中。之前也考虑过使用Flume,但是Flume没有Logstash来的实时。
  • Kafka:主要是为了接受Logstash传过来的信息,并将它持久化和提供给Storm来使用。说明一下:有些系统会将Kafka放入程序就使用,就是说订单完成时将订单json信息直接发送给Kafka。我们这边多一层Logstash的目的是为了让应用系统和Kafka进行解耦。如果Kafka挂掉或者网络出现问题。不会影响到应用系统的正常运行。
  • Storm:接收Kafka中的信息进行分析计算出想要的数据。
  • MongoDB:主要是为了存储从Storm中分析完的数据。
  • Zookeeper:用来管理Kafka和Storm用的。

在使用这样的架构之前希望大家能理解一下“实时”这个概念:其实无论在什么应用程序中基本没有实时能完成的。只是电脑运行的快,让你误认为是实时的。所以,这边我们还是准实时。

实时理解的图:

mysql

 

1.3. 实时计算架构部署图

mysql

1.4. 架构部署

1.4.1. 环境说明

部署演示使用的是VirtualBox虚拟机,总共启用了5台虚拟机(可以根据自己的机器配置而定,我的配置:i3、12G内存、固态硬盘250G)。

系统应用部署信息

操作系统 IP 部署软件 端口
Centos7.2 10.10.10.11 Logstash  
Kafka 9092
~ 10.10.10.12 MongoDB 27017、27018、27019
~ 10.10.10.21 Zookeeper 2181、3887
Storm  
~ 10.10.10.22 Zookeeper 2181、3887
Storm  
~ 10.10.10.23 Zookeeper 2181、3887
Storm  

这边我就不部署Jetty了,到时候我使用变相的方式来向日志文件中输入json格式数据。

22.4.2. 统一配置

这边5台机子的有统一的hosts文件,并且都需要配置好JDK:

22.4.3. 部署Zookeeper

因为这边我们部署的是Zookeeper集群因此在3台机子上的操作步骤都是一样的:这边我以操作其中一台(10.10.10.21 storm_1)机子为例。

  • 到官网下载软件(zookeeper-3.4.6.tar.gz)
  • 将软件解压到 /usr/local/ 目录下

  • Zookeeper配置文件

如果没有/usr/local/zookeeper-3.4.6/conf/zoo.cfg配置文件则新建一个。

  • 创建相关需要的目录

  • 创建myid文件

下面的命令应该在不同的机器上执行

  • 启动Zookeeper

分表在三台机子上都要执行下面命令

  • 查看Zookeeper状态

  • 客户端链接Zookeeper进行验证

以上就算是部署好了Zookeeper集群了。

22.4.4. 部署Kafka

按照前面规划的我们应该将Kafka部署在(10.10.10.12 normal_12)机子上。

  • 到官网下载Kafka(10-0.9.0.0.tgz)
  • 将Kafka解压到/usr/local目录下,并从命令为kafka

  • 设置Kafka配置文件

 

  • 创建Kafka相关目录

  • 启动Kafka

  • 创建test topic

  • 查看创建的topic

  • 新建一个session,开启Kafka消费者客户端

  • 新建一个session,开启Kafka生产者客户端,并生产一个消息。

在消费者的session中能看到同时也出现了 “this is message 1”这个消息

22.4.5. 部署Logstash

按照前面规划的我们应该将Kafka部署在(10.10.10.12 normal_12)机子上。这边我们使用Logstash监听/tmp/orders.log文件,并且将Kafka作为它的输出。

  • 到官网下载Logstash(logstash-2.3.1.tar.gz)
  • 将Logstash解压到/usr/local/目录下

  • 设置Logstash配置文件

  • 启动Logstash agent

  • 向/tmp/orders.log中输入一个json字符串

再之前启动的Kafka消费者客户端会出现如下消息

22.4.6. 部署MongoDB

这边我们MongoDB部署在(10.10.10.12 normal_12)机子上。并且采用的是复制的形式。

  • 官网下载MongoDB(mongodb-linux-x86_64-rhel70-3.2.5.tgz)
  • 解压MongoDB到/usr/local/目录下

  • 创建MongoDB的相关目录

  • 分别在/u01/mongodb_27017、/u01/mongodb_27018、/u01/mongodb_27019中创建配置文件和启动脚本
  • /u01/mongodb_27017中的配置文件和启动脚本

  • /u01/mongodb_27018中的配置文件和启动脚本

  • /u01/mongodb_27019中的配置文件和启动脚本

  • 启动MongoDB

  • 初始化复制

 

由于篇幅问题《MySQL应用架构优化-实时数据处理(2)》中将将讲述其他环境搭建过程

 

昵称: HH

QQ: 275258836
ttlsa群交流沟通(QQ群②: 6690706 QQ群③: 168085569 QQ群④: 415230207(新) 微信公众号: ttlsacom)


【低延迟数据处理】Flink在实时计算中的架构优化 Flink通过流式计算模型精细化状态管理和自适应资源调度,在实时计算领域构建了技术壁垒。其架构设计不仅满足了低延迟需求,还通过流批融合降低了系统复杂度。未来,随着云原生与AI技术的深度整合,Flink将进一步推动实时数据处理能力的边界,成为企业数字化转型的核心引擎。 阅读详情

相关推荐

大数据领域Hive在实时数据处理中的应用案例

随着信息技术的飞速发展,数据量呈现爆炸式增长,实时数据处理成为了企业获取竞争优势的关键。Hive作为大数据领域中一款重要的数据仓库工具,在批处理方面有着广泛的应用。然而,如何将Hive应用于实时数据处理,是当前大数据领域的一个重要研究方向。本文旨在探讨Hive在实时数据处理中的应用案例,通过实际案例展示Hive在实时数据处理中的可行性和优势,为相关从业者提供参考。本文将按照以下结构进行组织:首先介绍Hive的核心概念和与实时数据处理的联系;然后阐述Hive在实时数据处理中的核心算法原理和具体操作步骤;

软件工程实践的博客 1080

“实时数据同步:构建高效的 MySQL 数据同步方案“

MySQL数据库本身并不支持快照功能(sqlServer支持) 因此快照备份是指通过文件系统支持的快照功能对数据库进行备份 备份的前提是将所有数据库文件放在同一文件分区中,然后对该分区进行快照操作LVM是LINUX系统下对磁盘分区进行管理的一种机制,LVM使用写时复制(copy-on-write)的技术来创建快照——例如,当创建一个快照时,仅复制原始卷中数据的元数据(meta data 注:data block),并不会有数据的物理操作,因此 快照的创建过程是非常快的.

南宫乘风-Linux运维-虚拟化容器-Python编程 ownit.top 2206

Flink实时数据处理实践经验(Flink去重、维表关联、定时器、双流join)

Flink实时数据处理实践经验 文章目录Flink实时数据处理实践经验1. 数据输入与预处理2. 实时数据处理3. 实时数仓架构4. 优化方案 Java、大数据开发学习要点(持续更新中…) 首先需要知道的一些知识: Flink中所说的UDF在官方文档中定义为用户自己通过继承类或实现接口的自定义类、已有方法中传入匿名内部类、在已有函数中用Lambda表达式。 Flink实现结果实时展示(一些简单的分组聚合逻辑)可以直接在流中分组聚合写入Redis/MySQL,而需要在线实时多维分析需要将数据存入Cl

weixin_38836273的博客 6841

Canal简介

简介 Canal:译意为水道/管道/沟渠,主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费 早期阿里巴巴因为杭州和美国双机房部署,存在跨机房同步的业务需求,实现方式主要是基于业务 trigger 获取增量变更。从 2010 年开始,业务逐步尝试数据库日志解析获取增量变更进行同步,由此衍生出了大量的数据库增量订阅和消费业务。 基于日志增量订阅和消费的业务包括 数据库镜像 数据...

qq_41794285的博客 1135

MySQL之优化进阶:ALTER TABLE操作与数据处理技巧

大家好!一直以来,我都希望能和各位技术爱好者在学习的道路上携手共进,共同攻克技术难题。在MySQL的使用过程中,我们会遇到各种各样的性能优化问题,今天咱们就聚焦在ALTER TABLE操作的优化以及一些相关的数据处理技巧上。希望通过这篇文章,能帮助大家更好地理解和处理这些问题,提升MySQL数据库的性能和使用体验。

wj_rdk的博客 1893

大数据处理延迟优化:结构化数据实时分析方案

电商需要实时监控促销活动的用户行为,调整推荐策略;金融需要实时识别异常交易,避免资金损失;物联网需要实时分析传感器数据,预防设备故障。本文聚焦结构化数据(如数据库表、CSV文件等有固定格式的数据)的实时分析场景,覆盖从延迟根源定位到优化方案落地的全流程,帮助技术团队将数据处理延迟从“秒级”压缩到“毫秒级”。用“快递运输”类比,解释大数据处理延迟的三大来源;拆解流处理框架(如Flink)的核心机制,理解“实时”是如何实现的;给出“架构设计+代码优化+资源调优”的组合拳方案;

SuperAGI2025 1004

Mysql数据实时同步实践

关于小米内部使用的数据库你知道多少?(文末有福利)背景MySQL由于自身简单、高效、可靠的特点,成为小米内部使用最广泛的数据库,但是当数据量达到千万/亿级别的时候,M...

小米云技术 2729

Mysql 性能优化之架构优化

Mysql 性能优化之架构优化

从 MySQL 到 ClickHouse 实时数据同步 —— MaterializeMySQL + Materialized View

使用 MaterializeMySQL + Materialized View 方案从 MySQL 到 ClickHouse 实时同步数据

wzy0623的专栏 3216

SAR成像系列:【9】合成孔径雷达(SAR)成像算法-波数域(omega-K)成像算法[也叫距离徙动(RM)算法](附Matlab代码)

合成孔径雷达(SAR)波数域(wK)成像算法也称为距离徙动(RM)算法,它不存在近似条件,可以对整个成像区域基于散射点模型进行精确聚焦。有的文章中称它为SAR成像的最佳实现。

zr2006_7的专栏 1万+

Nginx源码安装和基础配置

Nginx简介 nginx: 世界第二大web服务器软件,以高并发、低消耗著称,源自于俄罗斯,创建者 Igor(伊戈尔),2004年开源,最早以代理服务器的身份出现,2015成立nginx公司,2019年以6.7亿被F5 Networks公司收购。 代理服务器: 正向:squid 反向: squid:最古老的代理服务器 LVS: 优点: 1.抗负载能力强、是工作在网络4层之上仅作分发之用 2.配置性比较低,这是一个缺点也是一个优点,简单不易出错 3.工作稳定,抗负载能力很强,有完整的双机热备方案

hjyhjy0的博客 500

MySQL架构优化及SQL优化

变更项目的整体架构是性能收益最大的方式。主要涉及两方面,一方面是从整个项目角度,引入一些中间件优化整体性能,另一方面是调整MySQL的部署架构,确保能承载更大的流量访问,提高数据层的整体吞吐。

boluomi的博客 1796

Rust Reqwest+Rustls 自签名证书校验

所以这里必须保证reqwest引用的rustls库和本地工程一致。以上就是实现不校验签名的逻辑,后续自己可以在对应回调进行逻辑判断。

bawomingtian123的专栏 1360

Mysql8应用架构

一、Caches & Buffers(缓存和缓冲)

m0_73378442的博客 1814

【AI智能体】飞书 AI 智能客服机器人搭建与使用实战操作详解

飞书 AI 智能客服机器人搭建与使用实战操作详解

congge 6059

服务器搭建原神私服教程

项目的稳定版分支提供了编译好的服务端程序,但是博主觉得还是用dev版本的比较好。dev版本需要自己编译的,不要听到编译这两个字就头大,相反,这个服务端的编译相当简单。把文件中的两个IP地址127.0.0.1修改为你服务器的地址,修改完成后按 esc 输入 :wq。Mongodb作为服务端的数据库使用,我们这里安装最新版的Mongodb5。注意:如果想要使用最新版的服务端,必须安装>=17版本的java。tmux可以保证你关掉控制台的时候,程序依然继续运行。至此,服务端所需要的运行环境全部配置完成。

用最简单的方式说最重要的事!服务器、存储、云计 算、A智能的大数据产品、游戏开发技术。致力于广 大开发者、政企用户、各项机构等,构建云上世界提供全方位云计算解决方案。旨在打造差异化的开放式闭环生态系统帮助用户快速构建稳定、安全的云计算环境。 1万+

MySQL 大数据处理优化与分布式架构探索

MySQL 大数据处理优化与分布式架构是实现高效、稳定数据库服务的重要手段。通过合理的索引设计、查询优化、分区表、外部存储引擎以及数据分片、数据复制和负载均衡等技术手段,可以显著提高 MySQL 数据库的性能和可扩展性。同时,通过遵循最佳实践,如合理设计分片策略、定期监控和优化、保障数据一致性和进行性能测试和容量规划等,可以进一步确保 MySQL 分布式架构的稳定性和可靠性。希望本文能够为读者在 MySQL 大数据处理优化与分布式架构的探索中提供有益的参考和借鉴。

女巫的黑猫的博客 2532

顶刊论文引言用AI怎么写?借助Gemini 3 Pro结合四段式写出逻辑清晰的Introduction

写研究目标时,先明确研究问题,直接回应前文提到的研究缺口,如 “This study aims to investigate whether X modulates Y via the Z pathway in human cells.”然后再提出你的研究假设,当理论依据清晰时,可以用如 “We hypothesized that inhibiting X would rescue Y deficiency in this model.”的句子点出研究目标。要求:1)明确陈述本研究拟解决的核心科学问题;

智能AI让学术科研更容易 181

Flink与MySQL数据连接器实现实时数据处理的配置与优化指南

在CDC连接器的配置中,特别注意server-id的唯一性设置,以及snapshot.mode的配置,可以选择initial模式进行全量快照后增量同步,或者latest-offset模式仅捕获最新变更。Apache Flink作为一个强大的流处理框架,在与MySQL数据库进行实时数据交互时,能够实现高效的数据摄取、转换和输出。在Kubernetes等容器化环境中部署时,注意网络延迟对数据库连接的影响,尽量将Flink作业与MySQL数据库部署在相近的网络环境中,减少网络传输开销。

jianghaidong1203的博客 510

【数据集】1970-2023年全球温室气体排放 GHG 数据集 EDGAR

1970-2023年全球温室气体排放 GHG 数据集 EDGAR

WW、forever的博客 1174

【WRF-Chem 工具】CAMStoWRF详解:CAMS数据下载及处理

【WRF-Chem 工具】CAMStoWRF详解:CAMS数据下载及处理

WW、forever的博客 196

Twitter实时数据处理技术的演进与优化策略

未来,随着人工智能、区块链等新兴技术的发展,Twitter实时数据处理技术有望迎来新的突破,为社交平台的数据处理和应用带来更多的可能性。然而,随着数据量的增大和处理复杂度的提高,保证数据处理的低延迟变得越来越困难,如何在复杂的业务场景下实现快速的数据处理和响应,是Twitter面临的又一挑战。通过数据质量评估指标,及时发现数据质量问题,并采用数据清洗算法和数据修复技术,对噪声数据、缺失数据和错误数据进行处理,提高数据质量。同时,合理规划硬件资源的使用,采用虚拟化技术,实现硬件资源的高效利用和动态分配。

2501_91318733的博客 664

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

实时数据处理中的SQL优化技巧与策略

实时数据处理中,通过运用索引优化、查询语句优化、事务处理优化等技巧,结合缓存策略、数据分区和监控调优等策略,能有效提升SQL性能,满足实时业务对数据处理的严苛要求,助力企业在激烈竞争中把握先机。对频繁查询且结果变化慢的数据,缓存查询结果,后续相同查询直接返回缓存结果,无需重新执行SQL。2. 按业务逻辑分区:根据业务特点分区,如电商订单按地区分区,查询某地区订单时,可快速定位到对应分区数据。1. 查询响应延迟:大量并发查询和持续的数据写入,容易造成查询排队等待,使响应时间变长,影响业务实时性。

kai176567的博客 643

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

使用Impala进行实时数据处理:如何提高吞吐量和实时性?

作者:禅与计算机程序设计艺术 《7. 使用 Impala 进行实时数据处理:如何提高吞吐量和实时性?》 引言 1.1. 背景介绍 随着大数据时代的到来,实时数据处理变得越来越重

AI天才研究院 4163

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

实时数据处理

实时数据处理 Part1.nosql数据库概念 1.1.nosql数据的基本介绍 ​ nosql型数据库,也将其称为 非关系数据库,有区别去于关系型数据库,在非关系型数据库中,不存在表关系,大部分非关系型数据库不支持SQL查询,不支持复杂的查询方案,不支持多行事务部处理,仅支持单行事务处理. 优点:读写性能非常高,常常被用于 缓存操作 适用场景: 高并发的读写 海量数据读写 高可扩展性 速度快 常见的nosql数据库:redis,HBASE,MongoDB… Part2.redis数据库基本介绍 2.

橘生淮南 1621
上一篇: 基于注解的Spring AOP的配置和使用--转载
下一篇: JVM系列三:JVM参数设置、分析
lcathm
博客等级 码龄18年 37粉丝 44原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值