分布式系统设计实践
上QQ阅读APP看书,第一时间看更新

第2章 Web框架的实现原理

今天的网站已经与十几年前大不相同了,如今的京东、淘宝、亚马逊、谷歌的网站,只是一个巨大分布式系统的入口或者说前端界面而已。在这些看似简单,甚至极为简洁(如谷歌的搜索页面)的入口背后,是一个已经异常复杂,而且正在变得更加复杂的分布式系统。

图2-1是一个简化的大型网站架构图。

  • 大型网站的最前端一般都会有一个CDN(Content Delivery Network),用于缓存静态数据,减轻对Web服务器的压力。
  • Web服务器的前面还会有负载均衡器,当有Web请求到达时,负载均衡器将其发送给多个Web服务器中的一个进行处理。这样做既可以提高整个网站的处理能力,也能增强其健壮性。
  • 负载均衡器后面就是Web服务器集群了。集群中的每个Web服务器配置都是一样的。大型的Web应用都是分层的,而且都会采用统一的Web框架。在一个多层的Web应用中,大部分业务处理逻辑都实现在业务层中。真正的数据存放在在线存储层中,但为了提高访问效率,在Web服务器上一般都会有一些缓存,以缓存从存储层中取到的“热”数据。
  • 在线存储层中存储的是需要Web应用处理的实时数据(如电商网站中用户下的订单等)。为了对这些数据进行分析,需要将实时数据复制到离线数据层中,这个复制动作是由数据复制与同步组件完成的。之所以如此,是因为分析时需要大量访问数据库,如果分析程序直接访问在线存储层,会影响在线应用的体验。
  • Hadoop分析集群离线分析离线数据层中保存的数据,生成分析结果(如用户偏好、广告效果等),再将分析结果送给业务层,这样业务层就可以调整其业务处理逻辑。
  • 很多大型网站还需要第三方提供支持(如外部的支付系统、电商系统上的卖家、外部的物流系统等),因此,业务层还需要和第三方系统进行交互。

图2-1 大型网站的架构

可见,一个大型网站涉及的技术非常多,除了数据库、Web服务器(如Apache),还涉及Web框架、反向代理服务器、负载均衡器等诸多技术。

本章下面的内容就Web服务器中使用的Web框架技术的工作原理做一个简要的介绍,反向代理与负载均衡技术在第3章中介绍。