热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

1分钟抗住10亿请求!某些App是怎么做到的?|原力计划

作者|阿凡博客出品|CSDN博客封图|视觉中国某些App怎么扛住1分钟10亿请求?架构的演进路线百万级并发:1秒100万次请求。千万级并发:


作者 | 阿凡博客

出品 | CSDN博客

封图 | 视觉中国

某些App怎么扛住1分钟10亿请求?

架构的演进路线

百万级并发:1秒100万次请求。

千万级并发:一分钟6亿次请求,差不多就是需求的极限。

架构的设计和架构优化要符合需求本身,不能无限制优化。

基本概念

(1)分布式(系统中,多个模块在不同服务器上部署)

(2)集群(一个软件部署在多台服务器,并作为一个整体,提供一类服务)

(3)高可用(系统中部分节点失效,其他节点能够接替它继续工作或有相应的处理预案)

(4)负载均衡(把请求均匀的发到多个节点上)

架构演进:

单机架构

DNS服务器,做域名解析的服务器,作用是,经过DNS将www.taobao.com这类的域名转换为实际IP地址,浏览器转而访问这个IP对应的tomcat。

瓶颈:用户增长,tomcat和数据库之间竞争资源,单机性能不足以支撑业务。

第一次:Tomcat和数据库分开部署(最常见架构)

Tomcat和数据库分别独占服务器资源,显著提高两者各自性能(tomcat服务器找一个内存大的,DB服务器找一个硬盘大的,带宽更宽的)。

瓶颈:用户量增长,数据库并发读写,尤其是读,成为瓶颈。

注意,不会通过数据库集群解决。

第二次演进:引入本地缓存甚至分布式缓存

在Tomcat服务器上(Java程序所在的地方)加入缓存,可以把绝大多数请求(尤其是查询)在访问数据库前拦截掉。

Redis放在Tomcat服务器上,如果不够用。

那么Redis可以自己放在一个服务器,也可以多弄几台Redis服务器,配置成主从同步(提升可用性可以加上哨兵)。

瓶颈:用户数量增长,并发压力主要在单机的tomcat上,响应逐渐变慢。

第三次演进:引入反向代理和负载均衡

使用反向代理,将大量的用户请求,均匀分发到每个Tomcat中(一般来讲,Tomcat对应100个并发,nginx对应5万个并发,具体的要看服务器性能)。

瓶颈:应用服务器可支持的并发量大大增加,缓存能力也可以轻易扩展,并发量增长意味着更多请求穿透到数据库,单机的数据库最终成为瓶颈。

第四次演进:数据库读写分离

把数据库划分为读库和写库,读库可以有多个,通过同步机制把写库的数据同步到读库,使用数据库中间件(Mycat),通过它来组织数据库的分离读写。

瓶颈:业务逐渐变多,不同业务之间的访问量差距较大,不同业务直接竞争数据库,相互影响性能。

第五次演进:数据库按业务分库

把不同的业务数据保存到不同的数据库中,业务之间的资源竞争降低,访问量大的业务可以部署更多的服务器。

瓶颈:用户数量增长,单机的写库会逐渐达到性能瓶颈。

第六次演进:把数据库的大表拆成小表

其他环节同上。

比如针对订单生成,可以按照月份,甚至小时创建表。

这种做法可以称作分布式数据库,但逻辑上仍然是一个完整的数据库整体,现在有一种架构叫MPP(大规模并行处理),针对于各种这类问题的使用场景。

瓶颈:数据库和tomcat都可以大规模水平扩展,最终单机的nginx会成为瓶颈。

第七次演进:使用LVS让多个Nginx负载均衡

LVS是软件,运行在操作系统内核态,可以对TCP请求或高层网络协议进行转发,分发的性能远高于Nginx,大概十几万。

F5是硬件,跟LVS做的事情类似,但性能更高,而且价格昂贵。

这种方式,用户可达千万或上亿级别。

瓶颈:LVS达到瓶颈,或用户分布在不同的地区,与服务器机房的距离不同,导致访问延迟的不同。

第八次演进:DNS轮询实现机房间的负载均衡

在DNS中配置一个域名对应多个IP。

每个IP地址对应到不同的机房里的虚拟IP。

做到机房级别的水平扩展,已经是从请求并发量来讲,过亿的处理方案,十几亿或几十亿的并发,暂时没人考虑。

瓶颈:检索,分析的需求越来越多,单靠数据库无法解决各种各样的需求。

第九次演进:引入NoSQL数据库和搜索引擎

数据量多到一定规模的时候,关系型数据库不再适用,而且数据量较大的查询,MySQL不一定能运行出结果,对于海量数据的处理,通过分布式文件系统HDFS来存储,对于key-value类型的数据,通过HBase、Redis等处理,对于抓取查询,可以通过ES等解决,对于多维分析,通过kylin、Druid等解决。

引入更多的组件同时必然极大的提高系统复杂度,不同的组件的数据还需要同步,需要考虑一致性问题。

第十次演进:大应用拆为小应用

结构图中上下不变:

按照业务板块来划分应用,使单个应用的职责更清晰,相互之间可以做到独立升级迭代,甚至可以做到部分功能关闭。

瓶颈:不同应用之间,存在公用的模块,导致包含公共功能的部分在升级时,全部相关代码都要跟着升级。

第十一次演进,抽离成微服务

类似于我们现在写的SpringCloud的项目结构,尤其是当用户,支付等功能在多个应用中都存在,抽离出来效率更高

现在想实现这种效果,可以用现成的框架。

再往下演进,ESB服务总线做接口管理,容器化技术实现运行环境隔离,云平台承载大型系统

云平台中的几个概念:

IaaS:基础设施即服务,可申请硬件资源的层面。

PaaS:平台即服务,提供云平台常用的技术组件的开发和维护。

SaaS:软件即服务,开发好一个应用,部署之后,按照功能或要求付费。

总结

(1)架构调整是否必须按照上面的路线演变?

不一定!!!上面讲的是电商方向,已有的演化线路。

(2)对于即将实施的系统,架构要设计到什么程度?

够用就行,问清楚什么叫够用,设计要满足下一阶段用户量和性能指标的要求。

(3)微服务和大数据架构?

这俩架构,解决的是同一个系统中,不同环节的问题。

不用比好坏,也不用分开处理。

版权声明:本文为CSDN博主「阿凡博客」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:

https://blog.csdn.net/qq_43107323/article/details/104919132

【END】

热 文 推 荐

☞软件欺诈的骗局揭露:“替罪羊”究竟是如何构建的?

☞遗留代码写的烂,我能怎么办?

☞Python 爬取疫情期间全球股市走向,笑不出来......

☞无代码时代来临,程序员如何保住饭碗?

☞从零开始构建:使用CNN和TensorFlow进行人脸特征检测

☞另一种声音:容器是不是未来?

☞探索比特币独特时间链、挖矿费用及场外交易的概念

你点的每个“在看”,我都认真当成了喜欢



推荐阅读
  • 目录结构如下:Nginx基础知识NginxHTTP服务器的特色及优点Nginx的主要企业功能Nginx作为web服务器的主要应用场景包括:Nginx的安装安装环境 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 2016-2017学年《网络安全实战》第三次作业
    2016-2017学年《网络安全实战》第三次作业总结了教材中关于网络信息收集技术的内容。本章主要探讨了网络踩点、网络扫描和网络查点三个关键步骤。其中,网络踩点旨在通过公开渠道收集目标信息,为后续的安全测试奠定基础,而不涉及实际的入侵行为。 ... [详细]
  • 负载均衡基础概念与技术解析
    随着互联网应用的不断扩展,用户流量激增,业务复杂度显著提升,单一服务器已难以应对日益增长的负载需求。负载均衡技术应运而生,通过将请求合理分配到多个服务器,有效提高系统的可用性和响应速度。本文将深入探讨负载均衡的基本概念和技术原理,分析其在现代互联网架构中的重要性及应用场景。 ... [详细]
  • 黄聪:MySQL主从复制配置,实现高效读写分离
    大型网站为应对高并发访问,不仅需要在前端实现分布式负载均衡,还需在数据业务和访问层采取有效措施。采用传统的数据结构已无法满足需求,通过配置MySQL主从复制,可实现高效的读写分离,显著提升系统性能和稳定性。 ... [详细]
  • java大数据量调优(超赞值得收藏)
    从总体上来看,对于大型网站,比如门户网站,在面对大量用户访问、高并发请求方面,基本的解决方案集中在这样几个环节: ... [详细]
  • LVS实现负载均衡的原理LVS负载均衡负载均衡集群是LoadBalance集群。是一种将网络上的访问流量分布于各个节点,以降低服务器压力,更好的向客户端 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 基于JSP和SSM框架的超市收银系统毕业设计论文及源代码分析
    本研究基于JSP和SSM框架开发了一套超市收银系统,旨在提升超市收银效率和管理便捷性。系统运行环境包括JDK 1.8、Tomcat 7.0、MySQL数据库以及HBuilderX(也可使用WebStorm)作为前端开发工具,后端开发则采用Eclipse(IntelliJ IDEA亦可)。该系统实现了商品管理、订单处理、库存管理和报表生成等核心功能,具有良好的稳定性和扩展性。通过详细的设计与实现过程,本文为相关领域的研究提供了有价值的参考。 ... [详细]
  • 2021年Java开发实战:当前时间戳转换方法详解与实用网址推荐
    在当前的就业市场中,金九银十过后,金三银四也即将到来。本文将分享一些实用的面试技巧和题目,特别是针对正在寻找新工作机会的Java开发者。作者在准备字节跳动的面试过程中积累了丰富的经验,并成功获得了Offer。文中详细介绍了如何将当前时间戳进行转换的方法,并推荐了一些实用的在线资源,帮助读者更好地应对技术面试。 ... [详细]
  • Amoeba 通过优化 MySQL 的读写分离功能显著提升了数据库性能。作为一款基于 MySQL 协议的代理工具,Amoeba 能够高效地处理应用程序的请求,并根据预设的规则将 SQL 请求智能地分配到不同的数据库实例,从而实现负载均衡和高可用性。该方案不仅提高了系统的并发处理能力,还有效减少了主数据库的负担,确保了数据的一致性和可靠性。 ... [详细]
  • HBase在金融大数据迁移中的应用与挑战
    随着最后一台设备的下线,标志着超过10PB的HBase数据迁移项目顺利完成。目前,新的集群已在新机房稳定运行超过两个月,监控数据显示,新集群的查询响应时间显著降低,系统稳定性大幅提升。此外,数据消费的波动也变得更加平滑,整体性能得到了显著优化。 ... [详细]
  • HDFS是什么?HDFS全称HadoopDistributedFileSystem,简称HDFS,是一个分布式文件系统。它是谷歌的GFS提出之后出现的另外一种文件系统。它有一定高 ... [详细]
  • Hadoop的分布式架构改进与应用
    nsitionalENhttp:www.w3.orgTRxhtml1DTDxhtml1-transitional.dtd ... [详细]
author-avatar
tina1314520hqg_552
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有