ramy  2020-11-12 11:22:52  OpenCV |   查看评论   

数字动能发布量化金融C++RPC框架

 在发布“投研投顾一体化”产品及整体解决方案后,数字动能在量化金融领域的技术积累基础上,发布其完全自主研发,可实现多业务模块间高速稳定通讯的C++RPC分布式通讯框架 –xRPC。xRPC是国内首个面向量化金融领域,基于C++的RPC通讯框架,可广泛应用于金融领域有高算力、大数据传输需求的多业务间通讯场景,是金融行业实现集中式业务中台,解决业务间互联互通的核心通讯技术。

 

一、投研投顾一体化的多业务场景需要分布式通讯框架支持

 

数字动能自成立以来专注于量化技术在资产管理业务中的探索和实践,利用金融工程+软件工程为特点的量化技术,数字动能先后陆续落地了量化策略交易终端AT、策略集中业务中台iMOM和SMD指数分析系统等量化投研产品。业务涵盖了量化投研生产,研究治理,再到智能投顾手机端的整个投研投顾产品线,产品间既互相联系,又互相独立。结合自身经验积累,2017年,数字动能面向大资管业务提出“投研投顾一体化”整体解决方案,目前在券商、期货和公募基金公司已经陆续获得应用案例。

 

数字动能基于量化科技的创新步伐并未停止,在实践中,“投研投顾一体化”解决方案以产品为中心的设计模式将迎来更大的变革。针对投研投顾中的大量定制化、业务多样、功能场景复杂的特点,解决方案产品间需要解决跨部门、跨业务、多场景业务整合和业务间数据通讯问题。要构建好投研前端、管理中台和业务转化的投研投顾一体化解决方案,一个可以组合更灵活、业务细粒度更高、 开放性更强的投研集中业务平台成为技术实现的难点。解决这些问题的首要关键技术在于,是否可以构建出一套统一的通讯方式,既可以满足业务/应用间的通讯需要,又要兼顾金融行业高速稳定特性的通讯框架。在定制类投研业务模块的开发过程中,通过约定的分布式通讯协议,实现服务间高速通讯。业界普遍采用的RPC通讯方式成为了首选。  

 

二、通用RPC框架介绍

 

Remote Prodecure Call是程序间的远程调用的简称,业界目前普遍采用RPC实现程序间调用,一个标准的RPC调用过程如图1所示:

Remote Prodecure Call

图1

 

如图1,两个程序之间能够通信的前提,必须要有一个服务发现机制。传统的做法是双方先约定好地址,在各个服务都提前知道对方地址的前提下实现通讯,这种方式叫静态路由。静态路由的通讯方式在一般情况下可以满足简单的程序间调用需求。但是随着业务的发展,服务数量的增多让静态路由变得很难满足需求,同时后台服务有动态上下线的需求,静态路由表更新不及时将导致一系列问题。为了解决静态路由问题,大部分RPC框架引入了服务注册中心来实现动态路由的功能。如下图2所示:

省略了序列化/反序列化,运行时管理层以及传输层的步骤

图2(注:此图省略了序列化/反序列化,运行时管理层以及传输层的步骤)

 

动态路由改变了原来的应用方式,被调用方服务启动的时候,先把自身的地址注册到服务注册中心。调用方发起RPC调用之前,先到服务注册中心里面获取被调用方的地址信息后才能发起RPC请求。

 

三、xRPC框架的提出

 

数字动能在解决投研投顾一体化解决方案中,一些特殊服务(如回测、高频数据传输等)由于信息传输频繁,数据并发量大和信息传递种类繁多,可能会产生硬件资源或网络资源消耗,通讯效能降低的情况。在实践中,我们认为RPC框架还应有更多的改进空间,数字动能架构组着手改进RPC通讯框架,以提升应用间的通讯效率,提高信息交换的稳定性。

 

四、xRPC的设计目的

 

A、强量化金融(算力调度、大数据量传输)应用场景

 

B、需要基于网络层的高速数据传输支持

 

C、带数据可靠性校验的稳定通讯支持

 

D、需要为服务/应用提供更高效的纯异步并发调用

 

E、增强RPC动态路由算法

 

xRPC的设计目的是为了更好的满足量化业务场景的高算力、高稳定性和极速传输需要的服务/应用间调用。通过对传统的RPC通讯框架进行全新设计,xRPC对服务间的通讯稳定性、可靠性和通讯性能进行了深度优化。xRPC分布式框架协议是面向量化金融领域(特别是面向投研投顾的应用场景)的纯异步高性能框架。

xRPC的通讯方式示意图

xRPC的通讯方式示意图

 

五、xRPC框架的特点

 

1、xRPC自带服务注册中心和动态路由方式

 

和其他RPC框架不同,xRPC同时本地缓存有一份路由表。在应用服务启动时,xPRC协议会要求应用服务把自身的所有服务信息以及网络地址注册到服务注册中心里。发送请求时,如果本地路由的管理层没有发现相应的服务地址信息,xRPC会根据协议约定,先到服务注册中心获取相应服务的地址信息,由本地路由管理层直接使用长连接到对方的路由管理层中,后面如果再次发送到同一个服务里面的时候,不再需要从服务注册中心获取, 并且双方是保持连接的, 能够直接感知对方的状态, 不需要再通过服务注册中心, 这种方式同时也能够很好的降低服务注册中心的压力。

 

2、xRPC全新设计的高性能序列化方法

 

根据量化金融的业务使用特点,把特定业务场景松耦合至多个服务间交互的直接代价就是增加了服务间通讯压力,对服务间相互调用的性能要求变得极其苛刻。xPRC对RPC框架中的序列化方式进行全新设计重构,设计出了一个高性能的序列化与反序列化的方法,来满足量化金融对性能要求极其苛刻的场景。

 

xSerial:全新的高速RPC的序列化方法

 

A、对数据类型的改进 

 

xRPC的新序列化方法被称为xSerial,xSerial目前除了支持基本类型之外, 还支持了list、set、map。xSerial在序列化之前,可以快速并且精确的计算出数据序列化后的所占用的内存大小,提前申请好对应大小的内存,避免了在序列化中既要序列化又要动态扩张内存的动作所带来的性能损失。xSerial的C++的使用方法如下:

xSerial:全新的高速RPC的序列化方法

 

除特别注明外,本站所有文章均为 赢咖4注册 原创,转载请注明出处来自数字动能发布量化金融C++RPC框架

留言与评论(共有 0 条评论)
   
验证码:
[lianlun]1[/lianlun]