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

yif

贡献于2018-03-20

字数:0 关键词: 软件架构

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

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 10 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档

相关文档