• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
DAE
 

DAE

on

  • 1,837 views

Talk on PyCon China 2013

Talk on PyCon China 2013

Statistics

Views

Total Views
1,837
Views on SlideShare
1,834
Embed Views
3

Actions

Likes
33
Downloads
92
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
    • 公有云服务?
    • 开源? 开源!
    • 谢谢!