系统架构:系统技术挑战与方案
高并发,大流量-----需要面对高并发用户,大流量访问。
Google 日均PV数35亿,日均IP访问数3亿
微信在线用户数10亿
天猫双十一活动交易额3000亿
=====>高并发高负载互联网架构如何设计?
高可用
系统7X24小时不间断服务 ==>大型互联网站的宕机事件通常会成为新闻焦点。
=====>高可用互联网架构如何设计?
海量数据----需要存储,管理海量数据
Facebook每周上传的照片数目接近10亿
百度收录的网页数目有数百亿
Google有近百万台服务器为全球用户提供服务
======>海量数据存储的互联网架构如何设计?
用户分布广泛,网络情况复杂
许多大型互联网服务全球用户,用户分布范围广,各地网络千差万别。
国内---运营商网络互通难;中美光缆故障---网站依赖较大的国外用户,需要建立海外数据中心
=====>多数据中心的互联网架构如何设计?
安全环境恶劣
互联网的开放性,互联网站容易受到攻击,大型网站每天都会遇到黑客攻击。网站用户密码泄露
保证互联网站的安全性
需求快速变更,发布频繁
互联网产品为快速适应市场,满足用户需求,产品发布频率极高
快速开发出新功能,软件系统如何部署,版本如何管理,模块如何分解
===>系统架构要求===>解决方案:微服务架构
渐进式发展
小网站===(渐进发展)==>大型互联网站
=======>系统架构要如何适应这样的变化过程?系统架构本身如何渐进式发展?
==>单一服务器----百万台服务器集群===>系统架构的挑战。
核心挑战:高并发-----应对高并发挑战的两个技术方向
普通请求:
用户访问系统,提交请求,系统需要对用户请求进行服务处理,为每个用户创建线程或者进程,每个线程或者进程都需要消耗一定的CPU资源,需要占据一定的内存,需要消耗一定的磁盘访问,需要消耗一定的网络带宽空间。
高并发请求:
大量用户同时访问系统,同时提交请求,系统需要同时对用户请求进行服务处理。
高并发用户同时访问系统:几万,几十万,几百万的用户同时访问系统,要想同时服务好这些用户,同时满足高并发的用户请求,系统需要提供足够多的系统资源。
比如: 1M内存空间/用户,100W用户同时访问系统,需要多少内存?
10毫秒CPU处理时间/用户,100W用户需要多少的CPU处理时间?
并发用户数越高,消耗的系统资源就越多。如何提供这些资源?如何构建一个系统?使这些资源有效的整合起来,为用户提供服务。=====>高并发系统挑战。
应对这种挑战,为了增加计算资源,满足高并发的请求,满足高并发情况下各种资源消耗---两种解决方法
垂直伸缩
高并发场景:
并发量增加,更多用户访问系统,计算资源不足时,增强单一服务器的计算能力,提升系统的处理能力。比如:
100并发请求:普通的应用服务器A可以处理100用户的并发请求,
500并发请求:当并发用户增加到500的时候,A服务器计算资源不够用,增强服务器:更快的CPU,可以换更大的内存条,更快的网卡,速度更快的硬盘,提升服务器的处理能力。满足500并发的用户请求。
5000并发请求:A服务器内存插槽已经满了,不能继续增强内存,硬盘已经用了最快的硬盘,CPU已经用了最快的CPU,网卡已经用了最快的网卡===>需要对服务器进行整体升级===>小型服务器(小型机)==>满足5000并发
50000并发请求: 小型服务器资源(CPU内存网络等)不够用==>中型服务器
500000并发请求:中型服务器资源(CPU内存网络等)不够用==>大型服务器
5000000并发请求:大型服务器资源(CPU内存网络等)不够用=> 超级计算机
50000000并发请求:?????
垂直伸缩优点:
通过升级硬件和网络的吞吐能力可以实现垂直伸缩。由于不需要改变应用架构,通常被认为是最简单的短期伸缩性方案。
通过使用RAID(独立的荣誉磁盘阵列)增加I/O吞吐能力。
通过切换到SSD(固态硬盘)改善I/O访问速度。
通过增加内存减少I/O操作
通过升级网络接口或者增加网络接口提高网络吞吐能力
更新服务器使用更多处理器或者更多超线程。
垂直伸缩缺点:
达到某个程度后,增加计算资源能力需要更多的花费。
垂直伸缩有物理极限。
操作系统的设计或者应用程序自身制约着垂直伸缩最多只能达到某个点。
普通应用服务器,成本线性增加,===>小型服务器,成本提高两个数量级===>中型服务器,成本增加更快==>大型服务器,成本急剧上升。
系统核心目的:服务好用户,最终目的:赚钱。而投入计算机成本的速度超过了赚钱的速度,技术即使能解决问题,也不是我们想要的方案。
互联网应用架构中,不会采用垂直伸缩方案来应对高并发。核心原因:垂直伸缩后期成本急剧上升。
水平伸缩
水平伸缩是指通过增加服务器提升计算能力的一类架构方法。
水平伸缩被认为是伸缩性的圣杯,水平伸缩可以克服垂直伸缩带来的单位计算成本随计算能力增加而迅速飙升的问题
水平伸缩总是可以增加更多的服务器,不会像垂直伸缩那样遭遇到单台服务器的极限。
目前互联网架构的主要手段===水平伸缩===(符合渐进式发展)并发用户不断增加时,通过增加服务器,提升系统架构,提升系统的处理能力,来应对业务的发展和用户量的增加。
互联网架构:如何构建集群,集群服务器承担什么样的角色,他们如何共同构建了一个系统,共同对外提供服务,以此来满足高并发的用户请求的压力。分布式技术解决高并发问题的。
互联网各种技术方案,各种分布式技术,最核心讨论的关键点: 如何增加服务器,提升集群的处理能力。
分布式缓存:如何做集群,如何做伸缩;
负载均衡服务器:如何做集群,如何做伸缩;
分布式数据库:如何做集群,如何做伸缩。
分布式技术的关键技术点和关键技术方案。
对于互联网系统而言,对计算能力的要求,几乎是无止境的。====>互联网架构首选水平伸缩:通过增加服务器,更低成本,更快速度提供计算能力。如何将一台服务器加到一个分布式集群里面,构成分布式系统,分布式系统架构如何设计呢?
垂直伸缩:服务器本身提供操作系统,应用程序几乎不需要改动,可以在操作系统上运行,硬件能力越强,服务器能力越大,能够处理用户的请求就越多。
水平伸缩:服务器构建成一个集群,服务器上运行什么样的程序,他们如何互相通信,来构建成一个集群。这就对架构设计,软件开发提出挑战。====>互联网架构师必须学习的一部分知识和内容==>水平伸缩是互联网架构的关键架构方法。
评论