《大型网站技术架构》读书笔记1

6.1网站架构伸缩性设计

  • 纵向分层:应用层、可复用服务层(公用功能,如考务里面用户管理、数据权限管理、报表打印)、基础服务层(数据库访问、缓存管理等)
  • 横向分割:每一层还可细分成更不同业务模块,如应用层可分为考生注册、考生登录、考生报名、系统管理等模块

分层和分割的目的:

  • 首先,不同模块间可以通过暴露的接口通信,也可以通过消息队列通信,模块间实现解耦,方便开发人员专注于一个模块开发,提高开发效率,同时也方便测试。
  • 其次,由于模块间低耦合,某个模块发生变化时,对系统其他部分影响很小,方便单个模块根据业务变化独立进行调整。
  • 最后,也是最重要的一点,可以根据不同层级、不同模块的业务压力增减服务器,如考务系统中涉及考生的模块,可以适当增加服务器,而涉及系统管理的模块,则尽量减少服务器。

但是分层和分割也有一些挑战,就是必须合理规划层次边界和通信接口,开发中严格遵循层次架构约束,禁止跨层次调用和逆向调用。这个架构涉及和开发人员编码都提出了更高的要求。

6.2应用服务器集群的伸缩性设计

这部分主要介绍负载均衡技术

  • HTTP重定向负载均衡:HTTP重定向服务器是一台普通的应用服务器,其唯一的功能就是根据用户的HTTP请求计算出一台真实的Web服务器地址,并将该地址写入HTTP重定向响应中(相应代码302)。
    • 优点:方案比较简单。
    • 缺点:需要两次请求,性能较差;重定向服务器自身处理能力成为系统性能瓶颈;有可能被搜索引擎判断为SEO作弊。
  • DNS域名解析负载均衡:由DNS服务器记录同一域名的多台服务器地址,由DNS服务器根据负载均衡算法(轮询、加权轮询、随机、最少连接、IP地址散列)。
    • 优点:负载均衡交给DNS服务器,省去维护负载均衡服务器的麻烦。
    • 缺点:当服务器地址发生变化时,DNS多级解析导致变化不能立即生效。
  • 反向代理负载均衡(应用层负载均衡):由反向代理服务器将请求分发到web服务器,web服务器的响应也通过反向代理服务器返回给用户。反向代理服务器需要双网卡,双IP地址。
    • 优点:部署简单,与反向代理缓存集成在一起。
    • 缺点:所有请求和响应都通过反向代理,其性能会成为瓶颈。
  • IP负载均衡:通过修改请求的目标地址实现负载均衡。通过修改请求的源地址(源地址转换)或者服务器作为网关实现所有响应回到负载均衡服务器。
    • 优点:比反向代理服务器性能更好。
  • 数据链路层负载均衡:在通信协议的数据链路层修改mac地址进行负载均衡。是目前大型网站使用最广的一种负载均衡手段。

版权声明:本文为博主原创文章,未经博主允许不得转载.

posted @ 2015-11-11 19:24  农夫与花园  阅读(150)  评论(0编辑  收藏  举报