sbe 详解
SBE是用于金融行业的非常快速的序列化库,在本博客中,我将介绍一些使其快速发展的设计选择。
序列化的全部目的是对消息进行编码和解码,并且有很多可用的选项,例如XML,JSON,Protobufer,Thrift,Avro等。
XML / JSON是基于文本的编码/解码,在大多数情况下都很好,但是当延迟很重要时,这些基于文本的编码/解码就会成为瓶颈。
Protobuffer / Thrift / Avro是二进制选项,使用非常广泛。
SBE也是二进制的,是基于机械同情而构建的,以利用底层硬件(CPU缓存,预取程序,访问模式,管线指令等)的优势。
CPU和内存革命的小历史。
我们的行业看到了功能强大的8位,16位,32位,64位处理器,现在普通的台式机CPU可以执行近数十亿条指令,只要程序员能够编写程序来生成这种类型的负载即可。 内存也变得便宜,获得512 GB服务器非常容易。
我们必须改变编程方式以利用所有这些东西,数据结构和算法也必须改变。
让我们潜入sbe。
全栈方法
大多数系统依赖于运行时优化,但是SBE已采用全栈方法,并且第一级优化由编译器完成。