随想
1.网站架构中,业务服务器和数据库服务器以及文件服务器分离,why?
首先三者对服务器的要求不一致,业务服务器要求服务器拥有强大的CPU,用来处理业务逻辑。数据库服务器需要的是强大的磁盘检索能力,即更快的硬盘。文件服务器需要存储大量用户上传的文件,因此需要更大的硬盘。
其次,随着业务的逐渐增多,数据和文件越来越多,单服务器的存储空间不足。
2.因为80%的业务访问的是数据库中20%的数据,因此如果将这20%的数据存于内存缓存,那么对数据库的访问会大大减少,数据访问速度也会大大提升。还可以通过读数据库进行读写分离,分为主从数据库,主数据库主要用来写入,从数据库服务读取,主数据库服务器的数据更新同步到从服务器上。当然主从服务器的数据之间会有延时,对于一些可以容忍该延时的业务,这是个很好的改善数据库负载压力的方法,并且也是对数据库数据的一项热备份,保证数据的稳定性。最后还可以使用分布式数据库,比如将不同的业务数据,部署在不同的物理服务器上。当然,数据库的检索会随着业务的复杂,而越来越复杂,原先的关系型数据库的检索速度会变慢,这时候会有一些Nosql(not sql或者not only sql),以及目前用比较流行的神经网络索引,代替B-tree。
3. 应用服务器演变的过程类似,由单服务器到集群,运用负载均衡方法,缓解逐渐增长的业务对服务器的压力,同时也是增加了服务的高可用性,若其中一台服务器宕机,另外一台服务器还能正常工作。再后来,需要对应用服务器进行更加精细的划分,根据业务模块分开部署(分布式部署,离不开对业务的横切和竖切)。多台服务器部署相同的内容,组成集群,通过负载均衡对外提供服务,确保高可用性。