5月阅读周·HTTP权威指南:重定向与负载均衡之缓存阵列路由协议篇
引言
HTTP(Hypertext Transfer Protocol,超文本传输协议)是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。
《HTTP权威指南》一书将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,对HTTP“为什么”这样做进行了详细的解释,而不仅仅停留在它是“怎么做”的。此外,这本书还介绍了很多HTTP应用程序正常工作所必需且重要的非HTTP技术。
这本书主要包括以下内容:
- 第一部分描述了Web的基础构件与HTTP的核心技术
- 第二部分重点介绍了Web系统的结构构造块:HTTP服务器、代理、缓存、网关以及机器人应用程序。
- 第三部分提供了一套用于追踪身份、增强安全性以及控制内容访问的技术和技巧。
- 第四部分涵盖HTTP报文主体和Web标准,前者包含实际内容,后者描述并处理主体内容。
- 第五部分介绍了发布和传播Web内容的技巧。
- 第六部分是一些很有用的参考附录,以及相关技术的教程。
重定向与负载均衡
缓存阵列路由协议
代理服务器通过拦截来自单个用户的请求,提供所请求Web对象的缓存副本,极大地降低了发往因特网的流量。但随着用户数的增加,大量流量可能会使代理服务器自身超载。
对此问题的一种解决方案就是使用多个代理服务器将负载分散到一组服务器上。CARP(缓存阵列路由协议)是微软公司和网景公司提出的一个标准,通过这个协议来管理一组代理服务器,使这组代理服务器对用户来说就像一个逻辑缓存一样。
ICP中出现缓存未命中时,代理服务器会用ICP报文格式来查询附近的缓存,以确定Web对象是否存在。附近的缓存会以HIT或MISS进行响应,请求代理服务器会用这些响应来选择能够获取到对象的最适当的位置。如果ICP代理服务器是以层次结构排列的,未命中的查询会被提交给其父代理。
注意,通过ICP协议连接起来的每个代理服务器都是将内容进行了冗余镜像的独立缓存服务器,这就说明在不同的代理服务器之间复制Web对象条目是可行的。相反,用CARP连接起来的一组服务器会被当作一个大型的服务器,其中每个组件服务器都只包含全部缓存文档中的一部分。通过对某个Web对象的URL应用散列函数,CARP就可以将此对象映射到特定的代理服务器上去。每个Web对象都有一个唯一的家,所以我们可以通过单次查找确定对象的位置,而无须去查询集合中配置的每个代理服务器。
作为客户端和代理服务器中间人的缓存代理可以在各个代理服务器之间分配负载,但这项功能也可以由客户端自身提供。可以配置Internet Explorer和网景公司的Navigator这样的商用浏览器,以插件的形式计算散列函数,来确定应该把请求发送给哪个代理服务器。
CARP重定向方法要完成下列任务。
· 保存一个参与CARP的代理服务器列表。周期性地查询这些代理服务器,看看它们是否仍然活跃。
· 为每个参与的代理服务器计算一个散列函数。散列函数的返回值要考虑此代理所能处理的负载量。
· 定义一个独立的散列函数,这个函数会根据所请求Web对象的URL返回一个数字。
· 将URL散列函数的结果代入代理服务器的散列函数,得到一个数字阵列。这些数字中的最大值决定了要为这个URL使用的代理服务器。由于算出来的值是确定的,所以对同一个Web对象的后继请求会被转发给同一台代理服务器。
以上4项任务可以由浏览器、插件执行,也可以在一个中间服务器上计算。
为每个代理服务器集群创建一个表,表中列出了集群中的所有服务器。表中的每个条目都应该包含全局参数的相关的信息,比如,负载因子、生存时间(TTL)、倒计数值和应该以何频率查询成员之类的全局参数。负载因子说明机器可以处理多少负载,这取决于那台机器的CPU速度和硬盘容量。可以通过RPC接口对此表进行远程维护。只要表中的字段被RPC修改了,就可以使其对下游的客户端和代理可见,或将其发布给它们。这项发布工作是在HTTP中进行的,这样,所有的客户端或代理服务器就都可以在不引入另一种代理间协议的基础上消化表格信息了。客户端和代理服务器只用了一个知名URL来获取这张表。
所使用的散列函数必须能够确保Web对象在参与的代理服务器间是统计分布的。应该用代理服务器的负载因子来确定分配给那台代理的Web对象的统计概率。
总之,CARP协议允许将一组代理服务器看成单个的集群缓存,而不是(像ICP中那样的)一组相互合作但又相互独立的缓存服务器。确定的请求解析路径会在一跳内找到某个特定的Web对象的家。这样会降低ICP在一组代理服务器中查找Web对象时常会产生的代理间流量。CARP还可以避免在不同的代理服务器上存储Web对象的多个副本的问题,这样做的优点是缓存系统集群的Web对象存储容量较大,缺点是任意一个代理的故障都要改写现存代理的部分缓存内容。
总结
HTTP并不是独自运行在网上的。很多协议都会在HTTP报文的传输过程中对其数据进行管理。HTTP只关心旅程的端点(发送者和接收者),但在包含有镜像服务器、Web代理和缓存的网络世界中,HTTP报文的目的地不一定是直接可达的。
重定向技术涉及网络工具、重定向技术细节以及判定HTTP报文最终目的地的协议。重定向技术通常可以用来确定报文是否终结于某个代理、缓存或服务器集群中某台特定的服务器。重定向技术可以将报文发送到客户端没有显式请求的地方去。
作者介绍
非职业「传道授业解惑」的开发者叶一一。
《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏⭐️ | 留言📝。
- 点赞
- 收藏
- 关注作者
评论(0)