TARS在优品财富各业务中的深度应用
Company: 优品财富
Location: 深圳
Industry: 金融

Company简介

优品财富管理股份有限Company(简称“优品财富”)是一家智能证券服务商,致力于以金融科技革新证券服务业,以大数据、AI技术提升证券服务业各环节效率,为个人投资者提供智能投顾服务,为证券市场经营机构提供各类智能解决方案。

面对个人投资者,优品财富打造了一站式智能投资服务平台“优品股票通”,为用户提供极速行情、智能资讯、智能选股以及智能投顾等服务,在全面行情、资讯服务以及深度智能应用的基础上,深度解决决策场景中的痛点和需求。

面向机构用户,Company立足于创新业务,通过输出技术和数据化服务能力赋能机构,提供多元化的智能证券服务解决方案,涵盖智能资讯、智能投顾、智能行情、量化平台、互联网投顾、用户画像以及数据软硬件终端产品等,协助机构提升运营及服务能力。

在技术方面,优品财富是金融Industry内为数不多能做到全栈式开发的中型技术团队。

挑战

  1. Company业务线广,系统繁多。Company没有一套整体的技术框架,面临的问题是开发效率低,运维成本高,系统稳定性没有保障。
  2. Company各团队之间技术语言不一定相同,无法很好地进行统一开发。
  3. 需要一整套运营平台,可以让开发只关注逻辑,容灾/发布/监控/调度完全做到自动化。以提高开发效率,系统的运维便捷性和稳定性。

解决方案

到目前为止,Company几乎全部业务,都已经迁移到TARS平台上面来。在语言选择方面,Company有对于性能要求极高的服务采用C++开发, 对于强WEB/强业务逻辑服务采用Node.JS全栈式开发, 对于大数据相关平台开发采用Java开发。目前线上已经有C++服务模块数近1500个,Node.JS服务模块数800多个,Java服务模块数近百个,并且每天都在新增服务模块。

在跨IDC走公网调用方面,开发通过一个TarsProxyServer的透明协议代理模块,各IDC的TarsProxyServer间保持心跳,做到对业务层透明,使用时只需要配置代理的endpoint信息即可,达到了不影响开发的前提下收敛外网的效果。

影响

  • 跨语言合作十分方便

由于Company和团队的历史原因,准备迁移到TARS时,Company的技术团队有好多个,语言也包含了Java,Node.JS与C++,各个服务之间的通信协议基本是基于短链的HTTP/WebService的,整体低效的缺点显而易见。而TARS所支持的语言也包含了上述的所有语言,后期迁移过程中,各个技术团队运转得十分顺畅,当通信整体到切换基于JCE的RPC调用后,无论是从性能指标上还是分工协作上都有了很大程度的提高。

  • 协议的扩展更方便

之前我们的证券行情系统使用的struct直接传输,无法扩充字段。国内证券在不停发展之中,每当新业务上线后,只能够绞尽脑汁寻找可以复用的字段,例如某个字段在对于股票标的表示成交量,对于期货标的表示持仓量,这对于新人来说是难以理解的。然而有时候,出现存在一些新业务实在找不到字段的时候,只能重新开发一个新协议。经过三五年的变化后,不仅协议多,而且字段复用情况严重,对于业务不熟悉的人,非常容易采坑,后面的开发接手后已经没有勇气做任何修改。切换到TARS后,解决了我们的一大痛点,由于TARS协议支持扩展,而且能够无缝兼容老版本客户端,我们可以做到一个业务只需要一个协议,同时每个字段各司其职,注释清晰,维护成本小了很多。

  • Projects的快速迭代更加顺畅

Company的业务比较广,C端和B端的战线都拉的比较长,服务之间的层级关系和依赖关系在切换到TARS之前是比较凌乱的。往往更新某一个功能或者接口的时候的影响范围相对难以确定,甚至有些是不可预知的。在使用TARS微服务设计之后,服务之间的关系一下清晰了很多,各个功能的迭代十分的顺畅,新老版本的兼容基本上也不再存在什么问题。

  • 可视化的运营平台工具让我们运维更高效

从机器管理到服务部署,再到数据指标监控,TARS给我们带来了一系列的可视化的管理工具。这一块无论是对于开发,测试还是运维都是十分友好的。不用再为某个接口的耗时和某个指标的消耗单独的写代码来进行监控,同时扩展的一些监控告紧的功能也让运维和后台开发同学更加的放心。

为什么选择TARS

Company业务线广,系统繁多。在使用TARS之前,Company没有一套整体的技术框架,面临的问题是开发效率低,运维成本高,系统稳定性没有保障。

TARS有C++/Node.JS/Java/PHP/Golang等多个语言版本,能够打通Company各团队技术语言障碍。同时它自带强大的运营平台,可以让开发只关注逻辑,容灾/发布/监控/调度完全做到自动化。不仅能够提高开发效率,同时在系统的运维便捷性和稳定性方面都将大大提高。

Company业务使用TARS现状

到目前为止,Company几乎全部业务,都已经迁移到TARS平台上面来。在语言选择方面,我们对于性能要求极高的服务采用C++开发, 对于强WEB/强业务逻辑服务采用Node.JS全栈式开发, 对于大数据相关平台开发采用Java开发。目前我们线上已经有C++服务模块数近1500个,Node.JS服务模块数800多个,Java服务模块数近百个,并且每天都在新增服务模块。

我们Company采用TARS架构典型的业务架构如下: