搜狐随身看-后台

1,428 views

Published on

搜狐武汉, by 刘超

Published in: Technology, Self Improvement
0 Comments
2 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,428
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
0
Comments
0
Likes
2
Embeds 0
No embeds

No notes for slide
  • 任务所耗费的时间是有区别的 . 用户体验很差 . 没有给每个任务留特定的通道
  • rabbitmq 可以给任务分队列 .
  • 搜狐随身看-后台

    1. 1. 背后的故事搜狐武汉研发中心
    2. 2. 系统架构 nginx uwsgi rabbit MQ django node ... node mem node cache redis database
    3. 3. RabbitM Q : 消息队列服务框架Erlang支持 AM Q P支持持久化 Celery: 基于分布式消息传递机制的任务队列 Celery 会从 B roker处 pull消息 , 根据获得的消息来执行相应 的 ta sk B roker支持 Ra bbitM Q RedisM ongoD B 执行单元是 ta sk 队列可以分 type
    4. 4. 工作流程 purify celery node rabbitmq download 1 encode 2 MQ store 3 upload 4 purify: 调用净化服务 , 获取收藏页面 downloa 提取图片 url, 下载图片 d: encode: 对下载图片执行编码 , 缩略等 store: 本地信息存储 uploa 页面 , 图片数据上传到云端 d:
    5. 5. rabbitmq celery node vm 1 2 3 vm1 4default: u s e .. d p 1 . 2 3 vm2 4 ... 每一个 node 就是一个 celery 进程 优点 : 部署简单 , 每一个 node 都可以接受所有的任务 缺点 : 效率很低 version_0.1
    6. 6. rabbitmq celery node vm 1 2 threads x32 purify: p p p .. p p purify 3 4 vm1 . 1 2download: d d d .. d d download 3 4 vm2 threads x32 . 1 2 e e encode vm3 threads x8 encode: e e e .. 3 4 . 1 2 store vm4 threads x16 store: s s s .. s s 3 4 . 1 2 upload vm5 threads x16 upload: u u u .. u u 3 4 . 优点 : 1 . 任何时刻每个任务都可以顺利执行 缺点 : 1 . 负载不均衡 , 服务器利用率低 2. 任务流存在单点 , 系统不稳定 version_0.2
    7. 7. 沿用的 AMQP 的概念 : vhost, exchange, queue,binding Fanout Excha – 所有的消息发送发送到本 excha nge nge 绑定的所有的队列 D irect Excha – 消息和队列都可以指定属 nge 性 "routing key", 消息会根据 key 的匹配传输到不同 的队列 T opic Excha – 同样的指定属性 "routing key", 支持 nge pattern 模式
    8. 8. rabbitmq celery node vm purify 1 purify: p p p .. p p download 2 . encode 3 vm1download: d d d .. d d store 4 . upload 5 encode: e e e .. e e purify 1 . download 2 store: s s s .. s s encode 3 vm2 . store 4 upload 5 upload: u u u .. u u . ... 优点 : 1 . 充分利用服务器资源 2. celery 可以任意扩展 version_0.3
    9. 9. celery node vm purify 1 download 2rabbitmq cluster encode 3 vm1 store 4 disk node ram node upload 5 purify 1 download 2 encode 3 vm2 store 4 upload 5 ... rabbitM Q 组成 cluster, 增加了消息的吞吐量 version_0.4
    10. 10. T ips ra limit - 给 ta 限速 . 一段时间内 ta 能运行多少次 te_ sk sk ta prefetch - celery 会根据并发数预取一些消息 ks_
    11. 11. Ganglia 是在 HPC 集群和网格上广泛使用的一个开源的分布式监控系统 . 它是由加州大学伯克利分校的 NPACI 项目的一个子项目衍生出来的 . ganglia.wiki
    12. 12. Gmond: 需要安装在集群的每个节点上Gmeta 是作为集群的控制节点 , 定时 d:从 gmond 采集监控数据 . 它不仅可以从 gmond 上采集 , 也可以从下层的gmeta 上采集数据 d可以通过层层的 gmeta 把不同的集群 d隔离开 , 防止数据泛滥RRD tool: Round Robin D a ba 工具(环 ta se状数据库) ,
    13. 13. 编写 ganglia 插件脚本import randomdescriptors=list()def get_count(name): return random.randrange(23, 90)def metric_cleanup(): passdef metric_ init(pa ms): ra globa descriptors l d1 = { na : test_ count , # 名字 me call_ ba : get_ count, # 实际进行采集的回调函数 ck time_ ma : 90, x # 调度时间间隔 va type : uint , # 整数 lue_ units : C , # 你的图 /值的单位 slope : both , # 这个值是为 rrdtool定义的数据类型 . # positive-变化率 , both- 直接显示值 , zero- 常量值 , 会显示到时间 / 字符串 /常量等区域 format : % u , description : N umber of test , groups : test_ group # metric 所属的 group, 参看上门的 group:example } descriptors = [ d1 ] return descriptors
    14. 14. 完 刘超 ------------- da .cha da o.liu@ il.com gma

    ×