Messenger消息推送系统.ppt

  1. 1、本文档共21页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
周洋 部门 : 手机助手 weibo:@johntech-o Date : 2014.3.22 何为推送? 业务现状 系统架构 客户端接入:功能模块介绍 系统架构 服务端接入:功能与模块介绍 测试·发布·运维 测试·发布·运维 Programming In Go Programming In Go * Messenger消息推送系统 云时代实时大数据通道 提高用户留存率 提高用户粘性和活跃度 相比较Polling通过长连接减少开销 相比较服务端轮训更实时 前稳定服务30+产品,实时在线长连接用户峰值过亿,日独立访问接近十亿量级,可在1分钟内完成几亿量级的在线和离线广播。 广播功能,在手机助手植物大战僵尸首发和马年春晚加速球等重大产品发布中稳定发挥了作用。 单播和多播功能在20个产品中应用,每日下发消息量近十亿量级。 模块 独立模块 灰度发布 用户重定向 故障恢复 测试 功能 仿真 独立集群 数据冗余 Golang开发 C语言开发 每一个用户是一个协程,百万并发百万协程。 Oneloop per thread原则人为控制 用户的loop内对于阻塞操作再开协成,避免对用户的读写超时等操作照成影响。 对于所有io操作建立的fd映射到指定loop,同时记录上下文关系进行回调设置 每个用户通过channel与其他用户通信,或者与manager协程通信。 使用eventfd事件通知的方式,获取指定fd对应的数据结构进行回调操作 对外的通信采取阻塞的方式来进行。 对外通信信全局消息list,在映射到的eventloop上开连接池进行消耗 推荐使用 Programming In Go 瓶颈 内存不释放 不是自己管没办法... 问题与瓶颈 Programming In Go 瓶颈 内存不释放 问题与瓶颈 Gc时间2-3s 影响时序性,避免脏数据需要额外逻辑 Programming In Go Network(IOPS/吞吐量) 瓶颈 内存不释放 问题与瓶颈 Gc时间2-3s 接口响应速度降低,重试增多,压力倍增 Programming In Go Network(IOPS/吞吐量) 瓶颈 内存不释放 问题与瓶颈 Gc时间2-3s 并发的io操作队系统其他组件照成冲击 分散在各携程的io操作 优化 内使用 go tool pprof 等工具查找内存开销比较大的函数,对于可以修改为可复用内存的库进行内存的预分配。 分集群 单机多实例 优化 *

文档评论(0)

shuwkb + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档