User Tools

Site Tools


dev:projects:sparetime:reflect_proxy

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
dev:projects:sparetime:reflect_proxy [2013/10/06 12:10] – [一些想法] hackerzhoudev:projects:sparetime:reflect_proxy [2020/06/06 23:32] (current) – external edit 127.0.0.1
Line 45: Line 45:
 ===== 一些想法 ===== ===== 一些想法 =====
 有些还不太成熟,没有做取舍的想法,先列在这里作为open issue,等到做到那部分了再说 有些还不太成熟,没有做取舍的想法,先列在这里作为open issue,等到做到那部分了再说
-  * 缓存机制:按照last modified标记缓存一些静态以及动态的文件,加快存取速度。可以在客户端以及服务器端分别缓存,构建hierarchical cache。+  * **缓存机制**:按照last modified标记缓存一些静态以及动态的文件,加快存取速度。可以在客户端以及服务器端分别缓存,构建hierarchical cache。
     * 需要在后台有缓存的开关,Server/Client端分别缓存的容量。     * 需要在后台有缓存的开关,Server/Client端分别缓存的容量。
-  * 嵌入广告:用javascript嵌入返回给客户端的html,加载广告条,显示一段时间后自动淡出,用作推广用途。此功能可以按照用户开关,比如仅对免费试用用户嵌入广告。+  * **嵌入广告**:用javascript嵌入返回给客户端的html,加载广告条,显示一段时间后自动淡出,用作推广用途。此功能可以按照用户开关,比如仅对免费试用用户嵌入广告。
     * 需要做content-type的检查,如果是html的话,执行嵌入操作,嵌入到body节点的头部。     * 需要做content-type的检查,如果是html的话,执行嵌入操作,嵌入到body节点的头部。
     * 写div的淡入淡出,用尽可能短小的javascript代码,之前貌似写过类似的东西。     * 写div的淡入淡出,用尽可能短小的javascript代码,之前貌似写过类似的东西。
-  * 分布式计算:增加可伸缩性,重定向客户端请求到某个特定的服务器。比如,如果用户test在我的ReflectProxy上建立了一个映射关系,在他自己的内网服务器上运行ReflectProxy客户端,用户名test经过某个hash算法之后提取第一个十六进制字符(比如9),就连接到9.ReflectProxyServer.com这台ReflectProxy服务器。+  * **分布式计算**:增加可伸缩性,重定向客户端请求到某个特定的服务器。比如,如果用户test在我的ReflectProxy上建立了一个映射关系,在他自己的内网服务器上运行ReflectProxy客户端,用户名test经过某个hash算法之后提取第一个十六进制字符(比如9),就连接到9.ReflectProxyServer.com这台ReflectProxy服务器。
     * 低优先级,留到最后再做,应该不太麻烦的。     * 低优先级,留到最后再做,应该不太麻烦的。
-  * Remote Object:Flex构建的Web前台UI和UI Server之间通信用Remote Object技术通信。 +  * **Remote Object**:Flex构建的Web前台UI和UI Server之间通信用Remote Object技术通信。 
-提高消息传递效率:始终保持有一个监听的连接是alive的;每次传递HTTP包的总个数/总大小需要限制并在后台提供配置项;优化数据传输所用到的XML Schema。 +  * **提高消息传递效率**:始终保持有一个监听的连接是alive的;每次传递HTTP包的总个数/总大小需要限制并在后台提供配置项;优化数据传输所用到的XML Schema。 
-  * 异步Servlet:减少服务器负载,降低宕机的可能,资料,原来做的版本异步不够彻底。 +  * **异步Servlet**:减少服务器负载,降低宕机的可能,[[http://www.ibm.com/developerworks/cn/java/j-lo-comet/index.html|资料]],原来做的版本异步不够彻底。 
-  * 通信协议设计: +  * **通信协议设计**: 
-    * Base64 + GZip:把对象转成byte array,再用GZip压缩,最后用Base64序列化成字符串供传输。不过用随机字符串/随机byte array测试了一下,效果不理想。 +    * **Base64 + GZip**:把对象转成byte array,再用GZip压缩,最后用Base64序列化成字符串供传输。不过用随机字符串/随机byte array测试了一下,效果不理想。 
-    * 对象转成byte array再用GZip压缩:服务器和客户端之间通信并不一定要用xml,也不一定非得是字符串,压缩过的二进制传输似乎更加好些,暂定采用这个方案。 +    * **对象转成byte array再用GZip压缩**:服务器和客户端之间通信并不一定要用xml,也不一定非得是字符串,压缩过的二进制传输似乎更加好些,暂定采用这个方案。 
-    * Binary XML:Server和Client之间使用二进制的XML传输,或者直接传送二进制的Object,加快传输速度。Binary XML的话应该可以直接parse,不需要先解压再parse,提高处理速度。 +    * **Binary XML**:Server和Client之间使用二进制的XML传输,或者直接传送二进制的Object,加快传输速度。Binary XML的话应该可以直接parse,不需要先解压再parse,提高处理速度。 
-    * Efficient XML:是现在W3C的标准,有现成的Java类库提供支持exificient[1],不过该标准争议较大,褒贬不一,有待仔细研究。 +      * Efficient XML:是现在W3C的标准,有现成的Java类库提供支持exificient[[http://exificient.sourceforge.net/|1]],不过该标准争议较大,褒贬不一,有待仔细研究。 
-    * Gzipped XML:把普通XML文本用GZip算法压缩成byte array然后再传递或者再把byte array用base64转成文本,不过转成base64的话就抵消掉一部分压缩的效果了。 +      * Gzipped XML:把普通XML文本用GZip算法压缩成byte array然后再传递或者再把byte array用base64转成文本,不过转成base64的话就抵消掉一部分压缩的效果了。 
-  * 轻量级:尽量使用轻量级的架构以及类库,减小服务器负载并且增强反应速度。 +  * **轻量级**:尽量使用轻量级的架构以及类库,减小服务器负载并且增强反应速度。 
-  * Event Driven使用基于事件的处理模式来简化客户端的操作,可以很简单的简化成一个类似状态机的方式,抛弃原先的基于Thread的处理(虽然由于Java对事件机制支持不好,我做的事件处理依旧是基于Thread来dispatch event,不过代码有条理多了)。+  * **Event Driven**使用基于事件的处理模式来简化客户端的操作,可以很简单的简化成一个类似状态机的方式,抛弃原先的基于Thread的处理(虽然由于Java对事件机制支持不好,我做的事件处理依旧是基于Thread来dispatch event,不过代码有条理多了)。
 =====一些文档===== =====一些文档=====
- +  * {{:dev:projects:sparetime:reflect_proxy.docx|毕业论}} 
-文件:SettingDataBitwiseLayout.docx +  * {{:dev:projects:sparetime:reflect_proxy_arch.zip|Proxy原理图}} 
-:Proxy原理图.zip +  * {{:dev:projects:sparetime:reflect_proxy.pptx|答辩PPT}} 
-文件:论文.docx +  * {{:dev:projects:sparetime:reflect_proxy_settingdatabitwiselayout.docx|}}
-文件:答辩PPT.pptx +
 =====第三方类库===== =====第三方类库=====
- +名称 用途 许可证 ^ 
-名称 +BlazeDS Flex UI端到Java Server端的通信(RemoteObject的实现)LGPL | 
-用途 +Hibernate 数据库ORM层 LGPL | 
-许可证 +MySQL JDBC Driver MySQL数据库连接jdbc驱动 LGPL | 
-BlazeDS +log4j 日志记录 Apache License | 
-Flex UI端到Java Server端的通信(RemoteObject的实现) +dom4j 解析xml BSD | 
-LGPL +JavaMail 发送邮件 Sun |
-Hibernate +
-数据库ORM层 +
-LGPL +
-MySQL JDBC Driver +
-MySQL数据库连接jdbc驱动 +
-LGPL +
-log4j +
-日志记录 +
-Apache License +
-dom4j +
-解析xml +
-BSD +
-JavaMail +
-发送邮件 +
-Sun+
dev/projects/sparetime/reflect_proxy.1381061438.txt.gz · Last modified: 2020/06/06 23:32 (external edit)