随笔分类 - 大型网站技术架构
《大型网站技术架构》读书笔记
摘要:通常,为了保护网站的敏感数据,应用需要对这些信息进行加密处理,信息加密技术可分为三类:单项散列加密、对称加密和非对称加密。 1. 单向散列加密 单向散列加密是指通过对不同输入长度的信息进行散列计算,得到固定长度的输出,这个散列计算的过程是单向的,即不能对固定长度的输出进行计算从而获得输入信息。 利用
阅读全文
摘要:如果模块之间不存在直接调用,那么新增模块或者修改模块就对其他模块影响最小,这样系统的可扩展性无疑更好一些。 1. 事件驱动架构 事件驱动架构(Event Driven Architecture):通过在低耦合模块之间传输事件消息,以保持模块的松散耦合,并借助事件消息的通信完成模块间合作,典型的EDA
阅读全文
摘要:HTTP请求分发装置被称为负载均衡服务器。 1. HTTP重定向负载均衡 利用HTTP重定向协议实现负载均衡。 这种负载均衡方案比较简单。缺点是浏览器需要请求两次服务器才能完成一次访问,性能较差;重定向服务器自身的处理能力成为瓶颈,整个集群伸缩性规模有限;使用HTTP302响应码重定向,有可能是搜索
阅读全文
摘要:可复用的服务模块为业务产品提供基础公共服务,大型网站中这些服务通常都独立分布式部署,被具体应用远程调用。可复用的服务和应用一样,也是无状态的服务,因为可以使用类似负载均衡的失效转移策略实现高可用的服务。 1. 分级管理 运维上将服务器进行分级管理,核心应用和服务优先使用更好的硬件,在运维响应速度上也
阅读全文
摘要:应用服务器的高可用架构设计主要基于服务无状态这一特性,但事实上,业务总是有状态的,在交易类的电子商务网站,需要有购物车记录用户的购买记录,用户每次购买请求都是向购物车中增加商品来社交类网站中,需要记录用户当前登陆状态、最新发布的消息及好友状态等,用户每次刷新页面都需要更新这些信息。 Web应用中将这
阅读全文
摘要:在网站应用中,海量的数据读写对磁盘访问造成巨大的压力,虽可以通过Cache解决一部分读压力,但很多时候,磁盘仍然是系统最严重的瓶颈。 1. 机械硬盘 vs 固态硬盘 机械硬盘同多马达驱动磁头臂,带动磁头到指定的磁盘位置访问数据,由于每次访问数据都需要移动磁头臂,因此机械硬盘在数据连续访问和随机访问时
阅读全文
摘要:1. 多线程 多用户并发访问是网站的基本需求,大型网站的并发用户数会达到数万,单台服务器的并发用户也会达到数百。CGI编程时代,没用户请求都会创建一个独立的系统进程去处理。由于线程比进程更轻量,更少占有系统资源,切换代价更小,所以目前主要的Web应用服务器都采用多线程的方式响应并发数用户请求,因此网
阅读全文
摘要:在网站高并发访问的场景下,使用负载均衡技术为一个应用构建一个由多台服务器组成的服务器集群,将高并发访问请求分发到多台服务器上处理,避免单一服务器因负载压力过大而响应缓慢,使用户请求具有更好的响应延迟特性。 三台Web服务器共同处理赖在用户浏览器的访问请求,这样每台Web服务器需要处理的http请求只
阅读全文
摘要:使用消息队列将调用异步化,可改善网站的扩展性。事实上,使用消息队列还可改善网站系统的性能。 在不使用消息队列的情况下,用户的请求数据直接写入数据库,在高并发的情况下,会对数据库造成巨大的压力,同时也使得响应延迟加剧。在使用消息队列后,用户请求的数据发送给消息队列后立即返回,再由消息队列的消费者进程(
阅读全文
摘要:应用服务器就是处理网站业务的服务器,网站的业务代码都部署在这里,是网站开发最复杂,变化最多的地方,优化手段主要有缓存、集群、异步等。 1. 分布式缓存 当网站遇到性能瓶颈时,第一个想到的解决方案就是使用缓存。在整个网站应用中,缓存几乎无所不在,既存在于浏览器,也存在于应用服务器和数据库服务器;既可以
阅读全文
摘要:1. CDN加速 CDN(Content Distribute Network, 内容分发网络)的本质仍然是缓存,而且将数据缓存在离用户最近的地方,使用户以最快的速度获取数据,即所谓网络访问第一跳。 由于CDN部署在网络运营商的机房,这些运营商又是终端用户的网络提供商,因此用户请求路由的第一跳就到达
阅读全文
摘要:1. 减少http请求 HTTP协议是无状态的应用层协议,意味着每次HTTP请求都需要建立通信链路、进行数据传输,而在服务器端,每个HTTP都需要启动独立的线程去处理。这些通信和服务的开销痘痕昂贵,减少HTTP请求的数目有效提高访问性能。 加少HTTP的主要手段是合并CSS、合并JavaScript
阅读全文