Your SlideShare is downloading. ×

DAE

3,045

Published on

Talk on PyCon China 2013

Talk on PyCon China 2013

Published in: Technology
0 Comments
34 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,045
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
105
Comments
0
Likes
34
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. DAE PyCon China 2013
  • 2. About Me • 洪强宁 / hongqn • 2002年开始接触Python • 2004年开始完全使⽤用Python⼯工 作 • 2006年加⼊入⾖豆瓣,现任⾸首席架 构师 • www.douban.com/people/ hongqn/ • hongqn@douban.com
  • 3. 议程 • DAE是什么 • 为什么要开发DAE • DAE的架构 • DAE的特点 • DAE的未来
  • 4. DAE是什么
  • 5. Douban Douban Adorable App Engineers Engine
  • 6. PaaS
  • 7. Platform as a Service (PaaS)
  • 8. Private Python PaaS
  • 9. Current State
  • 10. 427 apps 126 对外应⽤用
  • 11. bubbler.labs.douban.com
  • 12. m.douban.com
  • 13. douban.fm
  • 14. movie.douban.com
  • 15. group.douban.com
  • 16. code
  • 17. up
  • 18. 花名册
  • 19. 精灵宝钻
  • 20. …等等
  • 21. 每天处理 2.4 亿动态请求 5K 峰值 qps on 32 nodes
  • 22. 为什么要开发DAE
  • 23. 代码拆分 1 big svn repo (17万提交) 4602 git repo (2881 fork)
  • 24. 重⽤用基础设施 Proj A Proj B Proj C Proj D MySQL, BeansDB, Memcache, MQ …
  • 25. 简化新项⺫⽬目启动 $ dae create $ dae serve $ dae deploy
  • 26. 最佳实践对 每个app开箱即⽤用 分级上线 故障报告 持续集成 状态收集
  • 27. Scale SA 4
  • 28. DAE的架构
  • 29. app.yaml
  • 30. PyPI 镜像 pypi.douban.com pip-req.txt $ dae install flask
  • 31. Instance • web • • service • • gunicorn gunicorn + customized worker daemon • zookeeper
  • 32. 两级结构 Load Balancer (nginx) Gateway (nginx) fallback unix socket App (gunicorn) Node 1 Gateway (nginx) start App Starter App (gunicorn) Node 2 App Starter
  • 33. 资源池API • • • • • • • • • • mysql memcache doubandb, doubanfs moosefs beanstalkd cdn statsd + graphite mail elastic search irc waylife 监控API调⽤用
  • 34. DAE的特点
  • 35. Low Overhead • 资源分配 — 进程 • 资源隔离 — UNIX帐号 • 资源限制 — 外部监控
  • 36. Customizable • 每个应⽤用从模板⽣生成nginx配置 • 使⽤用 hook point 定制 • 或者只使⽤用⽣生成的 nginx 配置⽚片段
  • 37. ⾃自依赖 • 通过⼀一个应⽤用部署应⽤用 • 通过⼀一个应⽤用管理应⽤用 • ⼀一个应⽤用 scale 所有应⽤用 • ⼀一个应⽤用 serve 跨应⽤用的静态⽂文件 • DAE 的代码托管在⼀一个 DAE 应⽤用上
  • 38. greenify 已开源 github.com/douban/greenify gevent • 默认启⽤用 • ⽀支持⻓长连接,如 websocket • 节省内存 • 很多坑
  • 39. Service 是⼀一等公民 thriftclient 即将开源 • Thrift • 在线客户端⽣生成 • 依赖注册 • 升级通知
  • 40. 收集⼤大量状态数据
  • 41. 内置最佳实践 cfgpusher 即将开源 • 错误收集 - sentry • Code集成 • 在线 profile ⼯工具 • 打包发布 • 预发布环境 • 服务地址实时推送 • 持续集成 • 分级上线
  • 42. 曹娥已开源 github.com/douban/CaoE 不受限的Python环境 • 可⽤用C扩展 • 可⽤用 fork, subprocess, multiprocessing…
  • 43. DAE的未来
  • 44. ⾖豆瓣所有应⽤用的平台
  • 45. cgroups
  • 46. 离线⼤大数据计算
  • 47. 更好的 service 体系
  • 48. 跨 IDC
  • 49. QoS
  • 50. 公有云服务?
  • 51. 开源? 开源!
  • 52. 谢谢!

×