没有合适的资源?快使用搜索试试~ 我知道了~
21丨分布式架构:如何应对高并发的用户请求.pdf
需积分: 0 0 下载量 49 浏览量
2023-07-05
18:44:17
上传
评论
收藏 2.72MB PDF 举报
温馨提示
试读
11页
21丨分布式架构:如何应对高并发的用户请求.pdf
资源推荐
资源详情
资源评论
21丨分布式架构:如何应对高并发的用户请求
2020-01-10 李智慧
后端技术面试38讲
进入课程
讲述:李智慧
时长 11:22 大小 9.12M
互联网应用以及云计算的普及,使得架构设计和软件技术的关注点从如何实现复杂的业务逻
辑,转变为如何满足大量用户的高并发访问请求。
一个简单的计算处理过程,如果一旦面对大量的用户访问,整个技术挑战就会变得完全不
同,软件开发方法、技术团队组织、软件的过程管理都会完全不同。
以新浪微博为例,新浪微博最开始只有两个工程师,一个前端,一个后端,两个人开发了一
个星期就把新浪微博开发出来了。现在许多年过去了,新浪微博的技术团队有上千人,这些
人要应对的技术挑战,一方面来自于更多更复杂的功能,一方面来自于随着用户量的增加而
带来的高并发访问压力。
下载APP
这种挑战和压力几乎对所有的大型互联网系统都是一样的,淘宝、百度、微信等,虽然功能
各不相同,但都会面对同样的高并发用户的访问请求压力。要知道,同样的功能,供几个人
使用和供几亿人使用,技术架构是完全不同的。
当同时访问系统的用户不断增加的时候,需要消耗的系统计算资源也不断增加,需要更多的
CPU 和内存去处理用户的计算请求,需要更多的网络带宽去传输用户的数据,需要更多的
磁盘空间去存储用户的数据。当消耗的资源超过了服务器资源的极限的时候,服务器就会崩
溃,整个系统无法正常使用。
那么如何解决高并发的用户请求带来的问题?
垂直伸缩与水平伸缩
为了应对高并发用户访问带来的系统资源消耗,一种解决办法是垂直伸缩。所谓的垂直伸缩
就是提升单台服务器的处理能力,比如用更快频率的 CPU,用更多核的 CPU,用更大的内
存,用更快的网卡,用更多的磁盘组成一台服务器,使单台服务器的处理能力得到提升。通
过这种手段提升系统的处理能力。
在大型互联网出现之前,传统的行业,比如银行、电信这些企业的软件系统,主要是使用垂
直伸缩这种手段实现系统能力的提升,在服务器上增强,提升服务器的硬件水平。当业务增
长,用户增多,服务器计算能力无法满足要求的时候,就会用更强大的计算机,比如更换更
快的 CPU 和网卡、更大的内存和磁盘,从服务器升级到小型机,从小型机提升到中型机,
从中型机提升到大型机,服务器越来越强大,处理能力越来越强大,当然价格也越来越昂
贵,运维越来越复杂。
垂直伸缩带来的价格成本和服务器的处理能力并不一定呈线性关系,也就是说,增加同样的
费用,并不能得到同样的计算能力。而且计算能力越强大,需要花费的钱就越多。
同时,受计算机硬件科技水平的制约,单台服务器的计算能力并不能无限增加,而互联网,
特别是物联网的计算要求几乎是无限的。
因此,在互联网以及物联网领域,并不使用垂直伸缩这种方案,而是使用水平伸缩。
所谓的水平伸缩,指的是不去提升单机的处理能力,不使用更昂贵更快更厉害的硬件,而是
使用更多的服务器,将这些服务器构成一个分布式集群,通过这个集群,对外统一提供服
务,以此来提高系统整体的处理能力。
但是要想让更多的服务器构成一个整体,就需要在架构上进行设计,让这些服务器成为整体
系统的一个部分,将这些服务器有效地组织起来,统一提升系统的处理能力。这就是互联网
应用和云计算中普遍采用的分布式架构方案。
互联网分布式架构演化
分布式架构是互联网企业在业务快速发展过程中,逐渐发展起来的一种技术架构,包括了一
系列的分布式技术方案:分布式缓存、负载均衡、反向代理与 CDN、分布式消息队列、分
布式数据库、NoSQL 数据库、分布式文件、搜索引擎、微服务等等,还有将这些分布式技
术整合起来的分布式架构方案。
这些分布式技术和架构方案是互联网应用随着用户的不断增长,为了满足高并发用户访问不
断增长的计算和存储需求,逐渐演化出来的。可以说,几乎所有这些技术都是由应用需求直
接驱动产生的。
下面我们通过一个典型的互联网应用的发展历史,来看互联网系统是如何一步一步逐渐演化
出各种分布式技术,并构成一个复杂庞大的分布式系统的。
在最早的时候,系统因为用户量比较少,可能只有几个用户,比如刚才提到的微博。一个应
用访问自己服务器上的数据库,访问自己服务器的文件系统,构成了一个单机系统,这个系
统就可以满足少量用户使用了。
剩余10页未读,继续阅读
资源评论
Java码库
- 粉丝: 1651
- 资源: 3925
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 5.23-Java概述,JDK安装及注释、关键字、标识符、数据类型、变量、常量的介绍
- 《Python基础》实验三指导书(1).doc
- TensorFlow 深度学习、机器学习-任何能够用计算流图形来表达的计算,都可以使用TensorFlow
- 一个基于springboot+sureness的面向REST API资源无状态认证权限管理系统
- 王博外文文献.pdf
- python毕业设计基于社区检测的多任务聚类联邦学习项目源码+使用说明(高分项目).zip
- Javaweb项目源码-编程爱好者博客地带.zip
- java各个技术栈相关知识点
- PYthon代码 pdf合并
- 内容涵盖:Java、MyBatis、ZooKeeper、Dubbo、Elasticsearch、Memcached、 Redis
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功