From 3169698046f0d7682fce31fa2b5a9af80c0fd164 Mon Sep 17 00:00:00 2001 From: jaysunxiao Date: Thu, 27 May 2021 19:36:29 +0800 Subject: [PATCH] =?UTF-8?q?doc[protocol]:=20=E6=9B=B4=E6=96=B0=E8=AF=B4?= =?UTF-8?q?=E6=98=8E=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- protocol/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/protocol/README.md b/protocol/README.md index 942a2033..1ac0b03c 100644 --- a/protocol/README.md +++ b/protocol/README.md @@ -61,16 +61,16 @@ cpu: i9900k - 协议类修改 ``` -协议类属性名称修改名称过后无法解析,内部使用变量名称按照字符串的自然顺序来依次读写的,所以修改协议类属性的名称会导致自然顺序改变,进而导致读写顺序变化导致出现异常 +协议类属性名称修改过后无法解析,内部使用属性的名称按照字符串的自然顺序来依次读写的,所以修改属性的名称会导致读写顺序变化导致出现异常 协议类减少字段无法解析,字段不用了,就放在那不赋值就可以,没必要一定要删除,可以等到下个大版本更新再去删除,所以主要考虑增加字段的情况 -协议类增加字段无法解析,这套框架是为通信设计的协议,增加字段服务器不更新也解析不出来新字段,既然服务器要更新为什么不直接通过版本号去控制? +协议类增加字段无法解析,这套框架是为通信设计的协议,增加字段服务器不更新也解析不出来新字段,既然服务器要更新为什么不通过版本号去控制? 目前的序列化过后对象的大小如下: 简单对象,zfoo包体大小8,kryo包体大小5,protobuf包体大小8 常规对象,zfoo包体大小547,kryo包体大小594,protobuf包体大小984 复杂对象,zfoo包体大小2214,kryo包体大小2525,protobuf包体大小5091 -如果考虑支持修改协议类属性名称,要做的就是让协议类属性的读写顺序可控,就要引入很多的注解来标识属性的顺序(protostuff就是这样做的),但是感觉这样不优雅。 +如果考虑支持修改协议类属性名称,必须让字段的读写顺序可控,这就需要注解来标识属性的顺序(protostuff就是这样做的),但是感觉这样不优雅。 如果考虑支持字段增加和减少,需要消耗5%左右的性能(预估),并且增加一倍的包体积大小(写入字段的顺序),感觉不是非常划算。 因为可以通过协议版本号来解决这个问题,所以去支持这样的增删操作动力并不是非常的大。 ```