博客站的架构渐进升级优化,亿级日写量架构又是什么样呢?

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
简介: 博客站的架构渐进升级优化,亿级日写量架构又是什么样呢?

传统上建设一个博客网站需要:一个反向代理Nginx、一个应用服务、一个数据库MySQL,就能建立起来标准的WEB站。


博客现在每天新增3000多的文章量,速度已经很慢,如果后期我要做一个app数据量肯定更大,到时该怎么保证访问速度


如果每天3000多的文章量就存在慢的问题,就要考虑架构的适量改进了。


传统架构的优化


那么是否增加并均衡负载多个应用服务可以提升并发请求响应速度。同时考虑加入Redis,提升读取性能呢?当然了,这是必经之路!


20210412163403712.png


上图是我们最常用的一种传统架构模式,Nginx作为均衡负载,客户端和Web容器进行无状态的请求和响应,Nginx与Web容器的负载保持IP模式,主要是满足web session。这个过程若产生Web 容器压力,增加服务器即可,但是往往压力并不在此处,而是来自数据库。

因此下一步可以考虑读写分离的设计,一般常用的方式是一写两读。这样就可以减轻一台数据库的读写压力。


20210412163407963.png


我们可以通过上述数据库主从分离的方式来做,这时候要注意数据库查询和更新的改造,可以通过Service层注解拦截的方式减少代码改造量。红色箭头部分是写入主库并进行从库复制,灰色箭头部分是一个WEB容器对应一个从库的方式分解查询压力。


当读的方面依然遇到很大的并发压力时,可以进一步纳入Redis形成查询缓存,进一步提升读的性能。


20210412163411496.png


如上图所示,Redis一方面可以作为Web双容器的Session共享池,这样就实现了分布式环境下Web容器的Session解耦,那么最大的好处就是Nginx代理不用非得Ip hash了,因为绑定ip这种情况容易出现访问倾斜。Redis另一方面可以配合MyBatis类似的数据访问框架,成为读操作的二级缓存。这样就能最大化地提升数据库读的性能。


要是这一步也做了,读的问题基本上就可以水平扩展了。实际上最大的问题还是在数据库写的问题,因为要是这一步你们都遇到了,我相信写入问题肯定也一样会出现瓶颈的,常说祸不单行,福无双至么。


对于MySQL的写入优化其实比读取优化要难得多,往往涉及到对数据的改造,例如常做的分库分表,就是典型的动数据,需要将数据表按照数据增长的一个范围形成一个表,存放在分布式中的一个MySQL数据库中,集中式的路由表协助分布式库表的注册和发现,这样写入过程就必须先从路由表中判断数据库路由地址。其实如果不到万不得已的情况,尽量不要用这种模式,因为这个过程把问题最大复杂化了!至少一开始读写分离就要重新规划,跨表聚合都耦合在了上层应用程序实现。


那么写入优化第一步对MySQL进行分区是必要的,例如:RANGE分区、LIST分区、HASH分区、复合分区,需要注意的是根据业务需要来规划分区,例如文章写入具有明显的日期性,那么基于日期的Range分区就挺不错,但是,往往有热度的文章,互动就很频繁,那么对于文章和互动就应该打上热度标签,将热度分类标签作为LIST分区的切分项,通过复合分区的方式,将有热度的互动数据迁移在热度分区上。


混合架构的优化方案


好了,做了上面这些,要是单库压力还是巨大,那么就不能再单纯考虑关系型RDBMS的存储形式了,需要考虑引入支持K-V的NoSQL支撑写入。


先给一个黑科技吧,就将MySQL master主库引擎InnoDB做替换,尝试使用MyRocks引擎,但是这个需要进行严格的业务兼容性测试。


20210412163414660.png


MyRocks实际上就是RocksDB,RocksDB在对写入性能上有着甩传统数据库几十条街的性能提升(前提是最好上SSD固态存储),可以看看我的另一篇回答创作:为什么分布式数据库这么喜欢用kv store? ,从底层数据结构的逻辑上分析,就能理解为什么K-V存储强悍的写入能力。虽然在范围查找上不如传统的RDBMS,但是读写分离机制恰恰弥补了这一点,但是这个黑科技,最为不确定的就是读写复制的稳定性,这个需要——测试!测试!测试!


好,我们再去推测一下百度、知乎这些大厂在面对每天亿级甚至是几十亿级的数据记录写入怎么办?


这个时候MySQL数据库单库写基本没戏,单机I/O都撑不住,那一定会采取分布式NoSQL+关系型数据库集群的混合方案,也就是K-V存储模型的分布式数据库应对频繁地插入更新操作,但业务的完整性关系,最终落地在关系型数据库集群,复杂密集的业务关系,还是需要关系表来维护比较合适。


百度、知乎这些大户,我推理猜测,他们对于实时性操作较高的业务,例如文章不断地编辑,应该是在分布式的大数据平台上进行KV存储和访问,完成临时性处理,而不着急更新密集的业务关系表,等正式提交后,一定有一个延时的排队过程才会进行RDBMS数据库维护关系表的事务完整性。


20210412163416888.png


上述只是一个推理猜测图,并不一定是精确无误的,仅供参考。


如图我们可以看到引入了大数据平台Hadoop,主要是想利用HBase极高性能的K-V读写,尤其是对文章内容的草稿编辑,基本上属于准实时的操作,如果万人在线在MySQL数据库上这么干,数据库的写入就得崩溃了!那么对于文章可以形成一个文档的K-V关系在HBase的稀疏表上尽情写入,实际上更新也只是内容版本的一次迭代。HBase不用考虑复杂的关系问题,只关注文章内容的编辑问题。


当作者认为完成了写入,就提交文章,进入审核状态,审核过程可以充分利用消息系统,形成文字审核的事件化,对过滤敏感词、涉黄等等都问题进行实时流式处理,由订阅的管道推动给关系型数据库集群,形成完整的数据事务关系,那么就把解决高并发的写入问题转变成了队列推送的大吞吐数据计算问题。之后文章查询就针对关系型数据库集群,形成一套缓存机制、分布式查询体系,就容易得多了!


最后


就说这么多吧,实际上大厂的分布式数据计算比我推理的肯定是要复杂许多许多,我只是站在技术合理性的角度,给大家一个方向性的思考,建立高并发、海量数据的网站,我们应该遵循的一个过程,说到底就是用最小的成本,逐步深化,防止一开始的过渡技术。总之关系型数据库分库分表的模式除非万不得已,一定要慎用!因为一旦用开了,就很难掉头了,系统运维会淹没在数据维护的复杂性问题上。


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
3月前
|
消息中间件 存储 缓存
十万订单每秒热点数据架构优化实践深度解析
【11月更文挑战第20天】随着互联网技术的飞速发展,电子商务平台在高峰时段需要处理海量订单,这对系统的性能、稳定性和扩展性提出了极高的要求。尤其是在“双十一”、“618”等大型促销活动中,每秒需要处理数万甚至数十万笔订单,这对系统的热点数据处理能力构成了严峻挑战。本文将深入探讨如何优化架构以应对每秒十万订单级别的热点数据处理,从历史背景、功能点、业务场景、底层原理以及使用Java模拟示例等多个维度进行剖析。
79 8
|
2月前
|
弹性计算 运维 监控
阿里云云服务诊断工具:合作伙伴架构师的深度洞察与优化建议
作为阿里云的合作伙伴架构师,我深入体验了其云服务诊断工具,该工具通过实时监控与历史趋势分析,自动化检查并提供详细的诊断报告,极大提升了运维效率和系统稳定性,特别在处理ECS实例资源不可用等问题时表现突出。此外,它支持预防性维护,帮助识别潜在问题,减少业务中断。尽管如此,仍建议增强诊断效能、扩大云产品覆盖范围、提供自定义诊断选项、加强教育与培训资源、集成第三方工具,以进一步提升用户体验。
737 243
|
2月前
|
机器学习/深度学习 编解码 人工智能
超越Transformer,全面升级!MIT等华人团队发布通用时序TimeMixer++架构,8项任务全面领先
一支由麻省理工学院、香港科技大学(广州)、浙江大学和格里菲斯大学的华人研究团队,开发了名为TimeMixer++的时间序列分析模型。该模型在8项任务中超越现有技术,通过多尺度时间图像转换、双轴注意力机制和多尺度多分辨率混合等技术,实现了性能的显著提升。论文已发布于arXiv。
205 84
|
5天前
|
SQL 弹性计算 安全
【上云基础系列04】基于标准架构的数据库升级
本文回顾了业务上云从基础到进阶的理念,涵盖基础版和全栈版架构。在“入门级:上云标准弹性架构基础版”的基础上,本文针对数据库升级,重点介绍了高可用数据库架构的升级方案,确保数据安全和业务连续性。最后,附有详细的“上云标准弹性架构”演进说明,帮助用户选择合适的架构方案。
|
1月前
|
存储 数据采集 大数据
AllData数据中台技术架构升级演进
杭州奥零数据科技有限公司成立于2023年,专注于数据中台业务,维护开源项目AllData并提供商业版解决方案。AllData提供数据集成、存储、开发、治理及BI展示等一站式服务,支持AI大模型应用,助力企业高效利用数据价值。
|
2月前
|
机器学习/深度学习 算法 数据可视化
基于深度混合架构的智能量化交易系统研究: 融合SSDA与LSTM自编码器的特征提取与决策优化方法
本文探讨了在量化交易中结合时序特征和静态特征的混合建模方法。通过整合堆叠稀疏降噪自编码器(SSDA)和基于LSTM的自编码器(LSTM-AE),构建了一个能够全面捕捉市场动态特性的交易系统。SSDA通过降噪技术提取股票数据的鲁棒表示,LSTM-AE则专注于捕捉市场的时序依赖关系。系统采用A2C算法进行强化学习,通过多维度的奖励计算机制,实现了在可接受的风险水平下最大化收益的目标。实验结果显示,该系统在不同波动特征的股票上表现出差异化的适应能力,特别是在存在明确市场趋势的情况下,决策准确性较高。
84 5
基于深度混合架构的智能量化交易系统研究: 融合SSDA与LSTM自编码器的特征提取与决策优化方法
|
1月前
|
消息中间件 监控 小程序
电竞陪玩系统架构优化设计,陪玩app如何提升系统稳定性,陪玩小程序平台的测试与监控
电竞陪玩系统架构涵盖前端(React/Vue)、后端(Spring Boot/php)、数据库(MySQL/MongoDB)、实时通信(WebSocket)及其他组件(Redis、RabbitMQ、Nginx)。通过模块化设计、微服务架构和云计算技术优化,提升系统性能与可靠性。同时,加强全面测试、实时监控及故障管理,确保系统稳定运行。
|
1月前
|
存储 弹性计算 架构师
老板点赞!技术人如何用架构优化打赢降本增效战?
大家好,我是小米,一个喜欢分享技术的小架构师。通过亲身经历,我将介绍如何通过架构优化帮助公司降本增效。两年前,我加入一家初创公司,面对成本高企的问题,通过弹性伸缩、微服务化和数据治理等手段,成功降低了40%的技术成本,提升了60%的系统响应速度。希望我的经验能给你启发!关注我的微信公众号“软件求生”,获取更多技术干货。
48 5
|
2月前
|
存储 机器学习/深度学习 人工智能
【AI系统】计算图优化架构
本文介绍了推理引擎转换中的图优化模块,涵盖算子融合、布局转换、算子替换及内存优化等技术,旨在提升模型推理效率。计算图优化技术通过减少计算冗余、提高计算效率和减少内存占用,显著改善模型在资源受限设备上的运行表现。文中详细探讨了离线优化模块面临的挑战及解决方案,包括结构冗余、精度冗余、算法冗余和读写冗余的处理方法。此外,文章还介绍了ONNX Runtime的图优化机制及其在实际应用中的实现,展示了如何通过图优化提高模型推理性能的具体示例。
76 4
【AI系统】计算图优化架构
|
2月前
|
SQL 存储 分布式计算
Paimon助力数据湖仓架构实时化升级
本次分享由阿里云高级技术专家李劲松介绍Paimon助力数据湖仓架构实时化升级。内容涵盖四个部分:1) 数据架构的存储演进,介绍Data LakeHouse结合的优势;2) Paimon实时数据湖,强调其批流一体和高效处理能力;3) 数据湖的实时流式处理,展示Paimon在时效性提升上的应用;4) 数据湖非结构化处理,介绍Paimon对非结构化数据的支持及AI集成。Paimon通过优化存储格式和引入LSM技术,实现了更高效的实时数据处理和查询性能,广泛应用于阿里巴巴内部及各大公司,未来将进一步支持AI相关功能。

热门文章

最新文章