SPICE协议之ImageCache
来源:互联网 发布:网络名词233是什么意思 编辑:程序博客网 时间:2024/05/16 07:00
http://blog.csdn.net/haiq2006/article/details/50646563
SPICE协议的image cache本来是很简单的一个机制。首先驱动根据图片内容算出一个独特的ID,RedWorker在图形编码的时候拿这个ID查查看是否已经把这个图保存并发送给客户端了。如果存在这个ID,那后面就可以不用编码了,直接发送SPICE_IMAGE_TYPE_FROM_CACHE/LOSSLESS类型的图形,一个ID就解决了。如果ID不存在,再继续编码,通知客户端是否把这个图形保存到CACHE库中。
查找ID是否已经存在的算法使用带冲突链的HASH表。
算法中有个LRU链,命中的ID会挂到LRU最前面。CACHE库有一个大小限制,当CACHE库空间用完了,就把LRU链中最老的image移出CACHE。
本来这些算法很好懂,但是老版本的SPICE协议非要强调通用性,弄了个red_client_shared_cache.h文件来把算法抽象出来,其实整个文件就只有pixmap image cache在使用。这就是典型的过度设计,好在新版本中已经改过来了。
这里可以引申出两个广域网图形cache优化点。一个是模仿NX的算法在广域网进行加速,本质上就是把cache persist下来,扩大cache库尺寸并延长cache使用的时间。这个算法的特点是点对点的,比较安全。
另一个优化点就更为脑洞打开了,基于unique ID把图形存在memcached里,并通过CDN网络加速。编码的时候看看这个cache是否可以加速,如果可以加速就直接给一个URL让用户直接去最近的服务器加载。这么做有一个缺点就是数据安全,所以要用还得搞一套授权系统,规定这个image只能哪些人下载。这个算法的问题是编码实时性,memcached必须做到毫秒及响应,同时协议流量控制也要做好,否则会非常卡。
- SPICE协议之ImageCache
- SPICE协议之ImageCache
- SPICE协议之RedWorker线程
- SPICE协议之RedWorker线程
- 桌面虚拟化传输协议之android spice及spice源码分析之server(1)
- spice协议详解(一):spice协议入门
- ImageCache
- spice 协议简介
- android spice 协议入门
- Spice协议初探
- spice 协议代码 client入口
- SPICE协议marshaller的处理
- spice 协议相关分析总结
- Spice协议----输入通道定义
- SPICE协议----光标通道定义
- SPICE协议之流媒体算法
- SPICE协议之流媒体算法
- Jamendo学习之缓存:RequestCache、ImageCache
- python的两种退出方式
- 网络编程思维导图
- Unity的Animator(1)
- 算法复杂度速查表
- pyhon学习csdnfatie
- SPICE协议之ImageCache
- 判断银行卡号是否正确
- CSS篇之2. 清除浮动,什么时候需要清除浮动,清除浮动都有哪些方法
- WIN10 装了PP助手运行提示:初始化数据库失败!
- 类型 'dbo.cname' 已存在,或者您没有创建它的权限
- 了解真实的『REM』手机屏幕适配
- Notification消息提醒
- Git代码管理工具
- 数据库为什么使用视图