SlideShare une entreprise Scribd logo
1  sur  46
Télécharger pour lire hors ligne
股市动荡下的
雪球架构进化历程
@唐福林 雪球首席架构师
q  关于雪球,关于我
q  雪球总体架构
q  雪球架构优化历程
q  一些总结和感想
大纲
q  雪球 聪明的投资者都在这里
q  web 1.0:新闻资讯,股价信息,K线图
q  web 2.0:SNS 订阅,分享,聊天
q  web 3.0:移动 APP,交易闭环
q  http://xueqiu.com/about
q  内部推荐简历送 IPhone6
关于雪球
q  员工 100+ ,技术人员占一半
q  2014.9 C轮 $40M by RENN
q  Java,Scala,Akka,Finagle,
Nodejs,Docker ,Hadoop
q  租用IDC机房自建私有云,正在往“公有
云+私有云”方向发展
关于雪球
q  沪深港美2w+股票
q  债券,期货,基金,比特币,信托,理财,
私募。。。
q  百万组合,实时调仓信息
q  百万日活,每天4亿API调用(不算自动
轮询接口)
关于雪球
q  前新浪微博架构师,微博ID @唐福林
q  微博短链 t.cn
q  微博计数器 redis,rediscounter
q  微博用户关系服务
q  微博稳定性、性能改进
关于我
q  雪球首席架构师,雪球ID @唐福林
q  性能,稳定性,代码质量改进
q  基础组件,微服务容器建设
q  XDC 雪球数据中心
关于我
q  关于雪球,关于我
q  雪球总体架构
q  雪球架构优化历程
q  一些总结和感想
大纲
雪球总体架构
q  关于雪球,关于我
q  雪球总体架构
q  雪球架构优化历程
q  一些总结和感想
大纲
2015年A股大盘走势
IM 推送消息数
外网带宽消耗
q  小 VS 大:
q  小:小公司的体量,团队小,机器规模小
q  大:堪比大公司的业务线数量,业务复杂
度,瞬间峰值冲击
挑战
q  快速增长
q  移动互联网 + 金融,风口
q  A股大盘剧烈波动
挑战
q  前端
q  Hybrid APP,端到端可用性监控
q  接入层
q  轮询Server优化
q  业务层
q  股价提醒,IM 推送,注册逻辑 …
q  通用优化
q  JDK8,config service,metrics
优化
q  雪球App实践—构建灵活、可靠的
Hybrid框架
q  http://wot.51cto.com/2015mobile/
q  http://down.51cto.com/data/
2080769
q  原生框架 + 离线H5页面
Hybrid APP
q  《移动时代端到端的稳定性保障》
q  每个请求里带上前一个请求的结果
q  succ or fail : 1 char
q  失败原因:0 - 1 char
q  请求接口编号: 1 char
q  请求耗时:2 - 3 char
q  其它:网络制式,etc
APP端可用性监控
q  开盘期间,每个在线客户端(包括web)
每1秒轮询一次当前用户关注的股票的价
格变动情况
q  Netty + 本地内存存储
q  主动更新
Quote Server
q  雪球上热门股票拥有超过 50w 粉丝(招
商银行,苏宁云商)
q  粉丝可以设置:当这支股票涨幅或跌幅超
过 x%(默认7%)时提醒我
q  曾经连续3天,每天超过1000股跌停,证
监会开了一个会,于是接下来2天超过
1000股涨停
股价提醒性能优化
q  原来做法:股票涨(跌)x%,扫一遍粉
丝列表,过滤出所有符合条件的粉丝,推
送消息
q  新做法:预先建立索引,开盘期间载入内
存
q  1%:uid1,uid2
q  2%:uid3,uid4,uid5
q  3%:uid6
q  问题:有时候嫌太及时了:频繁跌停,打
开跌停,再跌停,再打开。。。的时候
股价提醒性能优化(2)
q  聊天功能:送达率第一
q  雪球IM:Netty + 自定义网络协议
q  Akka : 每个在线client一个actor
q  推模式:client 在线情况下使用推模式
q  多端同步:单账号多端可登录,并保持各
种状态同步
IM 推送性能优化
q  推送功能:瞬间峰值性能第一
q  优化
q  分配更多资源:推送账号actor池
q  精简业务逻辑:重复消息只存id,实时提醒
内容不推历史设备,不更新非活跃设备的
Session列表等等
q  本地缓存:拉黑等无法精简的业务逻辑迁
移到本地缓存
q  优化代码:异步加密存储,去除不合理的
akka 使用
IM 推送性能优化(2)
q  2015.7.10/17/24 中国好声音
q  预估广告播出期间2小时新注册100万
q  压测发现 DB 成为瓶颈:
q  昵称检测 cache miss > 40%
q  昵称禁用词 where like 模糊查询
q  手机号是否注册 cache miss > 80%
q  注册新用户:5 insert
注册模块优化
q  优化:
q  redis store:昵称,手机号
q  本地存储:昵称禁用词
q  业务流程优化:DB insert 操作同步改
异步
注册模块优化(2)
q  合作方合规要求:业务单元部署到合作方
内网,用户的敏感数据不允许离开进程内
存
q  业务本身要求:业务单元本身为有状态服
务,业务单元高可用
前置模块HA
q  解决方案:
q  Hazelcast In-Memory Data Grid
q  replication map
q  java -XX:+DisableAttachMechanism
-XX:-UsePerfData
前置模块HA(2)
q  一支股票可能在超过20万个组合里(南车
北车中车,暴风科技)
q  离线计算,存储计算后的结果
q  股价3秒变一次,涉及到这支股票的所有
组合理论上也需要每 3 秒重新计算一次
组合净值计算性能优化
q  Akka
q  分级 + 批量
q  构建高可用的雪球投资组合系统技术实践
q  http://sz2015.archsummit.com/
speakers/201825
组合净值计算性能优化(2)
q  JDK6 升级 JDK8
q  -XX:+ParallelRefProcEnabled -XX:-
CMSClassUnloadingEnabled
q  Config Center和开关降级
通用优化
q  统一所有client
q  redis, mysql, http, mq
q  统一metrics体系
q  dropwizard + logback appender
通用优化(2)
q  关于雪球,关于我
q  雪球总体架构
q  雪球架构优化历程
q  一些总结和感想
大纲
q  一个单一架构的大服务 VS 一堆架构各异
的小服务
总结
q  高大上的架构 VS 可以工作的架构
q  优化到极致 VS 优化到可以接受
总结
q  重写
q  重构
q  裱糊匠
q  最小改动
总结
q  数据指标!数据指标!数据指标!
q  qps
q  p99
q  error rate
q  USE method:Utilization,
Saturation,error
(Velocity 2013, Performance Methodologies for Production
Systems,Brendan Gregg)
总结
q  技术栈的一致性和简单性
总结
q  能用cache的地方绝不用db
q  能异步的地方,绝不同步
总结
q  特事特办:业务在发展,需求在变化,实
现方式也需要跟着变化
总结
q  技术人员的自我修养:
q  知道什么是好的结果
q  知道如何去追求好的结果
q  能够给出好的结果
感想
q  技术方案:
q  20倍设计,10倍实现,3倍部署
q  扩展性:凡事留一线,以后好相见
感想
q  技术实现:
q  DevOps:上线后还是你自己维护的项目,
实现的时候注意各种出错和边界的处理
q  用户投诉的时候需要你去排查,实现的时候
一定要记得可复现,可追踪
q  快速实现,不是“随便实现”,万一火了呢:
性能,方便扩容
感想
Keep	Calm	
And	
Ask	Me	Anything

Contenu connexe

Similaire à 股市动荡下的雪球架构进化历程

氪月报2011年1月份
氪月报2011年1月份氪月报2011年1月份
氪月报2011年1月份Chada Chiu
 
移动互联网服务端架构介绍
移动互联网服务端架构介绍移动互联网服务端架构介绍
移动互联网服务端架构介绍arganzheng
 
[mobidays] KM-Report3月 韩游市场三巨头,三角关系背后的隐情
[mobidays] KM-Report3月 韩游市场三巨头,三角关系背后的隐情[mobidays] KM-Report3月 韩游市场三巨头,三角关系背后的隐情
[mobidays] KM-Report3月 韩游市场三巨头,三角关系背后的隐情Mobidays
 
20160429 eSignal 體驗會
20160429 eSignal 體驗會20160429 eSignal 體驗會
20160429 eSignal 體驗會Datanet KC
 
2011年8月创业投资报告 资本实验室
2011年8月创业投资报告 资本实验室2011年8月创业投资报告 资本实验室
2011年8月创业投资报告 资本实验室coinsay
 
淺談台灣巨量資料產業供應鏈串聯現況
淺談台灣巨量資料產業供應鏈串聯現況淺談台灣巨量資料產業供應鏈串聯現況
淺談台灣巨量資料產業供應鏈串聯現況Jazz Yao-Tsung Wang
 

Similaire à 股市动荡下的雪球架构进化历程 (6)

氪月报2011年1月份
氪月报2011年1月份氪月报2011年1月份
氪月报2011年1月份
 
移动互联网服务端架构介绍
移动互联网服务端架构介绍移动互联网服务端架构介绍
移动互联网服务端架构介绍
 
[mobidays] KM-Report3月 韩游市场三巨头,三角关系背后的隐情
[mobidays] KM-Report3月 韩游市场三巨头,三角关系背后的隐情[mobidays] KM-Report3月 韩游市场三巨头,三角关系背后的隐情
[mobidays] KM-Report3月 韩游市场三巨头,三角关系背后的隐情
 
20160429 eSignal 體驗會
20160429 eSignal 體驗會20160429 eSignal 體驗會
20160429 eSignal 體驗會
 
2011年8月创业投资报告 资本实验室
2011年8月创业投资报告 资本实验室2011年8月创业投资报告 资本实验室
2011年8月创业投资报告 资本实验室
 
淺談台灣巨量資料產業供應鏈串聯現況
淺談台灣巨量資料產業供應鏈串聯現況淺談台灣巨量資料產業供應鏈串聯現況
淺談台灣巨量資料產業供應鏈串聯現況
 

股市动荡下的雪球架构进化历程