大型网站技术架构观后感

读大型网站技术架构有感

今天在王老师的课堂上阅读了李智慧的大型网站技术架构.作者根据自己的购物实例记忆当时的网站的现状发现出了现在大型网站的缺点及弊端,当多人同时登陆网站进行操作时,网站总会负荷过重而崩溃,而当时的大型网站12306也是如此,作者根据这些现象总结了网站出现这些问题的原因.进而全方位地介绍了大型网站.而这本书就是总结了大型网站的特点,以及要做好网站我们应该做到什么.

 开篇作者一直强调了架构是一种随着业务需求演化的过程,不是为了架构而架构,尤其是需求变化极快的互联网行业。传统的行业,例如银行,它的最开始会做好充分的需求分析,预估了多少的用户量,如何使用,从性能,扩展性,伸缩性,安全性,稳定性都可以有比较明确的需求模型。而小的互联网公司很难明确未来业务走向,最开始不可能去像银行投入巨大的成本,而是从一个小网站开始,迭代,变成一个大型架构。这是传统网站于互联网网站的主要区别。

应用和存储分开部署,用户访问数据在大部分业务场景下也是符合二八定律的,数据库的资源比较宝贵,缓存机制是优化系统性能的重要手段,将部分不容易改变且访问频繁的数据放在缓存里,这样用户获取这部分数据可以避免访问数据库,缓存也包括本地和远程缓存。

  当用户数量增加,分开部署的应用服务器和存储服务器也不堪重负,这个时候应用服务器可以复制出多台服务器组成集群,分摊用户的访问请求,如何让用户能够比较均衡的分配到应用服务器,这里在访问应用服务器之前采用一个负载均衡服务器,采用一定的算法策略,将请求均衡的分发到应用服务器。由于应用服务器是无状态的,共享数据session可以部署session服务器,还有就是添加session服务器如何让原来的请求继续访问到对应的session,这里需要采用一致性哈希算法来保证缓存的命中率,解决了session共享的问题,然后应用服务器几乎就是无状态的,工程师当用户数量增加系统应用服务器负载过高之后直接加应用服务器即可scale out(横向扩展)服务,达到比较好的伸缩性。

 缓存可以采用分布式的部署,如果某一台机器宕机(由于集群采用廉价的服务器,当集群规模比较大宕机可以想象成必然事件)而如何能够及时的将访问转移正确的机器上,如何去保证缓存添加新机器之后能够保证系统的正常运行保证新的数据能够尽快恢复,这里有的观点认为缓存也要保证强的一致性,有的则不以为然,这里笔者认为没必要花巨大的代价去保证。然而缓存是一个非常好的设计模式,从CPUcache到内存到硬盘缓存到硬盘,缓存的应用十分广泛,这也是优化系统性能的重要手段,但是缓存的失效时间和应用范围是值得思考的。考虑的因素可能有数据的稳定性,文件大小,失效时间等等。很多前端的静态文件也可以采用cdn缓存的方式加速访问,让用户从离自己最近的ISP服务器上去获取,而不用到中央服务器获取

最后一些大型的网站架构会从业务下手,将业务拆分,拆成不同的应用,每个应用独立部署,其实业务才是最核心的,比如最典型的12306的网站,2010年刚上线的时候一直崩溃,网上各种大神出谋划策,但是其实12306的问题不在于技术,而在于业务,把几亿人抢票放到同一个时间点,而后面12306的改革也看到了,加入了排队机制,分时间段放票。

 

posted @   马冉冉  阅读(20)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示