SlideShare a Scribd company logo
1 of 18
Download to read offline
雪 球 服 务 化

实 践 历 程

@唐福林 雪球首席架构师


twitter


雪 球 服 务 化

实 践 历 程

@唐福林 雪球首席架构师




2013
❑ 关于雪球,关于我
❑ 雪球服务化历程
❑ 未来与微服务化
❑ 思考和教训
大纲
2013
❑ 雪球 聪明的投资者都在这里
❑ 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
❑ 雪球首席架构师,雪球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
❑ 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
❑ 问题加剧
❑ 业务加速膨胀
❑ 代码加速增长
❑ 团队加速扩张
服务化历程 - 技术演进
❑ 问题加剧
❑ 稳定性,可用性
❑ 迭代速度,代码合并冲突
❑ 第三方依赖冲突
服务化历程 - 技术演进
git
❑ 对症下药
❑ 流量切分,独立部署
❑ 服务化拆分
❑ Docker 容器化
服务化历程 - 技术演进 



Docker
Docker 1.0
❑ 服务化框架选择
❑ 要求:支持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
❑ 试点第一个业务
❑ 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
❑ 推广前的准备
❑ 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
❑ 流量暴涨:部署多个集群,按业务分流
❑ 问题排查:简版 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
❑ 当前方案的问题
❑ 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
❑ RPC 框架部分不是重点
❑ 重点
❑ 单节点的易用性
❑ 服务的可用性
服务化历程 - 未来 rpc
rpc
❑ 微服务化
❑ 微服务容器
服务化历程 - 未来
❑ 业界定义
❑ 没有明确定义
❑ 比 soa 更轻量级
❑ 单个服务粒度更小
微服务化 Microservices = SOA -ESB -SOAP -Centralized governance/persistence -Vendors +REST/
HTTP +CI/CD +DevOps +True Polyglot +Containers +PaaS
❑ 我们自己的理解和努力的方向
❑ 重点在单节点
❑ 节点之间的调用,性能等,在我们的环
境下不是最重要的
微服务化
❑ 我们的尝试
❑ xueqiu-server
❑ docker + tomcat
❑ 公共第三方 lib ,rpc 框架
❑ 内部开发的基础lib库,包装库
微服务化 docker tomcat + lib + rpc
❑ 预计未来雪球微服务的样子
微服务化 docker + jvm + spring boot + tomcat + finagle + jsonrpc4j + lib
+ war

jvm 3
❑ 预计未来雪球微服务的样子
微服务化 docker + jvm + spring boot + tomcat + finagle + jsonrpc4j + lib
+ war

jvm 3
❑ 服务化的诱惑
❑ 要不要做
❑ 要不要自己做
❑ 要不要专人做
思考和教训 



❑ 高性能的诱惑
思考和教训 http rest api
❑ 稳定性,可用性
思考和教训 soa 

❑ 尝试新技术,技术先进性与技术栈一致性
思考和教训
lib
思考和教训 ant+ivy
maven gradle sbt 4
maven sbt
gradle
❑ 技术深度与技术新鲜度
思考和教训
go
❑ 团队扩张,成员更替
思考和教训
scala 4
scala java node
❑ 个人兴趣与团队合作
思考和教训
❑ 使用 <> 用好!
思考和教训
java spring
spring
3 spring
❑ 细节,细节,细节!
思考和教训 finagle
retry=3
2 timeout cancel
100ms timeout 50ms
150 ms
100ms 150ms
❑ 规范,规则,规定
思考和教训
❑ 上新业务时的考虑
思考和教训 rpc 

https rest api spring boot
Keep	Calm	
And	
Ask	Me	Anything

More Related Content

Similar to 雪球服务化实践历程.Print

新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)锐 张
 
移动互联网服务端架构介绍
移动互联网服务端架构介绍移动互联网服务端架构介绍
移动互联网服务端架构介绍arganzheng
 
91APP: 從 "零" 開始的 DevOps
91APP: 從 "零" 開始的 DevOps91APP: 從 "零" 開始的 DevOps
91APP: 從 "零" 開始的 DevOpsAndrew Wu
 
IDC大会:新浪SAE架构与设计
IDC大会:新浪SAE架构与设计IDC大会:新浪SAE架构与设计
IDC大会:新浪SAE架构与设计Xi Zeng
 
Top100summit前端的云时代支付宝前端平台架构 王保平
Top100summit前端的云时代支付宝前端平台架构  王保平Top100summit前端的云时代支付宝前端平台架构  王保平
Top100summit前端的云时代支付宝前端平台架构 王保平drewz lin
 
Yog Framework
Yog FrameworkYog Framework
Yog Frameworkfansekey
 
twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事twMVC
 
Weibo lamp improvements
Weibo lamp improvementsWeibo lamp improvements
Weibo lamp improvementsXinchen Hui
 
Bruce-輕鬆上手Asp.net web api 2.1.2
Bruce-輕鬆上手Asp.net web api 2.1.2Bruce-輕鬆上手Asp.net web api 2.1.2
Bruce-輕鬆上手Asp.net web api 2.1.2Study4TW
 
輕鬆上手ASP.NET Web API 2.1.2
輕鬆上手ASP.NET Web API 2.1.2輕鬆上手ASP.NET Web API 2.1.2
輕鬆上手ASP.NET Web API 2.1.2Bruce Chen
 
Spark在苏宁云商的实践及经验分享
Spark在苏宁云商的实践及经验分享Spark在苏宁云商的实践及经验分享
Spark在苏宁云商的实践及经验分享alipay
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰Scourgen Hong
 
4.陈群-唯品会大规模Redis集群存储架构演进.pdf
4.陈群-唯品会大规模Redis集群存储架构演进.pdf4.陈群-唯品会大规模Redis集群存储架构演进.pdf
4.陈群-唯品会大规模Redis集群存储架构演进.pdfStevenShing
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAEq3boy
 
海通证券金融云思考与实践(数据技术嘉年华2017)
海通证券金融云思考与实践(数据技术嘉年华2017)海通证券金融云思考与实践(数据技术嘉年华2017)
海通证券金融云思考与实践(数据技术嘉年华2017)Zhaoyang Wang
 
快!快!快! 互联网第一条军规
快!快!快! 互联网第一条军规快!快!快! 互联网第一条军规
快!快!快! 互联网第一条军规yangdj
 
Gops2016 云端基于Docker的微服务与持续交付实践
Gops2016 云端基于Docker的微服务与持续交付实践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 partHow do we manage more than one thousand of Pegasus clusters - engine part
How do we manage more than one thousand of Pegasus clusters - engine partacelyc1112009
 
Full stack-development with node js
Full stack-development with node jsFull stack-development with node js
Full stack-development with node jsXuefeng Zhang
 
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC
 

Similar to 雪球服务化实践历程.Print (20)

新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
 
移动互联网服务端架构介绍
移动互联网服务端架构介绍移动互联网服务端架构介绍
移动互联网服务端架构介绍
 
91APP: 從 "零" 開始的 DevOps
91APP: 從 "零" 開始的 DevOps91APP: 從 "零" 開始的 DevOps
91APP: 從 "零" 開始的 DevOps
 
IDC大会:新浪SAE架构与设计
IDC大会:新浪SAE架构与设计IDC大会:新浪SAE架构与设计
IDC大会:新浪SAE架构与设计
 
Top100summit前端的云时代支付宝前端平台架构 王保平
Top100summit前端的云时代支付宝前端平台架构  王保平Top100summit前端的云时代支付宝前端平台架构  王保平
Top100summit前端的云时代支付宝前端平台架构 王保平
 
Yog Framework
Yog FrameworkYog Framework
Yog Framework
 
twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事twMVC 47_Elastic APM 的兩三事
twMVC 47_Elastic APM 的兩三事
 
Weibo lamp improvements
Weibo lamp improvementsWeibo lamp improvements
Weibo lamp improvements
 
Bruce-輕鬆上手Asp.net web api 2.1.2
Bruce-輕鬆上手Asp.net web api 2.1.2Bruce-輕鬆上手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輕鬆上手ASP.NET Web API 2.1.2
輕鬆上手ASP.NET Web API 2.1.2
 
Spark在苏宁云商的实践及经验分享
Spark在苏宁云商的实践及经验分享Spark在苏宁云商的实践及经验分享
Spark在苏宁云商的实践及经验分享
 
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
从林书豪到全明星 - 虎扑网技术架构如何化解流量高峰
 
4.陈群-唯品会大规模Redis集群存储架构演进.pdf
4.陈群-唯品会大规模Redis集群存储架构演进.pdf4.陈群-唯品会大规模Redis集群存储架构演进.pdf
4.陈群-唯品会大规模Redis集群存储架构演进.pdf
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
海通证券金融云思考与实践(数据技术嘉年华2017)
海通证券金融云思考与实践(数据技术嘉年华2017)海通证券金融云思考与实践(数据技术嘉年华2017)
海通证券金融云思考与实践(数据技术嘉年华2017)
 
快!快!快! 互联网第一条军规
快!快!快! 互联网第一条军规快!快!快! 互联网第一条军规
快!快!快! 互联网第一条军规
 
Gops2016 云端基于Docker的微服务与持续交付实践
Gops2016 云端基于Docker的微服务与持续交付实践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 partHow 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 jsFull stack-development with node js
Full stack-development with node js
 
twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧twMVC#44 讓我們用 k6 來進行壓測吧
twMVC#44 讓我們用 k6 來進行壓測吧
 

More from fulin tang

我的奋斗 @ weibo
我的奋斗 @ weibo我的奋斗 @ weibo
我的奋斗 @ weibofulin tang
 
Redis大数据之路 dtcc-唐福林
Redis大数据之路 dtcc-唐福林Redis大数据之路 dtcc-唐福林
Redis大数据之路 dtcc-唐福林fulin tang
 
新浪微博开放平台中的 Redis 实践
新浪微博开放平台中的 Redis 实践新浪微博开放平台中的 Redis 实践
新浪微博开放平台中的 Redis 实践fulin tang
 
Gizzard, DAL and more
Gizzard, DAL and moreGizzard, DAL and more
Gizzard, DAL and morefulin tang
 
音乐搜索的极致
音乐搜索的极致音乐搜索的极致
音乐搜索的极致fulin tang
 
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Betafulin tang
 
基于 lucene 的站内搜索
基于 lucene 的站内搜索基于 lucene 的站内搜索
基于 lucene 的站内搜索fulin tang
 
Voldemort Intro Tangfl
Voldemort Intro TangflVoldemort Intro Tangfl
Voldemort Intro Tangflfulin tang
 
基于Lucene的站内搜索
基于Lucene的站内搜索基于Lucene的站内搜索
基于Lucene的站内搜索fulin tang
 
基于Lucene的站内搜索
基于Lucene的站内搜索基于Lucene的站内搜索
基于Lucene的站内搜索fulin tang
 
毕业设计-Slide
毕业设计-Slide毕业设计-Slide
毕业设计-Slidefulin tang
 

More from fulin tang (12)

我的奋斗 @ weibo
我的奋斗 @ weibo我的奋斗 @ weibo
我的奋斗 @ weibo
 
Redis大数据之路 dtcc-唐福林
Redis大数据之路 dtcc-唐福林Redis大数据之路 dtcc-唐福林
Redis大数据之路 dtcc-唐福林
 
新浪微博开放平台中的 Redis 实践
新浪微博开放平台中的 Redis 实践新浪微博开放平台中的 Redis 实践
新浪微博开放平台中的 Redis 实践
 
Redis 坑
Redis 坑Redis 坑
Redis 坑
 
Gizzard, DAL and more
Gizzard, DAL and moreGizzard, DAL and more
Gizzard, DAL and more
 
音乐搜索的极致
音乐搜索的极致音乐搜索的极致
音乐搜索的极致
 
基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta基于Lucene的站内搜索 Beta
基于Lucene的站内搜索 Beta
 
基于 lucene 的站内搜索
基于 lucene 的站内搜索基于 lucene 的站内搜索
基于 lucene 的站内搜索
 
Voldemort Intro Tangfl
Voldemort Intro TangflVoldemort Intro Tangfl
Voldemort Intro Tangfl
 
基于Lucene的站内搜索
基于Lucene的站内搜索基于Lucene的站内搜索
基于Lucene的站内搜索
 
基于Lucene的站内搜索
基于Lucene的站内搜索基于Lucene的站内搜索
基于Lucene的站内搜索
 
毕业设计-Slide
毕业设计-Slide毕业设计-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
  • 16. ❑ 使用 <> 用好! 思考和教训 java spring spring 3 spring ❑ 细节,细节,细节! 思考和教训 finagle retry=3 2 timeout cancel 100ms timeout 50ms 150 ms 100ms 150ms ❑ 规范,规则,规定 思考和教训