Submit Search
Upload
雪球服务化实践历程.Print
•
1 like
•
3,275 views
fulin tang
Follow
2015年 top100 summit 上的分享 http://top100summit.com/
Read less
Read more
Engineering
Report
Share
Report
Share
1 of 18
Download now
Download to read offline
Recommended
移动时代端到端的稳定性保障经验谈
移动时代端到端的稳定性保障经验谈
Tang Fulin
股市动荡下的雪球架构进化历程
股市动荡下的雪球架构进化历程
Tang Fulin
雪球大数据体系实践
雪球大数据体系实践
fulin tang
微服務的基礎建設 - Service Discovery, Andrew Wu
微服務的基礎建設 - Service Discovery, Andrew Wu
Andrew Wu
美团网技术部 - 基于OpenvSwitch/Openflow的云平台网络安全实践
美团网技术部 - 基于OpenvSwitch/Openflow的云平台网络安全实践
meecheng
基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展
agen
一个Nosql的故事
一个Nosql的故事
fulin tang
订阅互联网
订阅互联网
fulin tang
Recommended
移动时代端到端的稳定性保障经验谈
移动时代端到端的稳定性保障经验谈
Tang Fulin
股市动荡下的雪球架构进化历程
股市动荡下的雪球架构进化历程
Tang Fulin
雪球大数据体系实践
雪球大数据体系实践
fulin tang
微服務的基礎建設 - Service Discovery, Andrew Wu
微服務的基礎建設 - Service Discovery, Andrew Wu
Andrew Wu
美团网技术部 - 基于OpenvSwitch/Openflow的云平台网络安全实践
美团网技术部 - 基于OpenvSwitch/Openflow的云平台网络安全实践
meecheng
基于Greasemonkey的Firefox浏览器扩展
基于Greasemonkey的Firefox浏览器扩展
agen
一个Nosql的故事
一个Nosql的故事
fulin tang
订阅互联网
订阅互联网
fulin tang
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
锐 张
移动互联网服务端架构介绍
移动互联网服务端架构介绍
arganzheng
91APP: 從 "零" 開始的 DevOps
91APP: 從 "零" 開始的 DevOps
Andrew Wu
IDC大会:新浪SAE架构与设计
IDC大会:新浪SAE架构与设计
Xi Zeng
Top100summit前端的云时代支付宝前端平台架构 王保平
Top100summit前端的云时代支付宝前端平台架构 王保平
drewz lin
Yog Framework
Yog Framework
fansekey
twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事
twMVC
Weibo lamp improvements
Weibo lamp improvements
Xinchen Hui
Bruce-輕鬆上手Asp.net web api 2.1.2
Bruce-輕鬆上手Asp.net web api 2.1.2
Study4TW
輕鬆上手ASP.NET Web API 2.1.2
輕鬆上手ASP.NET Web API 2.1.2
Bruce Chen
Spark在苏宁云商的实践及经验分享
Spark在苏宁云商的实践及经验分享
alipay
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
Scourgen Hong
4.陈群-唯品会大规模Redis集群存储架构演进.pdf
4.陈群-唯品会大规模Redis集群存储架构演进.pdf
StevenShing
Nodejs & NAE
Nodejs & NAE
q3boy
海通证券金融云思考与实践(数据技术嘉年华2017)
海通证券金融云思考与实践(数据技术嘉年华2017)
Zhaoyang Wang
快!快!快! 互联网第一条军规
快!快!快! 互联网第一条军规
yangdj
Gops2016 云端基于Docker的微服务与持续交付实践
Gops2016 云端基于Docker的微服务与持续交付实践
Li Yi
How do we manage more than one thousand of Pegasus clusters - engine part
How do we manage more than one thousand of Pegasus clusters - engine part
acelyc1112009
Full stack-development with node js
Full stack-development with node js
Xuefeng Zhang
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC
我的奋斗 @ weibo
我的奋斗 @ weibo
fulin tang
Redis大数据之路 dtcc-唐福林
Redis大数据之路 dtcc-唐福林
fulin tang
More Related Content
Similar to 雪球服务化实践历程.Print
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
锐 张
移动互联网服务端架构介绍
移动互联网服务端架构介绍
arganzheng
91APP: 從 "零" 開始的 DevOps
91APP: 從 "零" 開始的 DevOps
Andrew Wu
IDC大会:新浪SAE架构与设计
IDC大会:新浪SAE架构与设计
Xi Zeng
Top100summit前端的云时代支付宝前端平台架构 王保平
Top100summit前端的云时代支付宝前端平台架构 王保平
drewz lin
Yog Framework
Yog Framework
fansekey
twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事
twMVC
Weibo lamp improvements
Weibo lamp improvements
Xinchen Hui
Bruce-輕鬆上手Asp.net web api 2.1.2
Bruce-輕鬆上手Asp.net web api 2.1.2
Study4TW
輕鬆上手ASP.NET Web API 2.1.2
輕鬆上手ASP.NET Web API 2.1.2
Bruce Chen
Spark在苏宁云商的实践及经验分享
Spark在苏宁云商的实践及经验分享
alipay
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
Scourgen Hong
4.陈群-唯品会大规模Redis集群存储架构演进.pdf
4.陈群-唯品会大规模Redis集群存储架构演进.pdf
StevenShing
Nodejs & NAE
Nodejs & NAE
q3boy
海通证券金融云思考与实践(数据技术嘉年华2017)
海通证券金融云思考与实践(数据技术嘉年华2017)
Zhaoyang Wang
快!快!快! 互联网第一条军规
快!快!快! 互联网第一条军规
yangdj
Gops2016 云端基于Docker的微服务与持续交付实践
Gops2016 云端基于Docker的微服务与持续交付实践
Li Yi
How do we manage more than one thousand of Pegasus clusters - engine part
How do we manage more than one thousand of Pegasus clusters - engine part
acelyc1112009
Full stack-development with node js
Full stack-development with node js
Xuefeng Zhang
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC
Similar to 雪球服务化实践历程.Print
(20)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
移动互联网服务端架构介绍
移动互联网服务端架构介绍
91APP: 從 "零" 開始的 DevOps
91APP: 從 "零" 開始的 DevOps
IDC大会:新浪SAE架构与设计
IDC大会:新浪SAE架构与设计
Top100summit前端的云时代支付宝前端平台架构 王保平
Top100summit前端的云时代支付宝前端平台架构 王保平
Yog Framework
Yog Framework
twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事
Weibo lamp improvements
Weibo lamp improvements
Bruce-輕鬆上手Asp.net web api 2.1.2
Bruce-輕鬆上手Asp.net web api 2.1.2
輕鬆上手ASP.NET Web API 2.1.2
輕鬆上手ASP.NET Web API 2.1.2
Spark在苏宁云商的实践及经验分享
Spark在苏宁云商的实践及经验分享
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
4.陈群-唯品会大规模Redis集群存储架构演进.pdf
4.陈群-唯品会大规模Redis集群存储架构演进.pdf
Nodejs & NAE
Nodejs & NAE
海通证券金融云思考与实践(数据技术嘉年华2017)
海通证券金融云思考与实践(数据技术嘉年华2017)
快!快!快! 互联网第一条军规
快!快!快! 互联网第一条军规
Gops2016 云端基于Docker的微服务与持续交付实践
Gops2016 云端基于Docker的微服务与持续交付实践
How do we manage more than one thousand of Pegasus clusters - engine part
How do we manage more than one thousand of Pegasus clusters - engine part
Full stack-development with node js
Full stack-development with node js
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
More from fulin tang
我的奋斗 @ weibo
我的奋斗 @ weibo
fulin tang
Redis大数据之路 dtcc-唐福林
Redis大数据之路 dtcc-唐福林
fulin tang
新浪微博开放平台中的 Redis 实践
新浪微博开放平台中的 Redis 实践
fulin tang
Redis 坑
Redis 坑
fulin tang
Gizzard, DAL and more
Gizzard, DAL and more
fulin tang
音乐搜索的极致
音乐搜索的极致
fulin tang
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta
fulin tang
基于 lucene 的站内搜索
基于 lucene 的站内搜索
fulin tang
Voldemort Intro Tangfl
Voldemort Intro Tangfl
fulin tang
基于Lucene的站内搜索
基于Lucene的站内搜索
fulin tang
基于Lucene的站内搜索
基于Lucene的站内搜索
fulin tang
毕业设计-Slide
毕业设计-Slide
fulin tang
More from fulin tang
(12)
我的奋斗 @ weibo
我的奋斗 @ weibo
Redis大数据之路 dtcc-唐福林
Redis大数据之路 dtcc-唐福林
新浪微博开放平台中的 Redis 实践
新浪微博开放平台中的 Redis 实践
Redis 坑
Redis 坑
Gizzard, DAL and more
Gizzard, DAL and more
音乐搜索的极致
音乐搜索的极致
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta
基于 lucene 的站内搜索
基于 lucene 的站内搜索
Voldemort Intro Tangfl
Voldemort Intro Tangfl
基于Lucene的站内搜索
基于Lucene的站内搜索
基于Lucene的站内搜索
基于Lucene的站内搜索
毕业设计-Slide
毕业设计-Slide
雪球服务化实践历程.Print
1.
雪 球 服
务 化 实 践 历 程 @唐福林 雪球首席架构师 twitter 雪 球 服 务 化 实 践 历 程 @唐福林 雪球首席架构师 2013 ❑ 关于雪球,关于我 ❑ 雪球服务化历程 ❑ 未来与微服务化 ❑ 思考和教训 大纲 2013
2.
❑ 雪球 聪明的投资者都在这里 ❑
web 1.0:新闻资讯,股价信息,K线图 ❑ web 2.0:SNS 订阅,分享,聊天 ❑ web 3.0:移动 APP,交易闭环 ❑ 非互联网:资产管理,私募工场 ❑ http://xueqiu.com/about 关于雪球 30% 2014 36% web1.0 k web2.0 sns web3.0 about ❑ 员工 100+ ,技术人员占一半 ❑ 2014.9 C轮 $40M by RENN ❑ Java,Scala,Akka,Finagle, Nodejs,Docker ,Hadoop ❑ 租用IDC机房自建私有云,正在往“公有 云+私有云”方向发展 关于雪球 100 9 C 4kw Java Scala Akka Finagle Nodejs Docker Hadoop IDC “ ” hr ❑ 前新浪微博架构师,微博ID @唐福林 ❑ 微博短链 t.cn ❑ 微博计数器 redis,rediscounter ❑ 微博用户关系服务 ❑ 微博稳定性、性能改进 关于我 2010 2015 Java V
3.
❑ 雪球首席架构师,雪球ID @唐福林 ❑
性能,稳定性,代码质量改进 ❑ 基础组件,微服务容器建设 ❑ XDC 雪球数据中心 关于我 2015 ID @ 服务化历程 - 雪球公司发展历程 2010 3 2011 11 2012 1 2013 12 2014 2 2014 5 2014 11 2015 5 A 2015 9 服务化历程 - 雪球技术发展历程 2012 2013 2014 2015 2012
4.
❑ Snowball 碰到的问题 ❑
业务膨胀 ❑ 代码增长 ❑ 团队扩张 服务化历程 - 技术演进 snowball snowball 2012 2013 2013 ❑ 对症下药 ❑ 业务膨胀 —— 模块化,代码复用 ❑ 代码增长 —— 引入 Scala ❑ 团队扩张 —— 推行工程师文化 服务化历程 - 技术演进 3 scala scala scala jvm jar java bytecode jvm scala java scala scala java 1/5 1/10 服务化历程 - 技术演进 scala docker
5.
❑ 问题加剧 ❑ 业务加速膨胀 ❑
代码加速增长 ❑ 团队加速扩张 服务化历程 - 技术演进 ❑ 问题加剧 ❑ 稳定性,可用性 ❑ 迭代速度,代码合并冲突 ❑ 第三方依赖冲突 服务化历程 - 技术演进 git ❑ 对症下药 ❑ 流量切分,独立部署 ❑ 服务化拆分 ❑ Docker 容器化 服务化历程 - 技术演进 Docker Docker 1.0
6.
❑ 服务化框架选择 ❑ 要求:支持Scala
+ 大厂验证过 ❑ 选定:finagle ❑ twitter,tumblr,Pinterest etc 服务化历程 - 技术演进 dubbo scala rpc scala java rpc scala scala java java finagle finagle finagle “ ” rpc ❑ finagle 简单介绍 ❑ 历史 ❑ 功能 ❑ 特性 服务化历程 - Finagle 介绍 twitter 2010 rpc 2011 twitter http http proxy http api server thrift service service cache finagle server finagle client finagle client/server ❑ 多协议适配 ❑ 标准的:连接池,失败检测重试,负载均 衡,监控统计,追踪,分区 etc ❑ Future,Service,Filter 服务化历程 - Finagle 介绍 client server Future Future callback Future Service service request Future[Response] Filter Filter service
7.
❑ 试点第一个业务 ❑ AntiSpam
反垃圾 ❑ 用 Scala 重写业务逻辑 ❑ Finagle-helper 包装 finagle,精简依赖 ❑ 跑在 Docker 里 服务化历程 - 尝试 finagle 2013 so far so good finagle 30 sbt nexus artifacory antispam ❑ 试点第二个业务 ❑ UserCenter 用户服务 ❑ 用 Scala 重写业务逻辑 !!! 服务化历程 - 尝试 2014 scala ❑ 尝试阶段的经验总结 ❑ RPC 拆分?Yes! ❑ Finagle 框架?Yes!! ❑ Scala 重写业务?No!!! 服务化历程 - 推广 rpc finagle scala NO usercenter scala rpc
8.
❑ 推广前的准备 ❑ RPC
项目代码模板 ❑ 单进程多Service支持 ❑ TraceID 支持 服务化历程 - 推广 usercenter 2014 sbt project thrift service thrift backport traceid ❑ Status 帖子评论 ❑ Search 搜索 ❑ Finance 股票 ❑ Quote 行情 ❑ etc 服务化历程 - 推广 2014 9 - 2015 1 workaround netty http ❑ finagle 版本 ❑ 6.12.1 - 6.18.0 - 6.24.0 - 6.26.0 - 6.30.0 - 6.31.0(昨天) ❑ 兼容性 ❑ scala 版本 ❑ 2.10 - 2.11 二进制不兼容 服务化历程 - 升级 finagle 2 2015 finagle scala scala rpc common 4 jar finagle_6.18_scala_2.10 finagle_6.18_scala_2.11 finagle_6.24_scala_2.10 finagle_6.24_scala_2.11
9.
❑ 流量暴涨:部署多个集群,按业务分流 ❑ 问题排查:简版
zipkin ❑ 开发测试:成套的sep,rc环境 服务化历程 - 服务治理 2015 1 A zipkin microscope docker ❑ 拆分遗留系统 Snowball ❑ 按业务独立部署 ❑ 单进程多服务:同时提供 http 和 rpc 服务化历程 - 收尾 9 http api http api rpc service rpc service http ❑ Todo 当前的部署图 服务化历程 - 收尾 2015.9
10.
❑ 当前方案的问题 ❑ Scala
团队人员更替 ❑ Finagle 迭代速度 ❑ Scala,Finagle 向后兼任性 服务化历程 - 未来 hold scala finagle twitter finagle scala finagle no zuo no die why you try ❑ 简单版本 rpc 框架尝试 ❑ 基于 Jsonrpc4j + Spring ❑ Java Interface + @RPCServer ❑ http client 服务化历程 - 未来 rpc ❑ 简单版本 rpc 框架尝试 ❑ Production features ❑ 成熟度 ❑ 迁移成本 服务化历程 - 未来 motan
11.
❑ RPC 框架部分不是重点 ❑
重点 ❑ 单节点的易用性 ❑ 服务的可用性 服务化历程 - 未来 rpc rpc ❑ 微服务化 ❑ 微服务容器 服务化历程 - 未来 ❑ 业界定义 ❑ 没有明确定义 ❑ 比 soa 更轻量级 ❑ 单个服务粒度更小 微服务化 Microservices = SOA -ESB -SOAP -Centralized governance/persistence -Vendors +REST/ HTTP +CI/CD +DevOps +True Polyglot +Containers +PaaS
12.
❑ 我们自己的理解和努力的方向 ❑ 重点在单节点 ❑
节点之间的调用,性能等,在我们的环 境下不是最重要的 微服务化 ❑ 我们的尝试 ❑ xueqiu-server ❑ docker + tomcat ❑ 公共第三方 lib ,rpc 框架 ❑ 内部开发的基础lib库,包装库 微服务化 docker tomcat + lib + rpc ❑ 预计未来雪球微服务的样子 微服务化 docker + jvm + spring boot + tomcat + finagle + jsonrpc4j + lib + war jvm 3
13.
❑ 预计未来雪球微服务的样子 微服务化 docker
+ jvm + spring boot + tomcat + finagle + jsonrpc4j + lib + war jvm 3 ❑ 服务化的诱惑 ❑ 要不要做 ❑ 要不要自己做 ❑ 要不要专人做 思考和教训 ❑ 高性能的诱惑 思考和教训 http rest api
14.
❑ 稳定性,可用性 思考和教训 soa
❑ 尝试新技术,技术先进性与技术栈一致性 思考和教训 lib 思考和教训 ant+ivy maven gradle sbt 4 maven sbt gradle
15.
❑ 技术深度与技术新鲜度 思考和教训 go ❑ 团队扩张,成员更替 思考和教训 scala
4 scala java node ❑ 个人兴趣与团队合作 思考和教训
16.
❑ 使用 <>
用好! 思考和教训 java spring spring 3 spring ❑ 细节,细节,细节! 思考和教训 finagle retry=3 2 timeout cancel 100ms timeout 50ms 150 ms 100ms 150ms ❑ 规范,规则,规定 思考和教训
17.
❑ 上新业务时的考虑 思考和教训 rpc
https rest api spring boot
18.
Keep Calm And Ask Me Anything
Download now