DAE
Upcoming SlideShare
Loading in...5
×
 

DAE

on

  • 2,068 views

Talk on PyCon China 2013

Talk on PyCon China 2013

Statistics

Views

Total Views
2,068
Views on SlideShare
2,065
Embed Views
3

Actions

Likes
33
Downloads
97
Comments
0

1 Embed 3

http://www.linkedin.com 3

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

DAE DAE Presentation Transcript

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