Pobing's Blog

Home Tags About Rss

《大型网站技术架构 核心原理与案例分析》读书笔记

#读书笔记 #网站架构

以下是读 《大型网站技术架构 核心原理与案例分析》的读书笔记

分布式架构图

图片来自该书

#不同职责的服务器: 应用服务器需要处理大量的业务逻辑,因此需要更快更强大的CPU;

数据库服务器需要快速磁盘检索和数据缓存,因此需要更快的硬盘和更大的内存;

文件服务器需要存储大量用户上传的文件,因此需要更大的硬盘。

#缓存: 网站使用的缓存可以分为两种:缓存在应用服务器上的本地缓存和缓存在专门的分布式缓存服务器上的远程缓存。

本地缓存的访问速度更快一些,但是受应用服务器内存限制,其缓存数据量有限,而且会出现和应用程序争用内存的情况。

远程分布式缓存可以使用集群的方式,部署大内存的服务器作为专门的缓存服务器,可以在理论上做到不受内存容量限制的缓存服务.

通过负载均衡调度服务器,可将来自用户浏览器的访问请求分发到应用服务器集群中的任何一台服务器上,如果有更多的用户,就在集群中加入更多的应用服务器,使应用服务器的负载压力不再成为整个网站的瓶颈。

目前大部分的主流数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库服务器的数据更新同步到另一台服务器上。网站利用数据库的这一功能,实现数据库读写分离,从而改善数据库负载压力。

#技术: 网站技术是为业务而存在的,除此毫无意义。

在技术选型和架构设计中,脱离网站业务发展的实际,一味追求时髦的新技术,可能会将网站技术发展引入崎岖小道,架构之路越走越难。

技术是用来解决业务问题的,而业务的问题,也可以通过业务的手段去解决。

#性能: 在浏览器端,可以通过浏览器缓存、使用页面压缩、合理布局页面、减少Cookie传输等手段改善性能。

使用CDN,将网站静态内容分发至离用户最近的网络服务商机房,使用户通过最短访问路径获取数据。可以在网站机房部署反向代理服务器,缓存热点文件,加快请求响应速度,减轻应用服务器负载压力。

用户视角的网站性能

从用户角度,网站性能就是用户在浏览器上直观感受到的网站响应速度快还是慢。用户感受到的时间,包括用户计算机和网站服务器通信的时间、网站服务器处理的时间、用户计算机浏览器构造请求解析响应数据的时间。

#日志: 应用程序自己的日志输出配置和第三方组件日志输出要分别配置。

检查log配置文件,日志输出级别至少为Warn,并且检查log输出代码调用,调用级别要符合其真实日志级别。

有些开源的第三方组件也会不恰当地输出太多的Error日志,需要关闭这些第三方库的日志输出,至于哪些第三方库有问题,只有在遇到问题时才知道。

#网站首页: 首页不应该访问数据库,首页需要的数据可以从缓存服务器或者搜索引擎服务器获取。 首页最好是静态的。

#文件存储: 存储的使用需要根据不同文件类型和用途进行管理,图片都是小文件,应该使用专用的存储服务器,不能和大文件共用存储。

批处理用的大文件可以使用其他类型的分布式文件系统。

#代码和部署: 代码提交前使用diff命令进行代码比较,确认没有提交不该提交的代码。

加强code review,代码在正式提交前必须被至少一个其他工程师做过code review,并且共同承担因代码引起的故障责任。

分享按钮

comments powered by Disqus