大型网站的特点
大型网站架构技术
大型网站架构技术-架构模式
大型网站架构技术-高性能架构
以用户为中心,提供快速的访问体验。主要体现在:响应快、并发能力高和性能稳定。
大型网站架构技术-高可用架构
大型网站在任何时候都应该可以正常访问,但是因为大型网站的复杂性,要保证高可用是很困难的。
行业内一般用几个9表示可用性指标,比如99.99%
即不可用时间:0.01%*365*24*60=52.56分钟/年
大型系统架构演进过程-应用程序、数据库都部署在同一台服务器上
大型网站(如天猫、京东等)的系统架构并不是一开始设计时就具备完整的高性能、高可用、高伸缩等特性的,它是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计思想也发生了很大的变化,所以成熟的系统架构是随着业务的扩展而逐步完善的。
大型系统架构演进过程-应用程序数据库分离
随着业务的扩展,一台服务器已经不能满足性能需求,故将应用程序、数据库各自部署在独立的服务器上,并且根据服务器的用途配置不同的硬件,达到最佳的性能效果。
大型系统架构演进过程-利用缓存改善网站性能
在硬件优化性能的同时,同时也通过软件进行性能优化,在大部分的网站系统中,都会利用缓存技术改善系统的性能,使用缓存主要源于热点数据的存在,大部分网站访问都遵循28原则(即80%的访问请求,最终落在20%的数据上),所以我们可以对热点数据进行缓存,减少数据库查询次数,提高用户体验。
分布式缓存的特点是,可以缓存海量的数据,并且扩展非常容易
大型系统架构演进过程-使用集群改善应用服务器性能
应用服务器作为网站的入口,会承担大量的请求,我们往往通过应用服务器集群来分担请求数。应用服务器前面部署负载均衡服务器调度用户请求,根据分发策略将请求分发到多个应用服务器节点。
大型系统架构演进过程-使用分布式文件系统
随着用户增加,业务量越来越大,产生的文件越来越多,文件相关操作的IO瓶颈开始出现,这时就需要分布式文件系统的支撑。
常用的分布式文件系统有HDFS、TFS、GFS、MINIO等
大型系统架构演进过程-使用NoSQL和搜索引擎
对于海量数据的查询和分析,我们使用NoSQL数据库加上搜索引擎可以达到更好的性能。
并不是所有的数据都要放在关系型数据中
常用的NoSQL有MongoDB、HBase、Redis,搜索引擎有Lucene、Solr、Elasticsearch。
大型系统架构演进过程-将应用服务器进行业务拆分
随着业务进一步扩展,应用程序变得非常臃肿,这时我们需要将应用程序进行业务拆分。
每个业务应用负责相对独立的业务运作。业务之间通过远程调用来实现。
大型系统架构演进过程-消息队列
由于系统用户量极大,在做抢购,秒杀的活动的时候,可能参与的人很多,服务器可能承受不了那么高的并发。
消息队列其实就是一个队列结构的中间件,也就是说把消息和内容放入到一个容器后,就可以直接的返回了,
不理会等它后期处理的结果,容器里的内容会有另一个程序按照顺序进行逐个的去处理。
消息队列的主要作用:解耦、削峰、异步
评估系统的承载能力-系统评估
推荐教程:后端进阶关键-大型分布式架构设计