SmartFoxServer 2X客户端 - 服务器协议

SmartFoxServer 2X客户端 - 服务器协议

SmartFoxServer 2X使用高效率的二进制协议,使服务器性能在不同方面突出。消息在带宽上很轻,并且由客户端和服务器引擎快速解析。附加的即时压缩允许额外的尺寸减小而不影响一般性能。

这是使用基于XML的SmartFoxServer 1.x协议和SmartFoxServer 2X二进制协议的对象传输的示例:

»SmartFoxServer 1.x

var testObj:Object = {}
testObj.smallInt = 15
testObj.medInt = 120700
testObj.bigInt = 10900800700
testObj.doubleVal = Math.PI
testObj.muppetNames = ["Kermit", "Fozzy", "Piggy", "Animal", "Gonzo"]
testObj.fruits = [
        {name:"Apple", color:"red", inStock:true, price:1.50},
        {name:"Lemon", color:"yellow", inStock:false, price:0.80},
        {name:"Apricoat", color:"orange", inStock:true, price:1.90},
        {name:"Kiwi", color:"green", inStock:true, price:2.30}
]

这是消息转储,需要1027个字节:

<msg t='sys'><body action='asObj' r='1'><![CDATA[<dataObj><var n='smallInt' t='n'>15</var><var n='medInt' t='n'>120700</var><obj t='a' o='fruits'><obj t='o' o='0'><var n='inStock' t='b'>1</var><var n='color' t='s'>red</var><var n='price' t='n'>1.5</var><var n='name' t='s'>Apple</var></obj><obj t='o' o='1'><var n='inStock' t='b'>0</var><var n='color' t='s'>yellow</var><var n='price' t='n'>0.8</var><var n='name' t='s'>Lemon</var></obj><obj t='o' o='2'><var n='inStock' t='b'>1</var><var n='color' t='s'>orange</var><var n='price' t='n'>1.9</var><var n='name' t='s'>Apricoat</var></obj><obj t='o' o='3'><var n='inStock' t='b'>1</var><var n='color' t='s'>green</var><var n='price' t='n'>2.3</var><var n='name' t='s'>Kiwi</var></obj></obj><var n='bigInt' t='n'>10900800700</var><obj t='a' o='muppetNames'><var n='0' t='s'>Kermit</var><var n='1' t='s'>Fozzy</var><var n='2' t='s'>Piggy</var><var n='3' t='s'>Animal</var><var n='4' t='s'>Gonzo</var></obj><var n='doubleVal' t='n'>3.141592653589793</var></dataObj>]]></body></msg> 

»SmartFoxServer 2X

这是消息转储,二进制协议,没有压缩。大小为351字节,几乎是XML版本的1/3。

Binary Size: 351
12 00 06 00 09 64 6F 75 62 6C 65 56 61 6C 07 40     .....doubleVal.@
09 21 FB 54 44 2D 18 00 06 66 72 75 69 74 73 11     .!.TD-...fruits.
00 04 12 00 04 00 04 6E 61 6D 65 08 00 05 41 70     .......name...Ap
70 6C 65 00 05 63 6F 6C 6F 72 08 00 03 72 65 64     ple..color...red
00 07 69 6E 53 74 6F 63 6B 01 01 00 05 70 72 69     ..inStock....pri
63 65 06 3F C0 00 00 12 00 04 00 04 6E 61 6D 65     ce.?........name
08 00 05 4C 65 6D 6F 6E 00 05 63 6F 6C 6F 72 08     ...Lemon..color.
00 06 79 65 6C 6C 6F 77 00 07 69 6E 53 74 6F 63     ..yellow..inStoc
6B 01 00 00 05 70 72 69 63 65 06 3F 4C CC CD 12     k....price.?L...
00 04 00 04 6E 61 6D 65 08 00 08 41 70 72 69 63     ....name...Apric
6F 61 74 00 05 63 6F 6C 6F 72 08 00 06 6F 72 61     oat..color...ora
6E 67 65 00 07 69 6E 53 74 6F 63 6B 01 01 00 05     nge..inStock....
70 72 69 63 65 06 3F F3 33 33 12 00 04 00 04 6E     price.?.33.....n
61 6D 65 08 00 04 4B 69 77 69 00 05 63 6F 6C 6F     ame...Kiwi..colo
72 08 00 05 67 72 65 65 6E 00 07 69 6E 53 74 6F     r...green..inSto
63 6B 01 01 00 05 70 72 69 63 65 06 40 13 33 33     ck....price.@.33
00 08 73 6D 61 6C 6C 49 6E 74 02 0F 00 06 6D 65     ..smallInt....me
64 49 6E 74 04 00 01 D7 7C 00 0B 6D 75 70 70 65     dInt....|..muppe
74 4E 61 6D 65 73 10 00 05 00 06 4B 65 72 6D 69     tNames.....Kermi
74 00 05 46 6F 7A 7A 79 00 05 50 69 67 67 79 00     t..Fozzy..Piggy.
06 41 6E 69 6D 61 6C 00 05 47 6F 6E 7A 6F 00 06     .Animal..Gonzo..
62 69 67 49 6E 74 05 00 00 00 02 89 BD 04 BC        bigInt......... 

下一个转储是启用压缩:大小是239字节,额外减少32%。更大的消息可以受益更多,特别是那些包含大量的String数据或复杂的嵌套对象。在这种情况下,尺寸减小可以在2-300%的量级。

总体上,SFS2X请求比先前版本小4.2倍,并且可以安全地假设,一般来说,新协议提供3-6x的数量级的带宽减少。

Binary Size: 239
78 DA 6D CE 41 4A C3 40 14 C6 F1 2F 75 66 9A E2     x.m.AJ.@.../uf..
42 AD 1B B7 1E C0 55 0E 60 03 A2 48 8B 08 15 F7     B.....U.`..H....
69 F2 1C 06 67 E6 85 49 42 49 F0 02 DE 49 C1 03     i...g..IBI...I..
E8 DA 83 B8 74 63 DC A4 59 74 F7 78 F0 FB BF 37     ....tc..Yt.x...7
87 C2 AC E0 66 63 E9 31 B3 D3 C5 EC FC F7 E1 EA     ....fc.1........
E2 0C EA 29 34 A6 AE 4E 20 E6 10 10 3E 73 14 43     ...)4..N....>s.C
A6 65 69 09 32 67 CB 21 C6 41 A0 02 53 E3 D7 35     .ei.2g.!.A..S..5
E7 CF 51 04 59 06 93 93 BA FC 00 C6 68 45 8E FD     ..Q.Y.......hE..
80 54 4B D6 F2 76 E7 30 B8 D5 E7 D7 C8 C5 E9 FF     .TK..v.0........
9A B3 7A 47 39 64 5E D3 BE 93 3F 49 32 A2 62 69     ..zG9d^...?I2.bi
B6 66 60 52 07 22 BF 47 2D 4E 93 04 71 E5 32 6B     .f`R.".G-N..q.2k
6F 7D 3D 39 82 72 54 F4 93 40 F4 FD 82 43 D7 94     o}=9.rT..@...C..
25 D5 77 7D B1 3A 86 84 5A 52 70 A6 FF E6 9A BB     %.w}.:..ZRp.....
AE 85 BC 37 5A B7 50 A9 37 7D 00 F2 86 7D C7 50     ...7Z.P.7}...}.P
1B A3 FB 82 04 30 79 7D 17 6F 7F 32 D5 5E 7D        .....0y}.o.2.^}

»协议性能

在服务器和客户端上的版本2X中,协议解析的整体性能也得到显着改进。特别是在服务器端这有一个显着的效果。我们已经基准测试了每秒可以用旧文本协议与新文本协议解析的消息量。
SmartFoxServer文本协议:
协议类型分段请求(Protocol Type Fragmentation) /秒(Req/sec)
文本号 (Text No)11819
文字平均 (Text Average)11767
文本高 (Text High)10676

SmartFoxServer二进制协议:
协议类型分段请求/秒
二进制编号68591
二元平均68204
二元高55286

改进是在消息解析的5-6倍增加的顺序。表中引入的碎片参数指示消息有多少碎片。换句话说,在基准测试期间,我们模拟了各种级别的数据包分段,以了解它在数据聚合阶段对性能的影响。

平均碎片级使用6-10个碎片,而高级使用20-25个碎片。原始消息的长度为350个字节。
»压缩

当消息大于配置的数量时,压缩功能由客户端和服务器激活。
所使用的算法是来自GZip / Zip格式的膨胀/泄漏技术,其非常快并且由所有通用平台(Flash,Java,.Net等)支持。

性能方面的算法可以解压缩超过10K消息/秒,并在任何双核机器上压缩大约5K消息/秒。这也意味着在客户端,数据压缩的影响可以忽略不计。

翻译自:http://docs2x.smartfoxserver.com/Overview/sfs2x-protocol
如有不对还请指正

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值