Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

雪球服务化实践历程.Print

3,151 views

Published on

2015年 top100 summit 上的分享 http://top100summit.com/

Published in: Engineering
  • Hi there! Get Your Professional Job-Winning Resume Here - Check our website! http://bit.ly/resumpro
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

雪球服务化实践历程.Print

  1. 1. 雪 球 服 务 化
 实 践 历 程
 @唐福林 雪球首席架构师 twitter 雪 球 服 务 化
 实 践 历 程
 @唐福林 雪球首席架构师 2013 ❑ 关于雪球,关于我 ❑ 雪球服务化历程 ❑ 未来与微服务化 ❑ 思考和教训 大纲 2013
  2. 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. 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. 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. 5. ❑ 问题加剧 ❑ 业务加速膨胀 ❑ 代码加速增长 ❑ 团队加速扩张 服务化历程 - 技术演进 ❑ 问题加剧 ❑ 稳定性,可用性 ❑ 迭代速度,代码合并冲突 ❑ 第三方依赖冲突 服务化历程 - 技术演进 git ❑ 对症下药 ❑ 流量切分,独立部署 ❑ 服务化拆分 ❑ Docker 容器化 服务化历程 - 技术演进 Docker Docker 1.0
  6. 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. 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. 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. 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. 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. 11. ❑ RPC 框架部分不是重点 ❑ 重点 ❑ 单节点的易用性 ❑ 服务的可用性 服务化历程 - 未来 rpc rpc ❑ 微服务化 ❑ 微服务容器 服务化历程 - 未来 ❑ 业界定义 ❑ 没有明确定义 ❑ 比 soa 更轻量级 ❑ 单个服务粒度更小 微服务化 Microservices = SOA -ESB -SOAP -Centralized governance/persistence -Vendors +REST/ HTTP +CI/CD +DevOps +True Polyglot +Containers +PaaS
  12. 12. ❑ 我们自己的理解和努力的方向 ❑ 重点在单节点 ❑ 节点之间的调用,性能等,在我们的环 境下不是最重要的 微服务化 ❑ 我们的尝试 ❑ xueqiu-server ❑ docker + tomcat ❑ 公共第三方 lib ,rpc 框架 ❑ 内部开发的基础lib库,包装库 微服务化 docker tomcat + lib + rpc ❑ 预计未来雪球微服务的样子 微服务化 docker + jvm + spring boot + tomcat + finagle + jsonrpc4j + lib + war jvm 3
  13. 13. ❑ 预计未来雪球微服务的样子 微服务化 docker + jvm + spring boot + tomcat + finagle + jsonrpc4j + lib + war jvm 3 ❑ 服务化的诱惑 ❑ 要不要做 ❑ 要不要自己做 ❑ 要不要专人做 思考和教训 ❑ 高性能的诱惑 思考和教训 http rest api
  14. 14. ❑ 稳定性,可用性 思考和教训 soa ❑ 尝试新技术,技术先进性与技术栈一致性 思考和教训 lib 思考和教训 ant+ivy maven gradle sbt 4 maven sbt gradle
  15. 15. ❑ 技术深度与技术新鲜度 思考和教训 go ❑ 团队扩张,成员更替 思考和教训 scala 4 scala java node ❑ 个人兴趣与团队合作 思考和教训
  16. 16. ❑ 使用 <> 用好! 思考和教训 java spring spring 3 spring ❑ 细节,细节,细节! 思考和教训 finagle retry=3 2 timeout cancel 100ms timeout 50ms 150 ms 100ms 150ms ❑ 规范,规则,规定 思考和教训
  17. 17. ❑ 上新业务时的考虑 思考和教训 rpc https rest api spring boot
  18. 18. Keep Calm And Ask Me Anything

×