架构数据缓存阶段和两个维度拓展阶段——阿里云 MVP乔锐杰

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
简介: 乔锐杰,上海驻云运维总监,江湖人称“乔帮主”。本文是乔帮主在阿里云的直播中分享《阿里云千万级架构的构建——架构的成长演变之路》的第四部分。

乔帮主的直播内容经精炼整理、分以下5篇:
一、分享介绍&架构三原则
二、云架构、架构的原始阶段和基础阶段
三、架构动静分离和分布式阶段
四、架构数据缓存阶段和两个维度拓展阶段
五、架构微服务阶段

直接观看视频

数据缓存阶段:数据库缓存

image.png

当访问压力达到500万PV到1000万PV,虽然负载均衡结合多台 Web服务器,解决了动态请求的性能压力。但是这时候我们发现,数据库出现压力瓶颈,常见的现象就是RDS的连接数增加并且堵塞、CPU100%、IOPS飙升。这个时候我们通过数据库缓存,有效减少数据库访问压力,进一步提升性能。

在这个架构阶段采用的云产品,如左边架构图所示,相比上阶段,主要增加了云memcache或者云Redis。值得注意的是,数据库缓存,需要业务代码改造及支持。哪些热点数据需要缓存,这需要业务方面重点规划。并且云端数据库缓存,已不推荐在ECS中自行搭建Redis、memcache等,我们直接使用对应的云缓存产品即可。这阶段架构有两个技术特点跟大家分享:

一个是缓存五分钟法则:即如果一条记录频繁被访问,就应该考虑放到缓存里。否则的话客户端就按需要直接去访问数据源,而这个临界点就是五分钟。

第二个特点,缓存其实是在数据库层面,对数据库的读写分离中,对读的一定程度解耦。

接着到达架构扩展阶段:垂直扩展。

架构扩展阶段:垂直扩展

image.png

当访问量达到1000万PV到5000万PV,虽然这个时候我们可以看到通过分布式文件系统OSS已经解决了文件存储的性能问题,虽然通过CDN已经解决静态资源访问的性能问题。但是当访问压力再次增加,这个时候 Web服务器和数据库方面依旧是瓶颈。在此我们通过垂直扩展,进一步切分 Web服务器和数据库的压力,解决性能问题。“那何为垂直扩展,按照不同的业务(或者数据库)切分到不同的服务器(或者数据库)之上,这种切分称之为垂直扩展。”如左边架构图所示,在这个架构阶段采用的云产品,相比上阶段,主要增加了数据库层面的读写分离或者对应的切库。

这个阶段主要有三个技术特点:
第一点,业务拆分
在业务层,可以把不同的功能模块拆分到不同的服务器上面进行单独部署。比如,用户模块、订单模块、商品模块等,拆分到不同服务器上面部署。

第二点,读写分离
在数据库层,当结合数据库缓存,数据库压力还是很大的时候。我们通过读写分离的方式,进一步切分及降低数据库的压力。

第三点,分库
结合业务拆分、读写分离,在数据库层,比如我们同样可以把用户模块、订单模块、商品模块等。所涉及的数据库表:用户模块表、订单模块表、商品模块表等,分别存放到不同数据库中,如用户模块库、订单模块库、商品模块库等。然后把不同数据库分别部署到不同服务器中。

此阶段架构有两个注意点:
架构的中后期,业务的瓶颈往往都是集中在数据库层面。因为在业务层,我们通过负载均衡能够快速添加更多服务器进行水平扩容,很方便快速解决业务服务器处理的压力。而数据库怎么来做性能扩展,不是简单加几台服务器就能解决的,这往往涉及到复杂的数据库架构变更。垂直拆分,相对在业务上改动较少,并且数据库性能提升最为高效的一种方式,是我们中大型应用首要采用的架构方案。

接着到达架构分布式+大数据阶段:水平扩展。

架构分布式+大数据阶段:水平扩展

image.png

当访问量达到5000万PV及以上时,当真正达到千万级架构以上访问量的时候,我们可以看到垂直扩展的架构也已经开始“山穷水尽”。比如,读写分离仅解决读的压力,面对高访问量,在数据库“写”的压力上面开始“力不从心”,出现性能瓶颈。另外,分库虽然将压力拆分到不同数据库中。但单表的数据量达到TB级别以上,显然已经达到传统关系型数据库处理的极限。如左边架构图所示,在这个架构阶段采用的云产品,相比垂直扩展阶段,主要增加了DNS轮询解析、非关系型数据库MongoDB、以及表格存储列数据库OTS。

此阶段有四个技术特点:
第一点,增加更多的web应用服务器
当后续压力进一步增大,在负载均衡后面增加更多的web应用服务器进行水平扩展。

第二点,增加更多的SLB
单台SLB也存在单点故障的风险,及SLB也存在性能极限,如七层SLB的QPS最大值为50000。我们可以通过DNS轮询,将请求轮询转发至不同可用区的SLB上面,实现SLB水平扩展。

第三点,采用分布式缓存
虽然阿里云memcache内存数据库已经是分布式结构,保障了存储在缓存中的数据高可用。但是使用缓存的业务场景是比较多的,我们不可能仅仅只是部署一个缓存服务,那么业务之间的使用可能存在相互影响。所以我们用多个云缓存,可以在代码层通过hash算法将数据分别缓存至不同的云缓存中,或者不同的业务场景直接连接使用不同的云缓存,来提高我们业务的健壮性。

第四点,Sharding分片和NoSQL
面对高并发、大数据的需求,传统的关系型数据库已不再适合,需要采用非关系型数据库NoSQL了。MongoDB和OTS作为NoSQL的典型代表,支持数据分片Sharding技术,根本上解决了关系型数据库面对高并发高存储量的痛点问题。

此阶段架构注意点:
大型应用中,海量业务数据的存储、分析给我们数据库提出巨大挑战。而传统关系型数据库明显已经力不从心,分布式数据库NoSQL是适用技术发展的未来趋势。有了海量业务数据的基础,我们可以结合云端MaxCompute大数据分析服务,来辅助业务进行价值创造。

虽然到达架构分布式+大数据阶段,基本上能满足绝大多数千万级架构的业务需求。但同时带来新的挑战:
image.png

第一个挑战,分布式架构下,在业务层面的扩展,业务后期迭代、维护管理、敏捷开发等问题。所以借助前面的“云对技术架构变革”的这个图我们再次来看看。其实最后到达了容器体系下,微服务架构阶段解决了分布式架构带来的业务层面扩展性问题。微服务是业务功能层面的一种切分,切分成一个单个小型的独立业务功能的微服务。多个微服务通过API Gateway提供统一服务入口,让微服务对前台透明,而每个微服务也可以通过分布式架构进行部署,这给我们研发灵活性、业务后期迭代带来了极大的扩展性,这是我们未来软件技术架构的主流。并且微服务,在云平台基础上结合Docker容器技术进行部署。能让业务、运维、架构在技术和非技术方面的稳定性、成本、效率、扩展等都能达到完美。

第二个挑战,Big Data所带来的离线计算问题。Big Data强调数据量,PB级以上,是静态数据。并且强调离线计算,结算结果并不是实时的,需要等到离线任务执行完毕才能汇总结果。随着企业数据需求不断变化,近年来对数据采集的实时性、对数据在线计算的实时性要求日益明显。现如今,基于Big Data海量数据的基础上 ,已经在逐步过渡到大数据实时计算分析的Fast Data时代了。Fast Data在数据量的基础上,意味着速度和变化,意味着客户可以更加实时化、更加快速地进行数据处理。

最终演变成为当前最热门的微服务、容器、Fast Data架构。
下一篇:架构微服务阶段

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
1月前
|
消息中间件 存储 缓存
十万订单每秒热点数据架构优化实践深度解析
【11月更文挑战第20天】随着互联网技术的飞速发展,电子商务平台在高峰时段需要处理海量订单,这对系统的性能、稳定性和扩展性提出了极高的要求。尤其是在“双十一”、“618”等大型促销活动中,每秒需要处理数万甚至数十万笔订单,这对系统的热点数据处理能力构成了严峻挑战。本文将深入探讨如何优化架构以应对每秒十万订单级别的热点数据处理,从历史背景、功能点、业务场景、底层原理以及使用Java模拟示例等多个维度进行剖析。
55 8
|
1月前
|
前端开发 测试技术 数据处理
Kotlin教程笔记 - MVP与MVVM架构设计的对比
Kotlin教程笔记 - MVP与MVVM架构设计的对比
52 4
|
1月前
|
存储 分布式计算 数据挖掘
数据架构 ODPS 是什么?
数据架构 ODPS 是什么?
343 7
|
1月前
|
数据采集 搜索推荐 数据管理
数据架构 CDP 是什么?
数据架构 CDP 是什么?
57 2
|
13天前
|
弹性计算 运维 监控
阿里云云服务诊断工具:合作伙伴架构师的深度洞察与优化建议
作为阿里云的合作伙伴架构师,我深入体验了其云服务诊断工具,该工具通过实时监控与历史趋势分析,自动化检查并提供详细的诊断报告,极大提升了运维效率和系统稳定性,特别在处理ECS实例资源不可用等问题时表现突出。此外,它支持预防性维护,帮助识别潜在问题,减少业务中断。尽管如此,仍建议增强诊断效能、扩大云产品覆盖范围、提供自定义诊断选项、加强教育与培训资源、集成第三方工具,以进一步提升用户体验。
662 243
|
27天前
|
SQL 数据可视化 数据库
多维度解析低代码:从技术架构到插件生态
本文深入解析低代码平台,涵盖技术架构、插件生态及应用价值。通过图形化界面和模块化设计,低代码平台降低开发门槛,提升效率,支持企业快速响应市场变化。重点分析开源低代码平台的优势,如透明架构、兼容性与扩展性、可定制化开发等,探讨其在数据处理、功能模块、插件生态等方面的技术特点,以及未来发展趋势。
|
1月前
|
人工智能 云计算 网络架构
阿里云引领智算集群网络架构的新一轮变革
11月8日~10日在江苏张家港召开的CCF ChinaNet(即中国网络大会)上,众多院士、教授和业界技术领袖齐聚一堂,畅谈网络未来的发展方向,聚焦智算集群网络的创新变革。
阿里云引领智算集群网络架构的新一轮变革
|
26天前
|
SQL 数据可视化 数据库
多维度解析低代码:从技术架构到插件生态
本文深入解析低代码平台,从技术架构到插件生态,探讨其在企业数字化转型中的作用。低代码平台通过图形化界面和模块化设计降低开发门槛,加速应用开发与部署,提高市场响应速度。文章重点分析开源低代码平台的优势,如透明架构、兼容性与扩展性、可定制化开发等,并详细介绍了核心技术架构、数据处理与功能模块、插件生态及数据可视化等方面,展示了低代码平台如何支持企业在数字化转型中实现更高灵活性和创新。
49 1
|
9天前
|
弹性计算 Cloud Native Serverless
阿里云 SAE 邀您参加 Serverless 高可用架构挑战赛,赢取精美礼品
阿里云 SAE 邀您参加 Serverless 高可用架构挑战赛,赢取精美礼品。
|
1月前
|
缓存 NoSQL PHP
Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出
本文深入探讨了Redis作为PHP缓存解决方案的优势、实现方式及注意事项。Redis凭借其高性能、丰富的数据结构、数据持久化和分布式支持等特点,在提升应用响应速度和处理能力方面表现突出。文章还介绍了Redis在页面缓存、数据缓存和会话缓存等应用场景中的使用,并强调了缓存数据一致性、过期时间设置、容量控制和安全问题的重要性。
43 5