SlideShare una empresa de Scribd logo
1 de 14
实时消息推送系统
——在移动互联网中的设计和实现

  吴仲深 @ 阿里云无线
无线网络速率对比

        协议                                下行速率                  上行速率
2G      GPRS ( 2.5G )                     57.6 kbit/s           28.8 kbit/s
        EDGE Evolution (2.75G)            1,184 kbit/s          236.8 kbit/s
        CDMA2000 1XRTT ( 2.5G )           153 kbit/s            153 kbit/s
3G      UMTS 3G                           384 kbit/s            384 kbit/s
        EV-DO rev. A ( 3.5G )             3.1 Mbit/s            1.8 Mbit/s

        HSDPA/HSUPA(3. 5G)                13.98 Mbit/s          5.760 Mbit/s
        HSPA+ ( 3.9G )                    21.6 Mbit/s

WiFi    802.11a
                                          54Mbit/s              54Mbit/s

 参考 : http://en.wikipedia.org/wiki/List_of_device_bandwidths#Mobile_telephone_interfaces
关键指标
• 电量   小于 5%*


• 流量   小于 3MB/ 月 *


• 性能    30 秒内发送 10w 条次消息


• 稳定性     最高 24 小时不断线 /
 消息 100% 到达


• 安全     基于 Oauth Token 的云帐号
 体系 / CloudUUID / AES 加密
* 24 小时均联网
系统设计

• 开发语言



• 数据库

• 通讯协议
服务器架构


  Admin 后台      API  服务器



BS 广播服务器


                  DB  数据库
   WS
    


             NCM 导航服务器
开发中遇到的难题

• 9493端口的由来.
• 客户端心跳程序跟随系统一起休眠了.
• 从websocket到mqtt,协议的研究
• hashring的算法不一样
• 心跳策略和算法的摸索,gprs/edge,hspa/u
  mts,wifi不同网络制式下的 keepalive time 。
• 重复发送和收不到,如何防止多个长连接。
系统调优
•   Linux 系统内核 socket connection 调优
•   查看总限制参数
•   ulimit -a
•   查看 Linux 系统级的最大打开文件数限制:
•   cat /proc/sys/fs/file-max
•   * 通常这个系统级硬限制是 Linux 系统在启动时根据系统硬件资源状况计算出来的最佳的最大同时打开文件数限制。这个也
•   间接告诉我们这台机器可以同时承受 socket 的最大链接数。
•   第一步,修改用户进程可打开文件数限制,修改 /etc/security/limits.conf 文件,在文件中添加如下行:
•   * soft nofile 655350
•   * hard nofile 655360
•   第二步,修改网络内核对 TCP 连接的有关限制 ,修改 /etc/sysctl.conf 文件 , 在文件中添加如下行:
•   net.ipv4.ip_conntrack_max = 655350
•   *Linux 网络内核的 IP_TABLE 防火墙对最大跟踪的 TCP 连接数有限制,此限制值要尽量小,以节省对内核内存的占用。
•   第三步,执行 sysctl 命令
•   sysctl -p
•   修改客户机的端口范围
•   修改 /etc/sysctl.conf 文件,在文件中添加如下行:
•   net.ipv4.ip_local_port_range = 1024 65000
•   sysctl -p


•   参考 http://blog.csdn.net/guowake/article/details/6615728
•   《 http 长连接 200 万尝试及调优 》 http://rdc.taobao.com/blog/cs/?p=1062
调试工具

• Wireshark

• tcpdump     命令: tcpdump -s0 -w /sdcard/a.pcap



• adb logcat

• 电流表
心跳电量消耗图


      WIFI




      3G




      2G
性能测试




分析:在整个性能测试过程中,可用内存一直维持在 9G 左右;仅维持 MQTT 连接时 CPU 利用率维持在
40% 左右。本测试场景使用 9 台压力测试机,运行 5500 (在测试过程中,
1000 个虚拟用户失去连接)个虚拟用户,每个虚拟用户建立 50 个 MQTT 连接。运行 21 hours, 17 minutes
and 58 seconds 。
结论:达到了 1 台 WS 服务器最高承载 27.5W 个连接并能够正常保持登录的目标。
日志和性能数据
• Mangodb+ flex
与第三方应用的关系
如何使用 API

• 服务器端开发
•   第一步,通过 http get 请求访问 COA 提供
    的 authLogin 接口, 获取 AcesssToken
•   第二步,创建 Post 请求访问 COA 提供的
    pushMesage 接口

• 客户端开发
•   云应用客户端开发

•   本地应用客户端开发
•   第一步,创建 Manifest 文件
•   第二步,接收消息
谢
                                谢!

吴仲深
zhongshen.wuzs@aliyun-inc.com

Más contenido relacionado

Similar a 实时消息推送系统

组网实践
组网实践组网实践
组网实践telab
 
大规模高性能计算集群优化.pdf
大规模高性能计算集群优化.pdf大规模高性能计算集群优化.pdf
大规模高性能计算集群优化.pdfchachachat
 
Introduction MQTT in Chinese
Introduction MQTT in ChineseIntroduction MQTT in Chinese
Introduction MQTT in ChineseEric Xiao
 
IBM Cloud Private Introduction
IBM Cloud Private IntroductionIBM Cloud Private Introduction
IBM Cloud Private IntroductionGuangya Liu
 
防火墙产品原理介绍20080407
防火墙产品原理介绍20080407防火墙产品原理介绍20080407
防火墙产品原理介绍20080407paulqi
 
Brochure ahn lab trusguard utm
Brochure ahn lab trusguard utmBrochure ahn lab trusguard utm
Brochure ahn lab trusguard utmahnlabchina
 
Alibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qconAlibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qconYiwei Ma
 
Apache trafficserver
Apache trafficserverApache trafficserver
Apache trafficserverDin Dindin
 
第17讲 广域网基础
第17讲 广域网基础第17讲 广域网基础
第17讲 广域网基础F.l. Yu
 
计算机网络:复习
计算机网络:复习计算机网络:复习
计算机网络:复习magicshui
 
新浪微博平台与安全架构
新浪微博平台与安全架构新浪微博平台与安全架构
新浪微博平台与安全架构n716
 
云计算 系统实例与研究现状
云计算 系统实例与研究现状云计算 系统实例与研究现状
云计算 系统实例与研究现状Danny AJ Lin
 
MongoDB at Qihoo 360
MongoDB at Qihoo 360MongoDB at Qihoo 360
MongoDB at Qihoo 360MongoDB
 
数据中心网络架构与全球化服务-Qcon2011
数据中心网络架构与全球化服务-Qcon2011数据中心网络架构与全球化服务-Qcon2011
数据中心网络架构与全球化服务-Qcon2011Yiwei Ma
 
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验guiyingshenxia
 
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验colderboy17
 
章文嵩:使用Lvs集群架设高可扩展的网络服务
章文嵩:使用Lvs集群架设高可扩展的网络服务章文嵩:使用Lvs集群架设高可扩展的网络服务
章文嵩:使用Lvs集群架设高可扩展的网络服务drewz lin
 

Similar a 实时消息推送系统 (20)

组网实践
组网实践组网实践
组网实践
 
network1
network1network1
network1
 
大规模高性能计算集群优化.pdf
大规模高性能计算集群优化.pdf大规模高性能计算集群优化.pdf
大规模高性能计算集群优化.pdf
 
Introduction MQTT in Chinese
Introduction MQTT in ChineseIntroduction MQTT in Chinese
Introduction MQTT in Chinese
 
IBM Cloud Private Introduction
IBM Cloud Private IntroductionIBM Cloud Private Introduction
IBM Cloud Private Introduction
 
防火墙产品原理介绍20080407
防火墙产品原理介绍20080407防火墙产品原理介绍20080407
防火墙产品原理介绍20080407
 
Brochure ahn lab trusguard utm
Brochure ahn lab trusguard utmBrochure ahn lab trusguard utm
Brochure ahn lab trusguard utm
 
Alibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qconAlibaba server-zhangxuseng-qcon
Alibaba server-zhangxuseng-qcon
 
Apache trafficserver
Apache trafficserverApache trafficserver
Apache trafficserver
 
第17讲 广域网基础
第17讲 广域网基础第17讲 广域网基础
第17讲 广域网基础
 
计算机网络:复习
计算机网络:复习计算机网络:复习
计算机网络:复习
 
新浪微博平台与安全架构
新浪微博平台与安全架构新浪微博平台与安全架构
新浪微博平台与安全架构
 
云计算 系统实例与研究现状
云计算 系统实例与研究现状云计算 系统实例与研究现状
云计算 系统实例与研究现状
 
MongoDB at Qihoo 360
MongoDB at Qihoo 360MongoDB at Qihoo 360
MongoDB at Qihoo 360
 
数据中心网络架构与全球化服务-Qcon2011
数据中心网络架构与全球化服务-Qcon2011数据中心网络架构与全球化服务-Qcon2011
数据中心网络架构与全球化服务-Qcon2011
 
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
 
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
 
章文嵩:使用Lvs集群架设高可扩展的网络服务
章文嵩:使用Lvs集群架设高可扩展的网络服务章文嵩:使用Lvs集群架设高可扩展的网络服务
章文嵩:使用Lvs集群架设高可扩展的网络服务
 
Metrics
MetricsMetrics
Metrics
 
LVS
LVSLVS
LVS
 

实时消息推送系统

  • 2. 无线网络速率对比 协议 下行速率 上行速率 2G GPRS ( 2.5G ) 57.6 kbit/s 28.8 kbit/s EDGE Evolution (2.75G) 1,184 kbit/s 236.8 kbit/s CDMA2000 1XRTT ( 2.5G ) 153 kbit/s 153 kbit/s 3G UMTS 3G 384 kbit/s 384 kbit/s EV-DO rev. A ( 3.5G ) 3.1 Mbit/s 1.8 Mbit/s HSDPA/HSUPA(3. 5G) 13.98 Mbit/s 5.760 Mbit/s HSPA+ ( 3.9G ) 21.6 Mbit/s WiFi 802.11a 54Mbit/s 54Mbit/s 参考 : http://en.wikipedia.org/wiki/List_of_device_bandwidths#Mobile_telephone_interfaces
  • 3. 关键指标 • 电量 小于 5%* • 流量 小于 3MB/ 月 * • 性能 30 秒内发送 10w 条次消息 • 稳定性 最高 24 小时不断线 / 消息 100% 到达 • 安全 基于 Oauth Token 的云帐号 体系 / CloudUUID / AES 加密 * 24 小时均联网
  • 5. 服务器架构 Admin 后台 API  服务器 BS 广播服务器 DB  数据库 WS   NCM 导航服务器
  • 6. 开发中遇到的难题 • 9493端口的由来. • 客户端心跳程序跟随系统一起休眠了. • 从websocket到mqtt,协议的研究 • hashring的算法不一样 • 心跳策略和算法的摸索,gprs/edge,hspa/u mts,wifi不同网络制式下的 keepalive time 。 • 重复发送和收不到,如何防止多个长连接。
  • 7. 系统调优 • Linux 系统内核 socket connection 调优 • 查看总限制参数 • ulimit -a • 查看 Linux 系统级的最大打开文件数限制: • cat /proc/sys/fs/file-max • * 通常这个系统级硬限制是 Linux 系统在启动时根据系统硬件资源状况计算出来的最佳的最大同时打开文件数限制。这个也 • 间接告诉我们这台机器可以同时承受 socket 的最大链接数。 • 第一步,修改用户进程可打开文件数限制,修改 /etc/security/limits.conf 文件,在文件中添加如下行: • * soft nofile 655350 • * hard nofile 655360 • 第二步,修改网络内核对 TCP 连接的有关限制 ,修改 /etc/sysctl.conf 文件 , 在文件中添加如下行: • net.ipv4.ip_conntrack_max = 655350 • *Linux 网络内核的 IP_TABLE 防火墙对最大跟踪的 TCP 连接数有限制,此限制值要尽量小,以节省对内核内存的占用。 • 第三步,执行 sysctl 命令 • sysctl -p • 修改客户机的端口范围 • 修改 /etc/sysctl.conf 文件,在文件中添加如下行: • net.ipv4.ip_local_port_range = 1024 65000 • sysctl -p • 参考 http://blog.csdn.net/guowake/article/details/6615728 • 《 http 长连接 200 万尝试及调优 》 http://rdc.taobao.com/blog/cs/?p=1062
  • 8. 调试工具 • Wireshark • tcpdump 命令: tcpdump -s0 -w /sdcard/a.pcap • adb logcat • 电流表
  • 10. 性能测试 分析:在整个性能测试过程中,可用内存一直维持在 9G 左右;仅维持 MQTT 连接时 CPU 利用率维持在 40% 左右。本测试场景使用 9 台压力测试机,运行 5500 (在测试过程中, 1000 个虚拟用户失去连接)个虚拟用户,每个虚拟用户建立 50 个 MQTT 连接。运行 21 hours, 17 minutes and 58 seconds 。 结论:达到了 1 台 WS 服务器最高承载 27.5W 个连接并能够正常保持登录的目标。
  • 13. 如何使用 API • 服务器端开发 • 第一步,通过 http get 请求访问 COA 提供 的 authLogin 接口, 获取 AcesssToken • 第二步,创建 Post 请求访问 COA 提供的 pushMesage 接口 • 客户端开发 • 云应用客户端开发 • 本地应用客户端开发 • 第一步,创建 Manifest 文件 • 第二步,接收消息
  • 14. 谢! 吴仲深 zhongshen.wuzs@aliyun-inc.com