雪球在股市风暴下的高可用架构改造分享

2020-02-27 126浏览

  • 1.本⽂文根据唐福林⽼老师在“⾼高可⽤用架构”微信群所做的《股市⻛风暴下的雪球架构改造经验分享》整理⽽而 成,转发请注明来⾃自微信公众号ArchNotes。 唐福林,雪球⾸首席架构师,负责雪球业务快速增⻓长应对及服务性能与稳定架构优化⼯工作。毕业于北 京师范⼤大学,硕⼠士学位。之前曾任微博平台资深架构师,微博技术委员会成员。⻓长期关注并从事互 联⺴⽹网服务后端性能及稳定性架构优化⼯工作。 分享主题 ⼀一. 雪球公司介绍 ⼆二. 雪球当前总体架构 三. 雪球架构优化历程 四. 聊聊关于架构优化的⼀一些总结和感想 ⼀一. 雪球公司介绍 雪球 聪明的投资者都在这⾥里。 web 1.0:新闻资讯,股价信息,K线图 web 2.0:SNS 订阅,分享,聊天 web 3.0:移动 APP,交易闭环 雪球现在员⼯工数还不到100,其中技术⼈人员占⼀一半。去年9⽉月C轮融资4kw⼑刀。我们现在的技术栈由下 列组件组成:Java,Scala,Akka,Finagle,Nodejs,Docker ,Hadoop。我们当前是租⽤用IDC机 房⾃自建私有云,正在往“公私混合云”⽅方向发展。
  • 2.在雪球上,⽤用户可以获取沪深港美2w+股票的新闻信息,股价变化情况,也可以获取债券,期货, 基⾦金,⽐比特币,信托,理财,私募等等理财产品的各类信息,也可以关注雪球⽤用户建⽴立的百万组合, 订阅它们的实时调仓信息,还可以关注雪球⼤大V。雪球当前有百万⽇日活跃⽤用户,每天有4亿的API调 ⽤用。App Store 财务免费榜第 18 名。历史上曾排到财务第⼆二,总免费榜第 19。 ⼆二. 雪球当前总体架构 作为⼀一个典型的移动互联⺴⽹网创业公司,雪球的总体架构也是⾮非常典型的设计: 最上层是三个端:web端,android端和iOS端。流量⽐比例⼤大约为 2:4:4 。web3.0 的交易功能,在 web 端并不提供。 接⼊入层以及下⾯面的⼏几个层,都在我们的⾃自建机房内部。雪球当前只部署了⼀一个机房,还属于单机房 时代。正在进⾏行“私有云+公有云混合部署”⽅方案推进过程中。 我们当前使⽤用 nodejs 作为 web 端模板引擎。nodejs 模块与android 和 ios 的 app 模块⼀一起属于⼤大前 端团队负责。 再往下是位于 nginx 后⾯面的 api 模块。跟 linkedin 的 leo 和微博的 v4 ⼀一样,雪球也有⼀一个遗留的⼤大 ⼀一统系统,名字就叫 snowball 。最初,所有的逻辑都在 snowball 中实现的。后来慢慢的拆出去了 很多 rpc 服务,再后来慢慢的拆出去了⼀一些 http api 做成了独⽴立业务,但即便如此,snowball 仍然 是雪球系统中最⼤大的⼀一个部署单元。 在需要性能的地⽅方,我们使⽤用 netty 搭建了⼀一些独⽴立的接⼝口,⽐比如 quoto server,是⽤用来提供开盘期 间每秒⼀一次的股价查询服务,单机 qps 5w+,这个⼀一会再细说;⽽而 IM 服务,起初设计⾥里是⽤用来提供 聊天服务,⽽而现在,它最⼤大的⽤用途是提供⼀一个可靠的 push 通道,提供 5w/s 的消息下发容量,这个 也⼀一会再细说。 雪球的服务化拆分及治理采⽤用 twitter 开源的 finagle rpc 框架,并在上⾯面进⾏行了⼀一些⼆二次开发和定 制。定制的功能主要集中在 access log 增强,和 fail fast,fail over 策略及降级开关等。 finagle 的 实现⽐比较复杂,debug 和⼆二次开发的⻔门槛较⾼高,团队内部对此也进⾏行了⼀一些讨论。 雪球的业务⽐比较复杂,在服务层中,⼤大致可以分为⼏几类:第⼀一类是web1.0,2.0 及基础服务,我们 称为社区,包括⽤用户,帖⼦子,新闻,股价,搜索等等,类⽐比对象就是新浪财经⻔门户+微博;第⼆二类是
  • 3.组合及推荐,主要提供股票投资策略的展⽰示和建议,类⽐比对象是美国的motif;第三类是通道,类似 股市中的“⽀支付宝”,接⼊入多家券商,提供瞬间开户,⼀一键下单等等各种⽅方便操作的功能。 雪球的业务实现中,包含很多异步计算逻辑,⽐比如搜索建索引,⽐比如股票涨跌停发通知,⽐比如组合 收益计算等等,为此,我们设计了⼀一个独⽴立的 Thread/Task 模块,⽅方便管理所有的后台计算任务。 但随着这些 task 越来越多,逻辑差异越来越⼤大,⼀一个统⼀一的模块并不是总是最佳的⽅方案,所以,我 们⼜又把它拆成了两⼤大类:流式的,和批量式的。 雪球的推荐体系包括组合推荐“买什么”和个性化推荐。我们最近正在重新梳理我们的⼤大数据体系,这 个感兴趣的话可以单聊。 最下⾯面是基础设施层。雪球基础设施层包括:redis,mysql,mq,zk,hdfs,以及容器 docker。 线上服务之外,我们的开发及后台设施也很典型:gitlab开发,jenkins打包,zabbix 监控系统向 openfalcon 迁移,redimine向confluence迁移,jira,以及内部开发的 skiing 后台管理系统。 三. 雪球架构优化历程 ⾸首先描述⼀一下标题中的“股市动荡”定语修饰词吧: 上证指数从年初的3000点半年时间涨到了5000多,6⽉月12号达到最⾼高点5200点,然后就急转直下, 最⼤大单⽇日跌幅 8.48%,⼀一路跌回4000点以下。最近⼀一周都在3900多徘徊。 3⽉月最后⼀一周,A股开户 166万户,超过历史最⾼高纪录 2007年5⽉月第⼆二周165万户。 4⽉月份,证监会宣布A股⽀支持单⽤用户开设多账户。 6⽉月底,证⾦金公司代表国家队⼊入场救市。 7⽉月份,证监会宣布严打场外配资。
  • 4.7⽉月27号将近2000股跌停,IM推送消息数超过平时峰值300倍 外⺴⽹网带宽消耗,⼀一年10倍的增⻓长 中国好声⾳音⼲⼴广告第⼀一晚,带来超过平时峰值200倍的注册量 挑战:⼩小 VS ⼤大: ⼩小:⼩小公司的体量,团队⼩小,机器规模⼩小 ⼤大:堪⽐比⼤大公司的业务线数量,业务复杂度,瞬间峰值冲击 雪球的业务线 = 1个新浪财经 + 1 个微博 + 1 个 motif + 1 个⼤大智慧/同花顺。由于基数⼩小,API调⽤用 瞬间峰值⼤大约为平时峰值的 30+ 倍。 挑战:快速增⻓长,移动互联⺴⽹网 + ⾦金融,⻛风⼝口,A股⼤大盘剧烈波动。 ⾸首先,在app端,在我们核⼼心业务从 web2.0 sns 向 3.0 移动交易闭环进化的过程中,我们开发了⼀一 个⾃自⼰己的 hybrid 框架:本地原⽣生框架,加离线 h5 ⻚页⾯面,以此来⽀支撑我们的快速业务迭代。当前, 雪球前端可以做到 2 周⼀一个版本,且同时并⾏行推进 3 个版本:⼀一个在 app store 等待审核上线,⼀一 个在内测或公测,⼀一个在开发。我们的前端架构师孟祥宇在今年的 wot 上有⼀一个关于这⽅方⾯面的详细 分享,有兴趣的可以稍后再深⼊入了解。 雪球App实践—构建灵活、可靠的Hybrid框架http://wot.51cto.com/2015mobile/'>http://wot.51cto.com/2015mobile/