新闻中心
实现一个行情服务器该使用什么架构
2018-04-19
阅读()
来源:互联数据

实现一个行情服务器,支持10万级别的行情客户端连接,实时推送行情,用什么开源框架来搭建比较好,

目前想到用海外服务器来实现,不知道是否合适,或者有更好的选择?

实际上用海外服务器是十分简单的,下面给一个简单的行情服务器架构

行情服务器架构


首先假定需求是全端的,app web 甚至加上桌面客户端,那么需要:

1. app

分为android和ios两大平台,可以考虑使用react native,代码基本可以复用。

2. web前端

html css加上js,如上可以考虑用react完整技术栈,也可以用vue等其它类库。还需要一个或多个charts开源图表类库绘制前端图表。

3. 桌面客户端

使用electron。一次开发支持linux win macos三大平台,大部分代码可以和web前端复用,本地存储使用sqlite。

4. web后端

可选择的很多,python php java go ruby nodejs都可选,c c++就不要考虑了,不是不行,做web项目太累。后端提供rest风格的api就可以,所有的客户端调用同一套api。一般特定的开源框架说法,也是指向这一层,推荐一些个人最偏爱的,php - lumen,python - flask,java - spring,node - koa,go - denco,ruby当然是rails。。。

5. 数据库

10万客户端加实时行情量级并不是很大,就不建议马上上分库分表,高可用大集群之类的方案了。优先选择云端实例模式,比如阿里云的RDS。自己搭建的话,一主二从做好同步和读写分离,再加个延时冷备的库,基本够用。可选mysql或postgresql,mysql技术层面接受度会高很多。

6. 缓存

推荐使用redis,完全当缓存用,不要考虑持久化存储。初期随意混用会加大架构复杂度。redis也有云端实例直接购买使用,自己搭建可以搞个2 3个点的小集群,也够用了。

7. 队列

这里才是题设中的zeromq用武之地,但是我们有更好的选择。考虑稳定性,持久化,更多特性的,可以选用rabbitmq,完胜zeromq。考虑极致性能的,选用kafka。

8. 代理层

lvs集群接下所有网络请求再分发,选用云端产品的话不用考虑。

行情服务器架构

9. web服务器

nginx最佳选择,考虑openresty改版,很多全局逻辑,如限流等,可以在这层写lua脚本实现,简单强大。nginx配置反向代理,直接指向web后端提供的服务端口,web后端服务器上可以跑多进程,占用多个端口实现。

10. 跨服session

复用上面的redis缓存,session存储在缓存中。

11. 连接层

dns和域名,找个靠谱的域名商购买加备案,dns可以购买dnspod服务。链路最好全部https,需要花钱买证书,或者使用let's encrypt的免费证书。

12. 连接方式

实时行情实时性要求高,就推荐长连接的方式了,最佳选择websocket。轮询的方式也可以。

13. 服务器

行情服务器架构可以直接购买选用香港服务器的全套,加上带宽。这个规模下,自建的成本优势还体现不出来,直接使用可靠的香港IDC机房租用香港服务器,时间和资金成本都节约很多。互联数据或者其它服务商都可以考虑,实际测试比对之后选择。这里还是推荐互联数据域的金融业务服务器,由于处于香港金融结算中心,速度可靠。


互联数据HKT4提供香港服务器租用真实硬件独享,限时首月半价租用,全Tier4认证硬件设备,欢迎用户联系24小时在线工程师咨询。

行情服务器架构




相关阅读