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.
⼩小成本的架构演进
在战⽕火中建造城市
滴滴快的⾸首席架构师—李令辉
Always in the war
• 创业三年每天都在打仗。
• 增⻓长完全不线性。
• 营销完全随机。
架构改造为那般?
• 1. 业务量持续增⼤大
• 2. 业务越来越复杂
• 3. 开发团队越来越⼤大,需要解耦来降低成本提⾼高
⽣生产⼒力。
• 4. 避免修复⼀一个bug引⼊入更多bug。
Principle
• Everything is about cost.
• Keep it simple and stupid.
New Challenge
• high available.
• high consistency.
• peak value.
2014
• 0 level service 1 meet problem.
• we have 2 payment services.
Solutions?
• we launch 2 different crazy plans.
• 1. re-write the first in 1 week.
• 2. re-invent and re-create A new payme...
Problem1
• 1. 没有单元测试,没有任何⾃自动化测试。
• 2. 性能太差,单机450qps,这是计算器?
• 3. 旧代码,没⼈人维护。
• 4. 依赖于我们不熟悉的⽼老派技术,apache,
php,yii,以及⼀一些不常⽤用的⽇...
plan for problem 1
• re-design the service, re-implement it in golang.
• deadline is 1 week.
• resource is 3 engineers.
details
• document the detail.
• write a simple framework to support.
• then implement some specific module.
• write some u...
deploy to online server?
• during 2 weeks….
• 6 steps deployment…
• To compatible with old implementation.
then…
• run over a month, then hang up 10 min.
• add async to avoid hanging.(we call that
grading
Finally
• QPS -> 9000
• deploy -> 1 binary + 1 conf file
• available -> 100%
• 99.9% query do not need storage any more.
• ...
Problem 2
• 1. 多套⽀支付代码
• 2. 和业务耦合度太⾼高
• 3. ⽀支付对⼀一致性要求远远⾼高于普通逻辑,要求完全不
⼀一样。
• 4. 扩展性很差,接⼊入新的内部系统或者其他外部系统
⾮非常困难。
• 5. 已有的系统依赖...
Solution: Phoenix
• 1. 抛开业务涉及api,集中精⼒力设计⼀一套⽀支付原语。
• 2. 尝试⽤用原语去解决可能的最复杂的业务场景。
• 3. SOA化,让业务⼯工程师不需要⾯面对存储,缓存,等
等。只需要⾯面对我们的⽀支付...
Roadmap
• choose protocol: thrift
• choose programming language: Java
• Design the Architecture.
Architecture
Result
• Phoenix support 顺⻛风⻋车,企业⽤用⻋车,出租⻋车,专
⻋车。
• Phoenix上线后⽆无事故,⽆无错账。
• Phoenix接⼊入新⽀支付渠道只需要不到⼀一周。
• Phoenix通过单元测试,隔离部署来保...
架构师是干什么的?
• 1. Decide the way.
• 2. Make things simpler.
• 3. Manage the complication.
• 4. Handle the hardcore problem.
滴滴打⻋车诚聘技术⾼高⼿手
• We are hiring!
• contact me: l@diditaxi.com.cn
Thank you
• Q & A
Upcoming SlideShare
Loading in …5
×

美团技术沙龙01 - 滴滴打车小成本架构演进

1,828 views

Published on

滴滴打车,从无到有。业务量持续增大,越来越复杂,架构体系也虽着业务的需求而改变,分享滴滴打车从小到大的架构演讲。

Published in: Technology

美团技术沙龙01 - 滴滴打车小成本架构演进

  1. 1. ⼩小成本的架构演进 在战⽕火中建造城市 滴滴快的⾸首席架构师—李令辉
  2. 2. Always in the war • 创业三年每天都在打仗。 • 增⻓长完全不线性。 • 营销完全随机。
  3. 3. 架构改造为那般? • 1. 业务量持续增⼤大 • 2. 业务越来越复杂 • 3. 开发团队越来越⼤大,需要解耦来降低成本提⾼高 ⽣生产⼒力。 • 4. 避免修复⼀一个bug引⼊入更多bug。
  4. 4. Principle • Everything is about cost. • Keep it simple and stupid.
  5. 5. New Challenge • high available. • high consistency. • peak value.
  6. 6. 2014 • 0 level service 1 meet problem. • we have 2 payment services.
  7. 7. Solutions? • we launch 2 different crazy plans. • 1. re-write the first in 1 week. • 2. re-invent and re-create A new payment service cluster.
  8. 8. Problem1 • 1. 没有单元测试,没有任何⾃自动化测试。 • 2. 性能太差,单机450qps,这是计算器? • 3. 旧代码,没⼈人维护。 • 4. 依赖于我们不熟悉的⽼老派技术,apache, php,yii,以及⼀一些不常⽤用的⽇日志收集和上线规 范。 • 5. 依赖于⼀一个公司外的存储,难以维护和控制。
  9. 9. plan for problem 1 • re-design the service, re-implement it in golang. • deadline is 1 week. • resource is 3 engineers.
  10. 10. details • document the detail. • write a simple framework to support. • then implement some specific module. • write some unit test cases. • write some test script.
  11. 11. deploy to online server? • during 2 weeks…. • 6 steps deployment… • To compatible with old implementation.
  12. 12. then… • run over a month, then hang up 10 min. • add async to avoid hanging.(we call that grading
  13. 13. Finally • QPS -> 9000 • deploy -> 1 binary + 1 conf file • available -> 100% • 99.9% query do not need storage any more. • log collection through network.
  14. 14. Problem 2 • 1. 多套⽀支付代码 • 2. 和业务耦合度太⾼高 • 3. ⽀支付对⼀一致性要求远远⾼高于普通逻辑,要求完全不 ⼀一样。 • 4. 扩展性很差,接⼊入新的内部系统或者其他外部系统 ⾮非常困难。 • 5. 已有的系统依赖于单库事务,当订单量持续增加拆 库拆表就会破坏事务,⼀一致性就没有了。
  15. 15. Solution: Phoenix • 1. 抛开业务涉及api,集中精⼒力设计⼀一套⽀支付原语。 • 2. 尝试⽤用原语去解决可能的最复杂的业务场景。 • 3. SOA化,让业务⼯工程师不需要⾯面对存储,缓存,等 等。只需要⾯面对我们的⽀支付原语。 • 4. 去事务,⽤用2-phase commit来保证⼀一致性。 • 5. 最后⽤用对账来保证最终⼀一致性。 • 6. full unit test coverage.
  16. 16. Roadmap • choose protocol: thrift • choose programming language: Java • Design the Architecture.
  17. 17. Architecture
  18. 18. Result • Phoenix support 顺⻛风⻋车,企业⽤用⻋车,出租⻋车,专 ⻋车。 • Phoenix上线后⽆无事故,⽆无错账。 • Phoenix接⼊入新⽀支付渠道只需要不到⼀一周。 • Phoenix通过单元测试,隔离部署来保证上线⽆无压 ⼒力。
  19. 19. 架构师是干什么的? • 1. Decide the way. • 2. Make things simpler. • 3. Manage the complication. • 4. Handle the hardcore problem.
  20. 20. 滴滴打⻋车诚聘技术⾼高⼿手 • We are hiring! • contact me: l@diditaxi.com.cn
  21. 21. Thank you • Q & A

×