一、概述
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服务器判断本地文件校验码与上层服务器是否一致,如果不一致,则删除本地文件,把上层服务器文件同步到本地。
如图: