标签:soft 传统 分数 一个 两台 企业 复用 大量 黑客攻击
相比传统企业应用系统,大型互联网应用系统有以下特点:
那么大型网站是如何做到高可用、高性能、易扩展、可伸缩且安全的网站,又是怎样演变的了?
应用程序、数据库、和用户上传的文件等所有的资源都是在一台服务器上。
随着网站用户的增加,不断增加的访问数量,和大量的文件储存,一台服务器已经不能满足需求,这时就需要分离应用和数据。
分离后整个网站使用三台服务器:应用服务器、文件服务器、数据库服务器。
三台服务器对硬件的要求不同:
随着用户进一步增加,数据库压力太大导致访问延迟。而大部分数据的访问,总是集中在某些热点数据上,例如淘宝商品访问,总是集中在评价最高的商品上。
那么我们可以将这一部分热点数据,缓存到内存中,以减少数据库的访问压力。
网站可使用的缓存分为两种:
使用缓存后,数据库的压力得到有效缓解,但单个应用服务器能处理的请求连接有限,在访问高峰期,应用服务器成为整个网站的瓶颈。
单一应用服务器性能是有上限的,这种情况下,更好的方式是多个服务器的集群来分担原有服务器的访问及储存压力,从而实现系统的可伸缩性。
应用服务器集群搭建后,通过负载均衡调度服务器,将请求分发到集中中任何一台机器上。
网站使用缓存后,绝大部分数据都可以从缓存中获取,但在部分情况下任然需要访问数据库:
虽然只有部分情况才会访问数据库,但当用户基数不断增大,数据库也会不堪重负。
这种情况下,可以通过读写分离,来减轻数据库的压力。
目前大部分主流数据库都支持主从热备(双机热备),通过设定两台数据库的主从关系,可以将一台数据库服务器的数据同步更新到另一台服务器上,网站利用数据库的这个功能来实现读写分离。
在写数据时访问主数据库,同时主数据库同步数据到从数据库,在读取数据时,就可以访问从数据库,同时还需要一个数据访问模块,让读写分离对应用程序透明,减少代码依赖。
随着网站规模的扩大,用户可能分布在全国各地,不同地方的网络环境不同,要保证响应速度,就需要加速网站的访问速度。
主要的加速手段:
这两种方式都基于缓存,不同点在于:
数据库经过读写分离,拆分为两台服务器,但是随着网站发展任然不能满足需求,文件服务器也是一样。
这时就需要分布式的数据库系统和文件系统。
分布式数据库是网站数据库拆分的最后手段,只有在单表数据非常庞大的时候才使用。不到不得已时,网站更常用的数据库拆分手段是业务分库,将不同的业务的数据库部署在不同的服务器上。
随着网站业务越来越复杂,对数据库储存和检索的需求也越来越复杂,网站需要采取一些非关系型数据库技术如NoSQL和非数据库查询技术如搜索引擎。
NoSQL和搜索引擎,对可伸缩的分布式系统有很好的支持。面对如此多的数据源,应用服务器通过统一的数据访问模块来访问不同的数据源。
大型网站面对日益复杂的业务场景,根据产品线划分,可以将一个网站拆成多个应用,每个应用都独立部署维护。
每个应用之间的数据关联有如下几种方式:
随着业务拆分越来越细,应用系统越来越复杂,并且由于所有应用要和所有数据库连接,在数万台服务器规模的网站中,会导致数据库连接资源不足,拒绝服务。
应用系统中有许多相同的业务操作,比如用户管理、商品管理等,那么可以将这些相同的业务提取出来独立部署,由这些可复用的业务连接数据库,通过分布式服务调用共用业务服务完成具体操作。
*本文是《大型网站技术架构 核心原理与案例分析》的章节总结
标签:soft 传统 分数 一个 两台 企业 复用 大量 黑客攻击
原文地址:https://www.cnblogs.com/wanshiming/p/9557797.html