[架构师训练营第 1 期] 第四周命题作业
题目
一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述。
成果
一个典型的大型互联网应用系统使用的技术方案和手段包括:
应用与数据分离:就是将应用服务、文件服务、数据库服务三者部署到不同的服务器上。
主要是为了解决:应用服务与其它服务在同一台服务器上的资源竞争问题。
本地和远程缓存:就是在应用服务器上部署本地缓存,同时部署一台专门的缓存服务器。
主要是为了解决:应用服务在运行过程中重复计算而导致的资源浪费问题。
应用服务器集群:就是将应用服务部署到多台服务器上,同时前置一台负载均衡服务器。
主要是为了解决:单个应用服务在接收高并发流量时系统响应变慢的问题。
数据库读写分离:就是在不同服务器上分别部署主从数据库,写操作向主,读操作向从。
主要是为了解决:读写一体的数据库读写操作竞争时系统响应变慢的问题。
CDN和反向代理:就是使用CDN代理外部静态资源请求,用反向代理内部静态资源请求。
主要是为了解决:静态资源访问与业务操作请求竞争使系统响应慢的问题。
规模越大的互联网应用系统,其静态资源访问流量可以占到总流量的 90% 以上。
这意味着使用 CDN 和反向代理后,只有不到 10% 的流量会抵达应用服务器(集群)。
数据库分布式化:就是将数据库进行分表或分片,再将分表或分片部署到不同的服务器。
主要是为了解决:
单个数据库的表数据量存在上限的问题。
单个数据库处理高并发读写操作使系统响应变慢的问题。
文件系统分布式:就是将文件系统进行分区或分块,再将分区或分块部署到不同的服务器。
主要是为了解决:
单个文件系统存储空间存在上限的问题。
单个文件系统处理高并发读写操作使系统响应慢的问题。
使用 NoSQL 和搜索引擎:就是在系统中部署专门的 NoSQL 服务器和搜索引擎服务器。
主要是为了解决:存储数据量较大时查询能力不足使系统响应变慢的问题。
业务拆分:就是将应用服务中的业务拆分成一个个服务,部署到不同的服务器(集群)。
主要是为了解决:
业务越来越丰富和多样化导致应用系统过于庞杂的问题。
单个业务流量较大时业务资源竞争使系统响应慢的问题。
微服务:就是在业务拆分的基础上,提取出公共的服务,部署到不同的服务器(集群)。
主要是为了解决:业务重复开发导致的成本问题。
版权声明: 本文为 InfoQ 作者【猫切切切切切】的原创文章。
原文链接:【http://xie.infoq.cn/article/2f9b90ce53030d5e91b55df33】。文章转载请联系作者。
评论