hyk-proxy 构建于GAE之上的高性能web代理程序(A web proxy build on GAE, could be used to break some firewall)

2010年3月18日 | 分类: 翻墙利器 | 标签: , , , ,

关于

* hyk- proxy展示了通过RPC来实现高性能web proxy的途径。基于目前实现机制,将来还可以实现暴露更多GAE特有功能,实现为一个远程的GAE lib,而不仅仅作为web proxy。
* hyk-proxy目前支持HTPP/XMPP方式完成web proxy功能,具体原理见后文

hyk- proxy原理

* hyk-proxy分为两部分,一部分运行于GAE之上,属于remote server;另一部分运行于本地,属于local server,实质为一个简单的http server。
* 当浏览器设置的代理服务器地址为local server地址时,local server将http请求通过一个通用RPC框架远程调用到remote server上,获取远程调用结果。远程接口为:

public interface FetchService
{
HttpResponseExchange fetch(HttpRequestExchange req);
}

* local server在获取调用结果简单处理后,转给浏览器完成一次代理访问。
* 一次web访问经过此代理的完整过程如下:

Browser<-->Local Server<-->Remote Server<-->Real Web Server

其中Local Server与Remote Server之间属于RPC通信层部分,不局限于HTTP连接;若Remote Server由于防火墙原因无法直接通过HTTP连接,可采用XMPP模式穿越

* 由于该RPC框架通信层部分可以替换,因此local server与remote server之间的通信方式可以视实际情况替换。由于GAE本身的限制,目前理论上只有三种方式可以选择:
1. HTTP,local server作为HTTP client访问remote server
2. XMPP,local server作为一个XMPP user与remote server进行通信
3. EMAIL,local server 与remote server发送/接受email通信(由于EMail限制较大,似不适于用于RPC通信协议)

如何使用

* 安装运行依赖
1. JRE/JDK 1.6+
2. Google App Engine SDK(Java) (最新版本)
* 创建自己的GAE应用 http://appengine.google.com/
* 安装Remote Server
1. 解压hyk-proxy-server-[version].zip
2. 进入解压的目录, 修改war/WEB-INF/appengine-web.xml, 将值改为自己创建的appid
3. 执行appcfg.cmd/appcfg.sh update war上传, 注意在解压后进入的目录执行(appcfg在’/bin’ )
* 运行Local Server
1. 解压hyk-proxy-client-[version].zip
2. 进入解压的目录, 修改etc/hyk-proxy-client.properties中“remoteserver.appid.x”
3. 执行bin/start.bat(start.sh)启动local server,bin/stop.bat(stop.sh)停止
4. 默认绑定的地址为 127.0.0.1:48100
* 配置

大部分配置均在hyk- proxy-client.properties中,简要说明如下:

1. ‘remoteserver.appid.x’ 为已部署的ApplicationID, 即.appspot.com中
2. ‘remoteserver.appid.x’ 可配置多个,此情况下, 代理过程中采用轮询策略选择
3. ‘localserver.xmpp.user.x’, ‘localserver.xmpp.passwd.x’ 为XMPP账户,目前GTALK/jabber.org/chatmask.com已验证
4. XMPP 账户可配置多个,此情况下代理过程中采用轮询策略选择
5. XMPP模式仅在HTTP模式为 false(”localserver.http.enable = false”)情况下生效
6. ‘localserver.rpc.http.maxfetcher’ 在下载文件/观看视频时生效,含义为并发的下载线程数

注意

* 启用XMPP模式时, 由于xmpp server限制,太频繁发送消息会被server拒绝,可采用配置多个XMPP账户规避
* EMail模式目前未实现
项目地址:http://code.google.com/p/hyk-proxy/

目前还没有任何评论.