学习
实践
活动
专区
工具
TVP
写文章

大型互联网应用面对的挑战及应对方案和手段

作业一:

一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。

1.大型互联网应用面对的挑战:

性能挑战:高性能(高并发,高负载);

可用性挑战:高可用(7*24);

可靠性挑战:高可靠(数据一致性)

存储挑战:海量数据存储;

网络挑战:网络复杂性;

业务挑战:快速业务发展

规模挑战:小应用发展为大应用

核心挑战:性能挑战,要求高并发

2.高并发方案-垂直伸缩和水平伸缩

高并发,需要更多的计算能力和资源需求。为了提供更多计算能力和资源需求,解决方法有两种技术方向:垂直伸缩和水平伸缩。

2.1垂直伸缩:

不断提升单台服务器的性能,来提供更多的计算能力和资源需求。

方法:1.使用更快的CPU(提供更多处理器和更多超线程);

2.使用更多的内存

3.使用RAID磁盘阵列,增加IO吞吐能力

4.使用更快的SSD固态硬盘,改善IO访问速度。

5.增加网络接口提高网络吞吐能力等

缺点:1.前期性能成本比(性价比)线性上升。升级部分:升级cpu,升级内存,升级磁盘,升级网络

2.中后期:过了某个点后,性能提升,导致计算机成本指数级上升。成本提升,收益降低。

比如:普通服务器-->小型机-->中型机--->大型机--->超级计算机。

评估:适用于短期伸缩性方案,作为过度手段。短暂目的:避免后期成本急剧上升。

2.2水平伸缩:

不断增加同类型服务器。来提供更多的计算能力和资源需求。

目前互联网架构的主要手段:水平伸缩。

水平伸缩的核心要点:不断增加服务器,增加局部需要的计算能力和资源需求,分摊增长的计算能力和资源需求,将当前增长的高并发,转移到增加的服务器上。以此破除局部瓶颈,提升局部的处理能力,进而增强整个系统架构,提升整体系统的处理能力,来应对业务的发展和高并发用户量的增加。

优点:1.可以无限增加服务器,提供更多资源

2.成本可控,增长较少。

3.高并发瓶颈及手段

高并发主要手段:分而治之。 分治主要手段:集群。集群中每台服务器承担一部分计算和资源需求。集群作为整体对外提供服务。当高并发用户量增长时,可以添加服务器到集群中。以分摊增长的计算能力。

高并发增长的不同阶段,互联网应用会遇到不同的瓶颈。破除瓶颈,核心手段:建立集群。解决不同的瓶颈,需建立不同的集群。集群伸缩时,可增加移除服务器。

前提假设:普通应用服务器可应对最高并发为500,数据库系统支持的最高并发为100。 应用,数据,文件部署再同一台服务器。

3.1瓶颈1:数据库瓶颈

高并发用户量增长到500,

问题:1.应用500并发>数据库100并发;

2.应用服务器速度>>数据库速度(数据库数据访问需要扫描磁盘,磁盘是低速设备)。

核心点:访问速度不匹配。数据库服务器低速,满足不了应用服务器高速读写的需求。

解决手段:分布式缓存集群。引入本地缓存和远程缓存。

本地缓存:速度快,但容量小。

远程缓存:组建分布式集群,使用更多的内存,解决本地缓存容量不足的问题。

3.2瓶颈2:应用服务器瓶颈

高并发用户量增长到5000.

问题: 单台应用服务器无法满足5000并发。单台最高500,满足不了5000并发

核心点:单台有并发上限。

解决手段:分布式应用服务器集群+负载均衡。

建立应用服务器集群,5000并发,可分摊到10台服务器,每台分摊500并发。

负载均衡服务器:负责均衡分发请求到10台服务器。

3.3瓶颈3:数据库读写瓶颈

高并发用户量增长到5000.

问题:缓存穿透,部分读请求和全部写请求压力集中再数据库上。

核心点:读写操作争夺数据库服务器资源。

解决方法:读写分离。主从分离。主数据库:承担全部写操作。从库:承担读操作

3.4瓶颈4:数据库写瓶颈

高并发用户量增长到50000.

问题:1.写瓶颈:大量写操作集中在主库,主库只有一个。

2.海量数据:单一数据库服务器,可能存不下一张表。

核心点:主数据CPU和存储资源不够用。

解决方法:分布式数据库集群。分布式数据库,将海量数据分摊在多个数据库服务器存储。

3.5瓶颈5:负载均衡瓶颈

高并发用户量增长到500000(50万}.

问题:单一的负载均衡服务器,面对50W并发,响应速度慢,甚至超时。

核心点:单一负载均衡服务器有性能上限。

解决方法:CDN集群+反向代理集群+负载均衡集群。

CDN集群:网络运营商机房的CDN服务器建立集群,主要缓存静态资源。

拦截并发请求,处理静态资源,直接返回给用户。

反向代理集群:反向代理整个数据中心,对外提供服务,可缓存部分内容。

负载均衡集群:下发请求到应用服务器。

3.6瓶颈6:查询速度瓶颈

高并发用户量增长到500000(50万}.

问题:查询速度慢,特殊场景,关系型数据不适合。

核心点:海量数据,复杂查询,关系性数据库支持不够好。

解决手段:搜索引擎集群+NoSQL集群。

3.7瓶颈7:业务耦合

业务庞杂,面对业务的快速变化,多个业务混合在一起,不能很快适应。

问题:业务快速变化,系统不能很快上线新业务。

核心点:业务应用耦合程度高。

解决方法:业务拆分+消息队列。

业务拆分:按照业务领域,拆分应用。并将不同应用部署到不同的集群上。

消息队列:解除不同应用之间的耦合。

3.8瓶颈8:代码重复开发

业务拆分后,不同业务之间有相同或者相似依赖,每个应用各自开发一套

问题:重复开发,每个应用开发一套代码,开发维护成本高。

核心点:代码重复

解决方法:微服务集群+中台化。

微服务集群:剥离公共服务,构建可重复使用,更小业务单元,部署到独立的微服务集群。

中台化:由多个微服务集群组成中台。

3.9瓶颈9:业务分析

解决方法:大数据。使用大数据分析业务数据,为业务决策,提供有力支持。

  • 发表于:
  • 本文为 InfoQ 中文站特供稿件
  • 首发地址https://www.infoq.cn/article/0a8da052111e09f0c8774d0e6
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

关注

腾讯云开发者公众号
10元无门槛代金券
洞察腾讯核心技术
剖析业界实践案例
腾讯云开发者公众号二维码

扫码关注腾讯云开发者

领取腾讯云代金券