Week 04- 作业一:一个典型的大型互联网应用系统使用了哪些技术方案和手段
下图是一个典型的大型互联网应用系统架构:
在此架构中,分别使用了如下的技术方案:
前端架构:
CDN
反向代理
不同地区的用户访问网站时,速度差别也极大。有研究表明,网站访问延迟和用户流失率正相关,网站访问越慢,用户越容易失去耐心而离开。为了提供更好的用户体验,留住用户,网站需要加速网站访问速度。
使用CDN和反向代理的目的都是尽早返回数据给用户,一方面加快用户访问速度,另一方面也减轻后端服务器的负载压力。
网关及应用层架构:
负载均衡
应用服务器集群
使用应用服务器集群是解决高并发的常用手段,当一台应用服务器的处理能力不足时,不要企图更换配置更高的服务器,对于大型网站而言,不管多么强大的服务器,都满足不了持续增长的业务需求,在这种情况下,更好的做法是增加一台应用服务器去分担原来服务器的压力。因为这样使得系统的可扩展和可伸缩性更好。负载均衡器的作用就是将请求根据指定的算法,相对平均的分配到不同的集群服务器上,减少单个服务器压力,提高用户操作响应。
使用负载均衡和应用服务器集群,主要是解决应用服务器这一层的高并发问题。
服务层架构:
消息队列
分布式缓存
分布式服务
使用消息队列、缓存,缓解了数据库读的压力,在一定程度上提升了网站的性能,特别是消息队列,将用户操作由原来的同步等待,转变为异步等待,提高了网站的吞吐。
分布式服务,也就是功能服务化,就是把每个应用都需要执行的业务操作,比如员工信息和客户信息,提供出来,然后独立部署和维护,由这些可复用的业务连接数据库,提供共用业务服务(api接口),而应用系统只需要管理用户界面,通过远程服务调用完成具体业务操作。服务化解决了业务拆分后的代码复用问题和数据库连接问题。至于跨库的事务问题,可以使用“分布式一致性锁服务”来解决,具体方案可以参考“二阶段提交协议”或者“TCC”思路。
存储架构 & 后台架构
分布式文件
分布式关系数据库
NoSQL数据库
搜索引擎
数据库经过读写分离后,从一台服务器拆分成两台服务器,但是随着网站业务的发展依然不能满足需求,这时需要使用分布式数据库。文件系统也是一样,需要使用分布式文件系统。
分布式数据库是网站数据库拆分的最后手段,只有在单表数据规模非常庞大的时候才使用。不到不得已时,网站更常用的数据库拆分手段是业务分库,将不同业务的数据库部署在不同的物理服务器上。
随着网站业务越来越复杂,对数据存储和检索的需求也越来越复杂,网站需要采用一些非关系型数据库技术(即NoSQL)和非数据库查询技术如搜索引擎。NoSQL数据库可以使用MongoDb,搜索引擎可以使用ElasticSearch。同时可以配合“数据仓库”和“大数据平台”为用户提供多纬度的数据分析。
可以看到,整体的架构已经非常复杂了,为了保障系统的平稳运行,还要注意系统的“运维与安全”,
主要包括数据采集与展示、数据监控与报警、攻击与防护、数据加密与解密。
综上可见,一个典型的大型互联网应用系统使用的技术方案和手段都是为了保证系统的高并发,高可用,高性能,其中高并发是诱因,高可用和高性能是结果。
为了能够应对高并发,采用了垂直分层、分布式、缓存、异步、安全架构模式
为了满足高可用,采用了水平分割、集群、冗余、自动化,安全架构模式
以上的方案中,处处要考虑高性能,找到平衡点。
版权声明: 本文为 InfoQ 作者【dean】的原创文章。
原文链接:【http://xie.infoq.cn/article/6a33abda18729033eed3b6869】。文章转载请联系作者。
评论