文档章节

dubbo中的那些“坑"(2)-hessian-lite字符串数据定义改进

阿阮
 阿阮
发布于 2014/12/02 22:08
字数 531
阅读 928
收藏 2

其实这个不算是一个坑,阿里实现的字符串协议挺好的,但是由于我个人的强迫症和在编写php客户端过程中对字符串的输出和解析感觉很别扭,尤其是字符串数据很大时,必须一个字节一个字节的判断处理,让我很郁闷,明显和我当年编写汇编时的哪种精致不符。体现在两个方面

1.字符串的格式定义为 字母S或者R + 两个字节的数据长度(MSB)+ utf8格式的字节数组,S表示最后一个块,上面那个长度是unicode

字符串的长度,不是自己数组的长度,即"中国"这个词,长度是2,utf8表示的字节数组确实6个字节

2.我的php客户端是用c混合c++编写的php扩展,输出字符串时首先调用libmbfl库计算unicode字符串的长度,然后输出utf8数据,因为在php中,我们默认采用utf8格式,字符串zval已经是utf8格式了,并且附带一个utf8长度的整数,

3.读取应答分析字符串时,根据上面的长度并不知道该分配多少内存来接受整个字符串,因为长度和utf8的字节长度根本没有关系,还有多个节时防止utf8字母被分配到多个不同的chunk上面

4.因此,我们重新定义了一个字符串数据协议, E +4字节UTF8字节长度(MSB)+ utf8表示一个完整的字符串,4字节时,表示的数据有2^31-1个utf8字节,可以表示好几百兆的汉字,够用了,这样我们可以使用c语言的memcpy函数进行快速数据拷贝和数据缓冲区分配了

5.经过测试,大量字符串的数据传输性能能提高5%


© 著作权归作者所有

阿阮
粉丝 36
博文 11
码字总数 3987
作品 0
海淀
架构师
私信 提问
加载中

评论(1)

aaafff
aaafff
请问是否考虑php-dubbo开源?
dubbo2.4.11源码编译

本文以dubbo2.4.11源码编译和打包例 dubbo官网:http://dubbo.io/ 源码:https://github.com/alibaba/dubbo 用户指南:http://dubbo.io/User+Guide-zh.htm 开发指南:http://dubbo.io/Devel......

penngo
2015/08/20
6.9K
0
dubbo源码编译

本文以dubbo2.4.11源码编译和打包例 dubbo官网:http://dubbo.io/ 源码:https://github.com/alibaba/dubbo 用户指南:http://dubbo.io/User+Guide-zh.htm 开发指南:http://dubbo.io/Devel......

x163麦芽糖
2016/06/16
223
0
Dubbo环境搭建

dubbo环境搭建 1、安装opensesame 2、获取dubbo源码 3、修改pom.xml 3.1 修改 hessian-lite/pom.xml 3.2 修改 dubbo-admin/pom.xml 添加velocity的依赖 对依赖项dubbo添加exclusion,避免引入...

有资本再款
2016/12/03
66
0
RPC 服务框架 Dubbo 2.6.2 正式发布, 包含多项重要改进

Dubbo 2.6.2 现已正式发布。 该版本包含了一些重要的改进: Hessian-lite 序列化:为了兼容性,恢复本地序列化 #1413 Asset transfer to ASF,包括 pom, license, DISCLAIMER 等 #1491 引入新...

淡漠悠然
2018/06/07
2.4K
6
Dubbo 2.6.3 预览版发布,分布式 RPC 服务框架

Dubbo 2.6.3 预览版已发布,列出了即将到来的正式版本所包含的更新内容: 改进/特性 Support implicit delivery of attachments from provider to consumer, #889 Support inject Spring bea...

淡漠悠然
2018/07/26
2.2K
11

没有更多内容

加载失败,请刷新页面

加载更多

shangcheng-my

1.数据库主键、外键类型为bigint,那么在后台应该用什么类型的变量定义? 后台用string接收,因为前段传过来的一般都是json字符串,后台直接接收,mysql是可以吧数字类型的字符串转换为对应的...

榴莲黑芝麻糊
昨天
2
0
微服务架构依赖图

基于spring-cloud-alibaba + dubbo

龙影
昨天
5
0
Centos7 安装zabbix-agent

rpm -i https://repo.zabbix.com/zabbix/4.2/rhel/6/x86_64/zabbix-release-4.2-2.el6.noarch.rpm 可以到https://repo.zabbix.com/zabbix找到对应的版本 yum install zabbix-agent -y 出现E......

abowu
昨天
8
0
文本编辑器GNU nano 4.4 发布

GNU nano 4.4 "Hagelslag" 更新日志: 启动时,光标可以放在第一个或最后一个出现位置 字符串前面带有+/string 或 +?string的字符串。 发生自动硬包装时((--breaklonglines),任何前导引号...

linuxCool
昨天
7
0
你知道字节序吗

字节序 最近在调一个自定义报文的接口时,本来以为挺简单的,发现踩了好几个坑,其中一个比较“刻骨铭心”的问题就是数据的字节序问题。 背景 自定义报文,调用接口,服务端报文解析失败 iO...

杭城小刘
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部