滴滴打车架构演变及应用实践

2020-03-01 199浏览

  • 1.滴滴打⻋车架构演变及应⽤用实践 杨振麟   MagicYang
  • 2.⾃自我介绍 • 2010-­‐2012  百度    ⾼高级⼯工程师   • 2012-­‐Now    滴滴打⻋车    技术总监
  • 3.内容提要 • 聊什么   • 滴滴架构演变历程   • 3⽉月流量洪峰应对   • 当前架构介绍   • 未来规划   • 不聊什么   • 具体业务数据  :0   • 业务相关性较⾼高的技术细节  :)
  • 4.滴滴架构进化过程 进化 服务化 ⼯工业时代 ⽂文明终结? LNMP集群进化 铁器时代 LNMP集群 单机LNMP AppEngine ⻘青铜时代 ⽯石器时代 远古时代 时间 2012.11 2013.4 2013.8 2013.12 2013.2 Now
  • 5.远古时代 • • • • 时期:2012.7-­‐2012.11   架构:公有云、裸PHP   流量:<  10W   团队:2研发,0运维
  • 6.远古时代 • 优点   • 零运维成本维护⼀一个线上LNMP环境   • APNS消息推送、短信、⽇日志等服务   • 代码托管、发布   • 免费⼆二级域名   • 缺点:   • MySQL存储引擎类型限制   • Web服务不稳定(各种502、504...)   • DNS服务故障
  • 7.远古时代 司机APP 乘客APP API 浏览器 MIS DB 公有云
  • 8.⽯石器时代 • • • • 时期:2012.12-­‐2013.4   流量:<  100W   架构:租⽤用IDC+单机LNMP   团队:3研发,0运维
  • 9.⽯石器时代 • 问题:   • 公有云环境不稳定且不可控   • ⺫⽬目标:   • 消除了环境⿊黑盒,让环境更可控   • 改进:   • ⾃自购主机   • ⾃自选IDC   • 搭建维护LNMP环境
  • 10.⽯石器时代 司机APP 乘客APP 浏览器 nginx API DB MIS IDC
  • 11.⽯石器时代 • 问题:   • IDC⺴⽹网络故障   • IDC服务响应不及时   • ⺫⽬目标:   • 解决⺴⽹网络环境可⽤用性   • 改进:   • 双机房,⼀一主⼀一备   • 通过第三⽅方配置服务切换   • App通过域名访问改为IP直连
  • 12.⽯石器时代 App 实时获取IP 第三⽅方配置服务 IP直连 IDC1 IDC2
  • 13.⻘青铜时代 • • • • 时期:2013.5-­‐2013.8   流量:<  3000万   架构:LNMP集群   团队:5研发,1运维
  • 14.⻘青铜时代 • 问题:   • 随业务发展,流量逐步到达单机极限   • ⺫⽬目标:   • ⽀支撑千万级流量   • 改进:   • 引⼊入负载均衡   • 具备基本扩容和容错能⼒力   • 减轻MySQL压⼒力(缓存、前后台DB分离)
  • 15.⻘青铜时代 LVS API API MIS nginx nginx nginx php-­‐fpm php-­‐fpm php-­‐fpm memcached memcached memcached NFS NFS NFS MySQL(Master) MySQL(Slave)
  • 16.铁器时代 • • • • 时期:2013.9-­‐2014.2   流量:3000万〜~2亿   架构:LNMP集群优化   团队:12研发,2运维
  • 17.铁器时代 • 问题:   • 轮询效率低   • 数据库查询负载⾼高   • 系统监控及报警平台缺失   • 改进:   • 司机订单轮询改为⻓长连接推送   • 数据库读写分离   • 引⼊入MongoDB解决空间检索问题   • 基于nagios的监控系统
  • 18.系统架构 乘客App 司机App LVS Web Web Web Push  Server MySQL(Slave) 订单分配系统 DBProxy MongoDB MySQL(Slave) MySQL(Master)
  • 19.监控 • 基础监控   • CPU、Mem、I/O、⺴⽹网卡带宽、进程存活   • Ngnix   • 流量、HTTP  Status(502、504、500…)   • Fast-­‐CGI(php-­‐fpm)   • 活跃进程数、error  log、slow  log…   • MySQL   • 连接数、主从延迟、slow  log…   • Memcached   • 连接数、QPS   • MongoDB   • 连接数、QPS
  • 20.⽂文明终结? • • • • • • • • 微信⽀支付上线了   ^_^   补贴活动开始,  业务量上涨   ^_^   业务量持续上涨   ^_^   系统开始不稳定了   @_@  T_T
  • 21.流量变化 16 pv(亿) 12 8 4 0 2/1 2/10 2/19 2/28 3/9 时间 3/18 3/27
  • 22.应对⼀一:优化 • API逻辑优化   • LVS性能瓶颈   • 单核限制:CPU  Affinity   • 单点极限:LVS集群+DNS轮询   • 内⺴⽹网带宽极限   • Memcached:数据压缩   • 分单系统调度导致DB压⼒力过⼤大:削峰
  • 23.应对⼆二:柔性 • 系统分析   • 看清业务与系统开销的对应关系   • 服务停⽤用(⼆二级服务)   • 信息展⽰示、配置…   • 服务降级(⼀一级服务)   • 附近⻋车辆静态化   • 司机坐标上报降频   • 策略简化   • …
  • 24.应对三:扩容 • 数据库硬件升级   • ⽔水平扩展   • Push服务集群化改造   • 开发LBS服务替代MongoDB
  • 25.⼯工业时代 • • • • 时期:2014.3-­‐Now   流量:5亿   架构:服务化   团队:50+研发,7运维
  • 26.业务架构 ⽤用户 乘客App web流量⼊入⼝口 企业版 司机App 出租⻋车⻋车台 API服务 ⽀支付服务 认证服务 坐标服务 地理围栏服务 反作弊服务 分单服务 抢单服务 POI服务 短信服务 推送服务 LBS服务 运营后台 客服后台 ⼲⼴广告后台 服务 后台 数据中⼼心 报表中⼼心
  • 27.系统架构 乘客App 司机App VIP VIP TCP接⼊入层 Nginx集群 Nginx集群 Push  Server LBS  Server Web集群 KV集群 DBProxy集群 Redis优先级队列 司机任务调度 MySQL集群 抢单策略引擎 分配策略引擎 特征存储
  • 28.未来技术规划 • • • • 架构:分城市部署   体验:SPDY协议   效率:DevOps   成本:HHVM、内部私有云
  • 29.We Need You • 我们正在寻找技术上追求卓越的架构师,⼀一起改变世界   • 您将能参与到——   • 复杂的业务场景   • 出租⻋车、⾼高端⻋车等产品   • 移动⽀支付平台   • 基础架构服务   • ⾼高速的业务增⻓长   • 千万级⽤用户   • 百万级交易   • 亿级流量
  • 30.Contact Me ! ! • 微信:yzl1573   • 邮箱:yangzhenlin@diditaxi.com.cn
  • 31.Q&A