dev:projects:sparetime:reflect_proxy
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
dev:projects:sparetime:reflect_proxy [2013/10/06 12:09] – created hackerzhou | dev: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。 | + | |
* 需要在后台有缓存的开关,Server/ | * 需要在后台有缓存的开关,Server/ | ||
- | * 嵌入广告:用javascript嵌入返回给客户端的html,加载广告条,显示一段时间后自动淡出,用作推广用途。此功能可以按照用户开关,比如仅对免费试用用户嵌入广告。 | + | |
- | 需要做content-type的检查,如果是html的话,执行嵌入操作,嵌入到body节点的头部。 | + | |
- | 写div的淡入淡出,用尽可能短小的javascript代码,之前貌似写过类似的东西。 | + | |
- | * 分布式计算:增加可伸缩性,重定向客户端请求到某个特定的服务器。比如,如果用户test在我的ReflectProxy上建立了一个映射关系,在他自己的内网服务器上运行ReflectProxy客户端,用户名test经过某个hash算法之后提取第一个十六进制字符(比如9),就连接到9.ReflectProxyServer.com这台ReflectProxy服务器。 | + | |
- | 低优先级,留到最后再做,应该不太麻烦的。 | + | |
- | * Remote Object:Flex构建的Web前台UI和UI Server之间通信用Remote Object技术通信。 | + | |
- | 提高消息传递效率:始终保持有一个监听的连接是alive的;每次传递HTTP包的总个数/ | + | * **提高消息传递效率**:始终保持有一个监听的连接是alive的;每次传递HTTP包的总个数/ |
- | * 异步Servlet:减少服务器负载,降低宕机的可能,资料,原来做的版本异步不够彻底。 | + | |
- | * 通信协议设计: | + | |
- | Base64 + GZip:把对象转成byte array,再用GZip压缩,最后用Base64序列化成字符串供传输。不过用随机字符串/ | + | * **Base64 + GZip**:把对象转成byte array,再用GZip压缩,最后用Base64序列化成字符串供传输。不过用随机字符串/ |
- | 对象转成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],不过该标准争议较大,褒贬不一,有待仔细研究。 | + | |
- | Gzipped XML:把普通XML文本用GZip算法压缩成byte array然后再传递或者再把byte array用base64转成文本,不过转成base64的话就抵消掉一部分压缩的效果了。 | + | |
- | 轻量级:尽量使用轻量级的架构以及类库,减小服务器负载并且增强反应速度。 | + | * **轻量级**:尽量使用轻量级的架构以及类库,减小服务器负载并且增强反应速度。 |
- | Event Driven使用基于事件的处理模式来简化客户端的操作,可以很简单的简化成一个类似状态机的方式,抛弃原先的基于Thread的处理(虽然由于Java对事件机制支持不好,我做的事件处理依旧是基于Thread来dispatch event,不过代码有条理多了)。 | + | * **Event Driven**使用基于事件的处理模式来简化客户端的操作,可以很简单的简化成一个类似状态机的方式,抛弃原先的基于Thread的处理(虽然由于Java对事件机制支持不好,我做的事件处理依旧是基于Thread来dispatch event,不过代码有条理多了)。 |
=====一些文档===== | =====一些文档===== | ||
- | + | * {{: | |
- | 文件:SettingDataBitwiseLayout.docx | + | * {{:dev: |
- | 文件: | + | * {{:dev:projects: |
- | 文件:论文.docx | + | * {{: |
- | 文件:答辩PPT.pptx | + | |
=====第三方类库===== | =====第三方类库===== | ||
- | + | ^ 名称 | |
- | 名称 | + | | BlazeDS |
- | 用途 | + | | Hibernate |
- | 许可证 | + | | MySQL JDBC Driver |
- | BlazeDS | + | | log4j | 日志记录 |
- | Flex UI端到Java Server端的通信(RemoteObject的实现) | + | | dom4j | 解析xml |
- | LGPL | + | | JavaMail |
- | Hibernate | + | |
- | 数据库ORM层 | + | |
- | LGPL | + | |
- | MySQL JDBC Driver | + | |
- | MySQL数据库连接jdbc驱动 | + | |
- | LGPL | + | |
- | log4j | + | |
- | 日志记录 | + | |
- | Apache License | + | |
- | dom4j | + | |
- | 解析xml | + | |
- | BSD | + | |
- | JavaMail | + | |
- | 发送邮件 | + | |
- | Sun | + |
dev/projects/sparetime/reflect_proxy.1381061376.txt.gz · Last modified: 2020/06/06 23:32 (external edit)