Upgrade to Pro — share decks privately, control downloads, hide ads and more …

基于Tornado后端系统架构

Sponsored · SiteGround - Reliable hosting with speed, security, and support you can count on. →
Avatar for Zhang ZY Zhang ZY
March 16, 2015

 基于Tornado后端系统架构

Back-end system architecture based on Tornado Framework

Avatar for Zhang ZY

Zhang ZY

March 16, 2015

More Decks by Zhang ZY

Other Decks in Technology

Transcript

  1. About Tornado • written in Python • non-blocking • event

    driven, base on epoll on linux • tens of thousands of long connections • lightweight
  2. Feature • 单进程单线程 ◦ one ioloop per thread ◦ GIL的原因,

    多线程不能有效利用多核 ◦ 切忌阻塞操作
  3. Best Practices - 聚合服务 • 单请求可指定批量写任务,统一的读任务 • 读任务需消重 • 根据读任务需要请求多个CACHE服务(A类)

    • 多个CACHE数据同步返回方可执行批量任务 • 批量任务需要先异步请求计算服务 • 对每个计算服务返回可异步写CACHE(B类)
  4. Cache Proxy -- 指标 • 高吞吐 ◦ 亿级REQUEST • 高可用

    ◦ 50ms可用率P999 • 传输字节 ◦ KB-MB/Request • QPS ◦ Peak: 接近10K ◦ 可Scale Out
  5. Notify - How • STATUS ◦ NEW,PENDING,SUSPENED,(FAILURE),FINAL • RETRY_POLICY ◦

    1,2,4,8,12,16 • ALARM ◦ 离线统计 ◦ 即时触发
  6. Push -- 架构 • 路由服务 • Push Service向路由注册 • Terminal通过路由获取一个可用Push

    Service • Terminal与Push Service建立连接并使用私有 协议通信
  7. Push -- 协议设计 • 消息头 ◦ 版本 + 命令ID +

    消息体长度 • 消息体 ◦ payload为Scheme Free,对Push Service透明 • 支持命令 ◦ 注册 ◦ 心跳 ◦ 推送 ◦ ...
  8. 整体架构 -- Name Server • HERE • 有状态服务 ◦ Consistent

    Hash... • 无状态服务 ◦ Consistent Hash, WRR
  9. 服务治理 • SLA • 超时控制 ◦ 作为CLIENT侧时,超时设置为SLA约定延迟时间 • 过载保护 ◦

    不能无节制地同时与后端服务建立大量连接 ◦ 可使用滑动窗口, 使用连接池并设置连接阈值 ◦ 每连接增加生命周期, IDLE时及时释放连接 • 服务降级 ◦ 系统整体不可用时, 可支持次要用户服务降级为不可用 ◦ 保证优先级服务可用
  10. SLA -- Fail Over • 故障服务自动摘除 • 无状态服务 ◦ 返回错误码

    ◦ 自动路由至其它服务 • 有状态服务 ◦ 故障数据恢复 ◦ 数据一致性 ◦ ...
  11. 体系建设 • 代码规范 ◦ PEP8 OR Google Style • 版本控制

    • 日志规范 • 私有Pypi • virtualenv • supervisord • 一键发布 ◦ puppet ◦ fabric
  12. who use • facebook • 10gen • bitly • quora

    • zhihu • admaster • sae • kuxun • ...