SFS2X 客户端-服务器协议
SFS2X使用了一种高效的二进制协议,这种协议可以使服务器在各方面都表现出色。消息通过客户端和服务器引擎得到快速转换,在带宽上传输可更加轻便。附加的即时压缩,能够在不影响总体性能的前提下允许更大程度的压缩。
这是对象传输使用基于XML的SmartFoxServer1.x的协议和SmartFoxServer2X二进制协议的例子。
SmartFoxServer 1.x:
这一存储消息,大小为1027bytes。
SmartFoxServer 2X:
这一消息,以二进制协议存储,没有进行压缩,大小为351bytes,大概为XML版本的1/3。
然后下面的是经过压缩后的存储信息,大小为239bytes,减少了32%大小。大消息更能体现出效果,特别是那些包含了许多字符串或者复杂嵌套对象的的消息。在这种情况系啊,消息大小压缩可以达到2-300%的数量级。
相比之前的版本,SFS2X的总体要求是它们的4.2倍左右。保守预测,接下来的新协议会在大体上再进行带宽减少3-6倍。
协议性能:
在服务端和客户端的2X版本中,转换协议的整体性能也同样得到了很大的提高。特别是在服务端效果更显著。我们是以消息数/秒为基准的,所以可以用旧的和新的文本协议进行转换。
SFS文本协议:
SFS二进制协议:
在消息转换上提高了有5-6倍。Fragmentation这一栏显示了表格中有多少模块是消息。换言之,在基准测试过程中,我们模拟了不同程度的模块包用以观察在数据汇总阶段对性能的影响。
模块的平均程度为使用6-10个模块,高级程度的是使用20-25个模块,原始的消息大小为350 bytes。
压缩:
当消息的大小大于配置数量时,可以通过客户端或者服务器激活压缩功能。
采用的算法是GZip/Zip格式的填充/释放技术,该算法具有快速和支持所有公共平台(如Flash,Java,.Net)等特点。
性能方面,该算法可以解压缩大于10K的消息/秒,压缩5K左右的消息/秒的任何双核机。这也意味着,在客户端的数据压缩的效果是微不足道的。