Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
Physical Address
304 North Cardinal St.
Dorchester Center, MA 02124
ISO/IEC 25390:2025 定义了简单二进制编码(Simple Binary Encoding, SBE)——一种由 FIX 交易社区最初为高性能金融交易系统开发的二进制线路格式。与使用人类可读文本的传统 FIX 标签-值编码不同,SBE 使用原生二进制数据类型,实现了大幅降低的延迟和更高的吞吐量。该标准通过 ISO/IEC JTC 1 PAS(可公开获取规范)程序被采纳,成为金融消息处理的官方国际标准。
SBE 围绕以下几个关键原则进行设计:
| 特性 | FIX 标签-值(传统) | FIX SBE(ISO 25390) |
|---|---|---|
| 编码方式 | ASCII文本(如”35=D|55=IBM|54=1|…”) | 二进制(字段位于已知字节偏移量) |
| 解析模型 | 顺序扫描查找标签号 | 按偏移量直接内存访问 |
| 内存分配 | 每个字段的字符串分配 | 可实现零分配解码 |
| 解码延迟 | 微秒到毫秒级 | 亚微秒级(通常小于100纳秒) |
| 模式定义 | 隐式(注释/文档中的字段定义) | 显式XML模式(XSD) |
| 线路大小 | 大(冗余文本) | 紧凑(原生二进制大小+最小帧头) |
| 版本管理 | 新增标签;废弃旧标签 | 带有向后兼容性的模式版本控制 |
SBE 支持一组全面的数据类型,映射到原生二进制表示:
| FIX 数据类型 | SBE 编码 | 原始类型 | 说明 |
|---|---|---|---|
| int | 整数 | int8/int16/int32/int64 | 可配置字节序(小端/大端) |
| Price/Amt | 十进制 | 复合类型(指数+尾数) | 可配置精度的定点数 |
| Qty | 整数或十进制 | 按指定类型 | 范围属性约束有效值 |
| String | 变长字符串 | 长度前缀+字符数据 | 长度字段位于数据之前 |
| Char | 定长字符数组 | 字节数组(无长度前缀) | 用于定宽字段 |
| Float | 浮点数 | float/float64 | IEEE 754,支持空值 |
| UTCTimestamp | 日期/时间编码 | 基于纪元(可配置单位) | 可达纳秒精度 |
| MultipleValueValue | 多值选择 | 位集合 | 高效的标志编码 |
| Boolean | 枚举 | uint8 或类似类型 | 映射为二值枚举 |
每个 SBE 消息由三部分组成:一个帧头(由会话协议提供,如简单开放帧头)、一个 SBE 消息编码头(包含模式ID、模板ID、模式版本、块长度、重复组和变长字段计数)以及消息体。消息体是一个平坦的字段序列,可选地后跟重复组和变长数据。
SBE 支持条目大小固定的重复组,每个条目具有已知的块长度。组可以嵌套,支持分层数据结构。空组(numInGroup = 0)非常紧凑——它们完全省略了组数据。
SBE 消息模式以符合标准中定义的 XSD 模式的 XML 文档表示。模式定义了数据编码、消息模板和重复组结构。该标准的版本控制和扩展机制(第8章)尤为精巧——可以在新版本的模式中向消息添加字段,而不会破坏旧版本的解码器。