行情服系统总体设计-Cache服务器
一、概述
1、什么是cache服务器
Cache服务器是新行情系统中的一个部件,对远程的客户端提供行情数据服务,对客户端来说所实现的功能和转码服务器一致。
那么既然cache服务器实现和转码服务器一致的功能,为什么又要在行情系统中提供这个部件呢?那是因为cache服务器有一个最大的特点,就是本地不需要有任何数据就可以进行服务,可以很好的迎合券商运营的零维护、低成本维护的要求,而这一点转码服务器是无法做到的。
注:Cache服务器很多模块与转码服务器类似,并且共用两个Lib,此文档仅描述与转码服务器有区别的模块。
2、cache服务器的部署
转码服务器接入行情传输系统获得行情数据,并由此生成历史数据,而由于cache服务器本地没有任何数据,无法通过行情传输系统获得历史数据提供服务,所以cache服务器需要接入转码服务器或者cache服务器以获得服务所需要的历史数据。
3、cache服务器的内部构架
如上图所示,cache服务器由接入层、数据转码层和服务层构成。
模块
说明
接入层
向接入的上层行情系统请求服务器工作所必须的基本数据,包括市场信息、静态数据、动态数据等等。
当前上层行情系统无法完成指定的服务时,自动切换到稳定一个稳定的行情系统。
当数据转码层无法向服务层提供完整的数据时,向接入的上层行情系统请求所需数据。
数据转码层补齐本地历史数据时,向接入的上层行情系统请求所需数据。
接受上层行情系统推送动态数据更新数据转码层的实时数据。
数据转码层
向服务层提供实时、历史数据,如果当前数据不能满足需要则通过接入层向上层行情系统请求数据。
每天通过接入层和上层行情系统同步历史数据。
服务层
通过下层的平台对客户端进行服务,通过转码层获得所需的实时、历史数据。
缓存部分历史数据。
和转码服务器的这部分模块(完全)相同。
二、接入层
Cache服务器的接入层实际上与行情转码服务器的驱动层功能类似,都是向数据转码层提供统一的接口请求和推送数据。
接入层内部的实现是采用TCP/IP连接的方式向转码服务器取数据,为了更好的利用带宽,需要同时维护一个推送通道和若干个请求通道。请求和推送通道使用不同的端口,以便区分。
推送通道会一直发送心跳包维持和检测链路,一旦发现链路无法联通,或行情中指定时间没有推送数据到达,则认为此服务连接已不可用。这时候如果配置了多个服务器,则切换连接。切换连接成功后,数据层暂停服务,开始初始化数据,初始化完成再提供服务。
如图所示:
每个请求/推送通道,都由EngineLib的MsyncClientComm类派生。
推送通道
请求通道
接入层接口
三、Cache服务器状态逻辑
1.概述
Cache服务器的状态变化并不是通过时间判断,而是由其所连接的转码服务器状态决定。转码服务器会把自身状态通过市场状态包推送到Cache服务器。
如图所示:
Cache服务器根据市场推送包的状态变化改变服务状态。由ProcessIO的线程判断服务状态,进行初始化、收盘等工作。
2.初始化逻辑
Cache服务器的实时数据不保存本地文件,而是初始化时全部从转码服务器请求。
四.历史数据补齐与校验
Cache服务器的收盘不是从本地数据生成历史文件,而是从转码服务器请求。
如图:
客户端请求历史数据时,Cache服务器判断本地文件校验码与上层服务器是否一致,如果不一致,则删除本地文件,把上层服务器文件同步到本地。
如图:
————————————————
版权声明:本文为CSDN博主「Hanson85」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/ljemailbox/article/details/96560234