Borsh 安全高效的二进制序列化## RUST CHINA CONF 2023 第三届中国 Rust 开发者大会 6.17-6.18 @Shanghai ## Borsh ## 安全高效的二进制序列化 Daniel Wang @ NEAR ## 二 进制序列化的问题 运行、编码效率 • 确定性 • 跨平台兼容性 Borsh ## Binary Object Representation Serializer for 每一个对象与其二进制表示之间都存在一个双射映射 不同的对象的二进制表示一定不同 • 便于基于二进制表示进行 Hash ## 执行速度 • 在 Rust 中,borsh 并没有使用 serde 全部逻辑原生实现 • 序列化、反序列化速度大幅领先其他解决方案 ## 执行速度 benchmark  ## 轻量级 • 编译后的体积更小 • borsh 序列化后的二进制更精简 ## 序列化结果体积对比 #[derive(BorshSerialize, Borsh Deserialize, Serialize, Deserialize, PartialEq, Debug)]0 码力 | 21 页 | 3.35 MB | 2 年前3
Celery v4.0.1 Documentationnored If True, errors will be stored even if the task is configured to ignore results. ### Task.序列化器 A string identifying the default serialization method to use. Defaults to the task_serializer setting0 码力 | 705 页 | 2.63 MB | 2 年前3
ItsDangerous Documentation (1.1.x)
Release 1.1.00 码力 | 28 页 | 178.96 KB | 2 年前3
Exporting Go0 码力 | 34 页 | 2.29 MB | 2 年前3
Go性能优化概览-曹春晖一定要用自己的真实业务场景做压测 不要相信 readme 里的压测数据 ## 总结一下 ## • CPU 使用太高 • 应用逻辑导致 JSON 序列化 使用优化的 JSON 库替换标准库 使用二进制编码方式替代 JSON 编码 • 同物理节点通信,使用共享内存 IPC,干掉序列化开销 MD5 算 hash 成本太高 -> 使用 cityhash,murmurhash • 其它应用逻辑 -> case0 码力 | 40 页 | 8.69 MB | 2 年前3
IPC性能极致优化方案-RPAL落地实践微服务合并部署(亲和性部署、sidecar 部署) 2.本地基础组件:mesh sidecar、风控 sidecar、分布式网关... ## 方案诞生的背景 微服务合并部署 微服务化拆分: 1. 序列化 2.网络开销 3. 服务治理  1f0ff9d02a06a91/p10_1.jpg) ## 方案诞生的背景 IPC 的性能瓶颈有哪些: 1. 系统特权级切换; 2.异步线程唤醒/休眠(事件通知); 3. 数据拷贝(序列化/反序列化); ## 方案诞生的背景 能不能把库函数调用的高性能优势做到 IPC 里面,降低进程间的事件通知和数据拷贝开销? 以go-go微服务 RPC 通信场景为例,该问题可以抽象为,如何高效地在两个 f9d02a06a91/p12_1.jpg) ## 方案诞生的背景 从性能瓶颈的两点分析: 1. 异步线程唤醒: 关键在于如何最低限度降低线程唤醒的开销,非必要不通知事件。 2.数据序列化/反序列化 需要做到跨进程的虚拟地址空间共享,通过传递指针来传递一切数据。 基于以上问题,我们最终引入了 RPAL(Run Process As Library)方案,基于跨进程虚拟地址共享,复用 epoII0 码力 | 39 页 | 2.98 MB | 2 年前3
Java 应用与开发 - 高级 I/O 编程properties -- password=12345 name=Kevin ## 对象序列化 ## 概念 对象序列化(Object Serialization)是指将对象的状态数据以字节流的形式进行处理,一般用于实现对象的持久性,即长久保存一个对象的状态并在需要时获取该对象的信息以重新构造一个状态完全相同的对象。对象序列化可以理解为使用 I/O “对象流”类型实现对象读/写操作。 ## 基本概念 对象的持久性(Object Persistence)长久保存一个对象的状态并在需要时获取该对象的信息以重新构造一个状态完全相同的对象。 对象序列化(Object Serialization)通过写出对象的状态数据来记录一个对象。 对象序列化的主要任务 写出对象的状态信息,并遍历该对象对其他对象的引用,递归的序列化所有被引用到的其他对象,从而建立一个完整的序列化流。  ## 同步写法存在问题 算法效率低下 计算逻辑和网络io是串行的,不相关的计算逻辑和网络io本可以并行,以提高效率 算法逻辑和网络逻辑耦合 有大量的数据序列化以及异步转同步 的网络流程代码,算法本身不应该关注网络相关逻辑 嵌套调用其他算法复杂 在需要调用其他算法时(OT,SS 等),都需要手动编写一遍类似的流 程,嵌套调用逻辑冗余度比较高 ## 嵌套调用其他算法 executor) 发送ack ## 同步写法存在问题 算法效率低下 计算逻辑和网络io是串行的,不相关的计算逻辑和网络io本可以并行,以提高效率 算法逻辑和网络逻辑耦合 有大量的数据序列化以及异步转同步 的网络流程代码,算法本身不应该关注网络相关逻辑 嵌套调用其他算法复杂 在需要调用其他算法时(OT,SS) 等),都需要手动编写一遍类似的流 程,嵌套调用逻辑冗余度比较高 ## len(resultValues)-1] return resultValues, pErr: nil ## 隐私计算算法框架-网络消息处理 由于元函数的入参中包含由其他参与方发送来的数据,框架需要实现自动将收到的消息反序列化并缓存,否则无法进入到元函数调度流程注并入到元对应函数的入参中 type Msg struct { } func participantMetaFunc(ctx *framework.Context)0 码力 | 37 页 | 6.20 MB | 2 年前3
Redisson-官方文档中文翻译目 录 致谢 介绍 概览 配置 操作执行 数据序列化 数据分区 分布式对象 分布式集合 分布式锁和同步器 其它特性 Redis命令映射 致谢 当前文档 《Redisson 官方文档中文翻译》 由 进击的皇虫 使用 书栈(BookStack.CN)进行构建,生成于 2018-05-11。 书栈(BookStack.CN)仅提供文档编写、整理、归类等功能,以及对文档内容的生成和导出工具。 文档内容由 codec.KryoCodec Kryo 二进制 codec org.redisson.codec.SerializationCodec JDK 序列化 codec org.redisson.codec.FstCodec FST 10倍速且100%JDK序列化兼容的codec org.redisson.codec.LZ4Codec LZ4压缩codec org.redisson.codec.SnappyCodec compareAndSet(10, 91); PublishergetPublisher = longObject.get(); 数据序列化 数据序列化 数据序列化 数据序列化在 Redisson 中广泛地用于解编排在 Redis 服务器连接的网络上接收和发送的字节。 默认有多种流行的解编码器可用: Codec类名 描述 org.redisson0 码力 | 79 页 | 1.51 MB | 3 月前3
字节跳动云原生微服务架构原理与开源实践 CloudWeGo 技术白皮书 2024份力量。 2.2 CloudWeGo 项目概述 CloudWeGo包括Kitex、Hertz、Volo、Netpoll等多个重点子项目,涵盖Go与Rust开发语言,上至框架下至网络库、编解码库、序列化库均是自研,各个项目既可独立使用也可搭配使用,并围绕这些项目,构建了完整的上下游生态。其中Kitex和Netpoll是2021年开源,Hertz与Volo于2022年开源。 CloudWeGo关 了真实的成本、性能和稳定性收益。 2.3 高性能 RPC 框架 Kitex 内外统一的开源实践 Kitex是CloudWeGo开源的第一个微服务框架,它是一个支持多协议的GoRPC框架,从网络库、序列化库到框架的实现基本完全自研的。特别地,Kitex对gRPC协议的支持使用了gRPC官方的源码,但是我们对gRPC的实现做了深度且定制的优化,所以Kitex支持的gRPC协议性能优于gRPC官方框架。 的代码,就会默认生成 Fastpb 的编解码代码,在发起 RPC 调用的时候,Kitex 也会默认使用 Fastpb。经测试,无论是编码还是解码,在效率和内存分配上,Fastpb 都远远优于官方 Protobuf 序列化库。 Kitex 开源后,我们针对 gRPC 做了一个专项的问题治理以及性能优化,目前已经把相关的优化提交到开源库,在 v0.4.0 版本发布。以 Unary 请求为例,Kitex相比官方 gRPC0 码力 | 68 页 | 24.07 MB | 4 月前3
共 336 条
- 1
- 2
- 3
- 4
- 5
- 6
- 34













