monostar对《深入分析Java Web技术内幕》的笔记(1)
-
第1页 web请求过程
b/s架构带来两方面好处 客户端使用统一浏览器 服务端基于统一的http协议 b/s网络一次请求一次数据交互,不是采用长连接的方式处理数据。 b/s网络架构简图:
输入url之后的操作: 请求dns把域名解析成ip---->根据ip在互联网上找对应主机---> 向主机发一个get请求--->主机决定返回默认的数据资源给访问的用户. (主机负责复杂的业务逻辑) 如何发起一个请求?(发送一个http请求的过程就是建立一个socket通信的过程) 浏览器建立socket连接--->outputstream.write http格式数据--->服务器等待 inputstream.read返回数据--->断开连接 http协议: HTTP Header:控制用户数据的传输
浏览器缓存机制(ctrl+F5刷新): Cache-Control/Pragma:no-cache Http head :
Expires:超过设定的时间后缓存失效 Last-Modified/Etag:资源的最后修改时间,Etag给页面分配一个唯一编号 DNS域名解析
浏览器检查缓存中是否有域名对应的解析过的ip地址(有则结束,ttl设置缓存时间)----> 如果浏览器缓存中没有,浏览器会查找操作系缓存中是否有这个域名对应的dns解析结果(hosts文件,/etc/named.conf)----> 如果主机中没找到,请求域名服务器(就近的dns服务器,称为LDNS)----> 如果LDNS中没有找到,请求Root Server DNS----> 根域名服务器返回级本地域名服务器一个查询域的主域名服务器地址(gTLDServer)-----> 本地域名服务器再向上一步返回的gTLD服务器发送请求-----> 接受请求的gTLD查找并返回此域名对应的Name Server域名服务器地址(在服务提供商中注册的域名)-----> Name Server 查询存储的域名和IP的映射关系表,得到IP记录,连同一个TTL值返回给DNS Server----> 返回该域名对应的IP和TTL,LDNS Server会缓存这个域名和IP的对应关系-----> 最后,把解析的结果返回给用户,用户根据TTL缓存到本地缓存中 清除缓存的域名: ipconfig /flushdns /etc/init.d/nscd restart jvm 缓存DNS解析结果,在InetAddress类中完成。 修改缓存时间:%JAVA_HOME%\lib\security\java.security文件 networkaddress.cache.ttl 和networkaddress.cache.negative.ttl (-1永不失效,10 10秒) 修改方法:-Dsun.net.inetaddr.ttl=xxx,或者通过InetAddress类动态修改 使用InetAddress 类解析域名时,要使用单例模式,不然每次都解析域名会非常耗时 几种域名解析方法: A记录,MX记录,CNAME记录,NS记录和TXT记录 CDN工作机制: CDN是内容分布网络,是构筑在现在Internet上的一种先进的流量分配网络,目的是通过现有的internet中增加一层新的网络架构,将网络的内容发布到最接近用户的网络边缘,使用户可以就近取得所需的内容。 CDN=镜像+缓存+整体负载均衡 目前CDN以缓存网站中的静态数据为主(css,js,pic,html...) 通过CDN达到的目的:可扩展,安全性,可靠性,响应和执行. cdn结构:
负载均衡: 对工作任务进行平衡、分摊到多个操作单元上执行。 3种负载均衡架构:链路(dns解析成不同IP,根据IP访问不同的目标服务器)、
集群(硬件或软件来转发请求)、
操作系统负载均衡(操作系统的软中断或者硬件中断)
monostar的其他笔记 · · · · · · ( 全部36条 )
- 重构
- 1
- Spring实战(第3版)
- 4
- Effective java 中文版(第2版)
- 10
- 大话设计模式
- 1
- 程序员的思维修炼
- 1
- 版本控制之道
- 1
- 镜子的法则
- 1
- 零阻力的黃金人生
- 1
- 专注力
- 1
- 代码大全(第2版)
- 2
- 你的灯亮着吗?
- 1
- 高性能网站建设指南
- 4
- 异类
- 1
- 35岁以前成功的12条黄金法则
- 1
- Practical Java中文版
- 1
- Java解惑
- 1
- Linux Shell脚本攻略
- 1
- 卓有成效的程序员
- 1
- 正则表达式必知必会
- 1