《深入分析Java Web技术内幕》读书笔记

2019, May 08    

第1章 深入web请求过程

  • 当一个用户在浏览器里输入www.taobao.com这个URL时,将会发生很多操作。首先它会请求DNS把这个域名解析成对应的IP地址,然后根据这个IP地址在互联网上找到对应的服务器,向这个服务器发起一个get请求,由这个服务器决定返回默认的数据资给访问的用户。在服务器端实际上还有很复杂的业务逻辑:服务器可能有很多台,到底指定哪台服务器来处理请求,这需要一个负载均衡设备来平均分配所有用户的请求:还有请求的数据是存储在分布式缓存里还是一个静态文件中,或是在数据库里;当数据返回浏览器时,浏览器解析数据发现还有一些静态资源(如CSS、JS或者图片)时又会发起另外的HTTP请求,而这些请求很可能会在CDN上,那么CDN服务器又会处理这个用户的请求,大体上一个用户请求会涉及这么多的操作。每一个细节都会影响这个请求最终是否会成功。

  • CDN也就是内容分布网络(ContentDeliveryNetwork),它是构筑在现有Internet上的一种先进的流量分配网络。其目的是通过在现有的Internet中增加一层新的网络架构,将网站的内容发布到最接近用户的网络“边缘”,使用户可以就近取得所需的内容,提高用户访问网站的响应速度。有别于镜像,它比镜像更智能,可以做这样一个比喻:CDN=镜像(Mirror)+缓存(Cache)+整体负载均衡(GSLB)。因而,CDN可以明显提高Internet中信息流动的效率。

    计算机生成了可选文字: D、s域名服务 域名到地址映射 用户浏览器 CSS/JS/IMG ℃闐kie等局 部内容缓存 负载均衡 CDN CSS/JStIMG等静态资源 HITP反 向代理 服务端系统 Apache/Nginx 分布式緩存系統 JBowTomcatJJettY 图卜1 文件系统 数据库 CDN架构图

  • 负载均衡

    1. 负载均衡是由DNS的解析来完成的,用户最终访问哪个webServer是由DNsServer来控制的,在这里就是由GlobalDNSServer来动态解析域名服务。这种DNS解析的优点是用户会直接访问目标服务器,而不需要经过其他的代理服务器,通常访问速度会更快。但是也有缺点,由于DNS在用户本地和LocalDNSServer都有缓存,一旦某台webServer挂掉,就很难及时更新用户的域名解析结构。如果用户的域名没有及时更新,那么用户将无法访问这个域名,带来的后果非常严重。

    2. 硬件负载均衡 硬件负载均衡一般使用一台专门的硬件设备来转发请求,如图1-1-8所示。关键就是这台价格非常昂贵的设备,如F5,通常为了安全需要一主一备。它的优点很显然就是性能非常好,缺点就是非常贵,一般公司是用不起的,还有就是当访问量陡然增大超出服务极限时,不能进行动态扩容。

    3. 软件负载均衡 是使用最普遍的一种负载方式,它的特点是使用成本非常低,直接使用廉价的PC就可以搭建。缺点就是一般一次访问请求要经过多次代理服务器,会增加网络延时。

      访 同  图 卜 18 硬 件 负 均 衝

      HAProxy  web  Serv er  web  Server  t.vs  1-19  l.vs  Aero s  HA  web  Server  Web  Server

第2章 深入分析 Java I/O的工作机制

  • 我们知道,读取和写入文件I/O操作都调用操作系统提供的接口,因为磁盘设备是由操作系统管理的,应用程序要访问物理设备只能通过系统调用的方式来工作。读和写分别对应read()和write()两个系统调用。而只要是系统调用就可能存在内核空间地址和用户空间地址切换的问题,这是操作系统为了保护系统本身的运行安全,而将内核程序运行使用的内存空间和用户程序运行的内存空间进行隔离造成的。但是这样虽然保证了内核程序运行的安全性,但是也必然存在数据可能需要从内核空间向用户空间复制的问题。