WEB开发网
开发学院操作系统windows 2008 Windows下做7层软负载方案分析 阅读

Windows下做7层软负载方案分析

 2010-06-25 00:00:00 来源:WEB开发网   
核心提示:对windows下做7层软负载做了一些分析,感觉最不靠谱的就是HttpWebRequest,Windows下做7层软负载方案分析,这玩意实现太复杂,包装太深,实现IP隧道和TCP的状态迁移需要修改操作系统的TCP/IP协议栈,鉴于代价太大,而且也不是设计为发送大量出站HTTP连接用的,HttpListener应该还行

对windows下做7层软负载做了一些分析,感觉最不靠谱的就是HttpWebRequest,这玩意实现太复杂,包装太深,而且也不是设计为发送大量出站HTTP连接用的,HttpListener应该还行,就是设计为做HTTP服务器用的,实在不行Proxy和RealServer之间用 Remoting传递HTTP信息,然后两边把Remoting再转换成HTTP信息。

大家有啥做7层软负载的经验可以讨论分享一下,最好是windows平台下的。

性能分析

1、 对外网的连接管理和协议解析使用http.sys(HttpApi.dll,HttpListener)内置机制,http.sys在内核级别进行HTTP的连接管理和协议解析,性能应该可以保证。

2、 对内网RealServer的连接管理和拼包使用HttpWebRequest的内置机制,但有如下问题

a) 连接管理:默认Proxy向RealServer发送请求会新建立一个连接,收到应答后会拆除连接,也就是说Proxy和RealServer之间会建立大量连接,但是由于受端口(65535)限制,出站连接不可能太多。这个问题要想办法解决,可以尝试把RealServer启用KeepAlive解决。

b) 拼包:HttpListener收到包后,虽然自动已经解析成对象,但是还要把这些包重新拼成HttpWebRequest的格式发给 RealServer,这里面包括拷贝Uri,HttpHeader,Cookies,Body等,这些数据量挺大的,在内存中拷贝一遍肯定损耗性能。该问题应该无法规避。

3、如果是常规的web应用(资源访问类),Request小,Response很大,RealServer返回Response时还要经过Proxy,还要进行内存拷贝,这个也非常影响性能。然后7层又做不到LVS的那种DirectRoute机制(需要修改网络包的mac地址),实现IP隧道和TCP的状态迁移需要修改操作系统的TCP/IP协议栈。鉴于代价太大,该问题也无法规避。

1 2 3 4  下一页

Tags:Windows 负载 方案

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接