1.astrozhou|周志杰

2.微信Mars之高质量网络连接探索 astrozhou|周志杰

3.自我介绍 • 10年毕业加入腾讯,开发S60v5 手中邮 • 11年初转战微信, 开发symbian版本微信 • 12年末专注于跨平台组件开发 • 网络组件 • CDN • 统计/监控组件 • 终端质量平台 • Mars开源

4.大纲 1 微信Mars概览 2 Mars STN模块介绍 3 Mars STN的连接策略 4 Mars STN超时机制的演进 5 Mars未来规划运营

5.1 微信Mars概览

6.Mars的研发历程 ü 各平台实现不统一,经常要服务器 “善后” ü 用户量剧增,潜在隐患 ü 基础研究很难开展和推广 ü 新平台上重复的工作量,浪费人力 物力

7.Mars介绍 Business Logic 其他 通信录 微信 Adapter Auth Task Notify Config Encode/Decode XLOG STN IP、 Port 策略 XLogger 任务管理 网络链路 运行时日志 容灾 策略 监控 数据 同步、异步 加密、压缩 COMM KVReport SDT ping、traceroute、dns、tcp、 http Others Crash监控与上报 Thread Mutex Condition Socket Alarm Coroutine AutoBuffer Singleton WakeLock MessageQueue iOS & Android & OS X & Windows & WP8 & UWP

8.微信中的Mars 日活5.5亿 Android 日发信百亿级 iOS OS X 微信4年验证 Windows 多款应用接入 UWP WP

9.2 Mars STN模块介绍

10.STN介绍 对比:STN VS AFNetworking、Retrofit、OkHttp • 跨平台网络框架 • Socket层的解决方案 • 信令网络:更适合小数据传输 特点 • 提供长连、短连两种网络通道 • 贴合“移动互联网”的网络层解决方案 • 贴合“移动终端”的平台特性:前后台、活跃态、休眠、省电、省流量等 更多 • 数据监控 • 问题定位 • 参数配置

11.STN概览图

12.3 Mars STN的连接策略

13.CONNECT超时的抉择 • 超时选择的困难:4s or 10s or 20s or 30s or … • 可用性 • 网络敏感性 • “权威”的默认实现

14.各平台的CONNECT超时机制 • Android超时机制 • iOS超时机制 • 超时选择

15.CONNECT超时的抉择 • 超时选择 0 5 10 15 UNIX IOS ANDROID

16.连接的效率 并发连接 • 网络资源竞争 • 服务器负载 • 最快可用 串行连接 • 资源占用少 • 无服务器负载问题 • 超时选择困难 • 最慢可用 复合连接

17.复合连接 1. ip1+port1 0s连接,10s超时 2. ip2+port2 4s连接,14s超时 3. ip3+port3 8s连接,18s超时 … 任何一连接成功,其他连接关闭 ü 连接成功率提升5% ü 更快找到可用链路和IP轮转

18.建立连接的其它优化 复合连接 网络敏感 网络切换 业务重连 旁路检测 任务触发 前台1分钟 自动重连 前台10分 钟 活跃态 非活跃态

19.4 Mars STN超时机制的演进

20.超时的分层设计 —— 链路层 关键技术: ü FEC üARQ ü HARQ是3GPP的标准方案 NAck

21.超时的分层设计 —— 传输层 • UNIX平台:[1、3、6、12、24、48、64、64…]

22.超时的分层设计 —— 传输层 • Android平台:[ 0.25,0.5,1,2,4,8,16,32,64,64,64 …]

23.超时的分层设计 —— 传输层 • iOS平台:[ 1,1,1,2,4.5,9,13.5,26,26 … ]

24.超时的分层设计 —— 应用层 • 目标: • 高性能:在用户体验的接受范围内,尽可能的提高成功率 • 可用性:保障弱网络下的可用性 • 敏感性:具有网络敏感性,快速的发现新的链路 • 重试的作用 • 减少无效等待时间,增加重试次数:当TCP层的重传间隔已经太大的时候, 断连重连,使得TCP层保持积极的重连间隔,提高成功率 • 切换链路:当链路存在较大波动或严重拥塞时,通过更换连接(一般会顺带 更换IP&PORT)获得更好的性能

25.STN的多级超时——读写超时 超时 发包大小/ 最低网速 服务器约定最 大耗时 最大回包大小/ 最低网速 并发数*常量

26.STN的多级超时——首包超时 超时 发包大小/ 最低网速 服务器约定最 大耗时 并发数*常量

27.STN的多级超时——包包超时 动态超时 包包超时 • 每次读取或发送的间隔 动态超时 • 根据网络情况,调整其他超时的系数或绝对值 发送超时 • 获取sock send buffer

28.STN中的多级超时 任务超时 发送超时 首包超时 DNS超时 连接超时 包包超时 ... ... 读写超时 一般来说,超时都是最坏的手段(例如RTO) 多种超时,更迅速的发现问题(例如TLP) DNS 连接 发送 接收

29.5 Mars开源的未来规划运营

30.开源计划及未来发展 • 春节前,预计12月底 • 运营 • 微信将持续使用Mars并保持新变化的更新 • 微信内已有更多的APP接入,未来也将持续的增加接入 • 未来发展

31.联系我们 mars tinker 高可用 mmdb 微信终端开发公众号

32.Q&A 谢谢!

s60 微信 服务器繁忙,微信Mars — 移动互联网下的高质量网络连接探索相关推荐

  1. 微信支付服务器繁忙,微信转不了账了怎么回事?微信转账显示系统繁忙怎么办?...

    微信转不了账了怎么回事?微信转账显示系统繁忙怎么办?今天好多小伙伴都遇到了微信转不了账的情况,微信服务器今日下午出现故障,部分用户微信无法转账,从其他APP分享文章.音乐到微信则提示当前网络不可用.那 ...

  2. 微信加不了公众号服务器繁忙,微信公众号系统繁忙是怎么回事

    大家好,我是时间财富网智能客服时间君,上述问题将由我为大家进行解答. 微信公众号系统繁忙的原因如下: 1.可能由于网络不稳定导致,解决方法:建议更换其他网络或使用wifi网络登录使用. 2.可能公众号 ...

  3. 微信小程序登录面板切换不了账号,显示网络连接失败?

    打开开发工具就会显示这个提示,无论我是点击确定还是取消,切换账号都显示网络连接失败~!!!!!! 我看了一些博客,说是选择直连代理.我试了,还是显示 网络连接失败,重启电脑,重配置网络服务都试了还是这 ...

  4. 平板电脑显示服务器繁忙,微信公众平台微信保护-微信公众平台登陆系统繁忙是什么原因登陆的时候有个微信扫描认证?微 爱问知识人...

    出现这个提示的原因一般可能有以下几种: 1. 网络不稳定 2. 腾讯服务器问题 3. 腾讯微博与注册的公众号名称不同名 4. 腾讯微博没有认证过 出现以上问题自己如果解决不掉可以通过微品工作室快速解决 ...

  5. 微信qq邮箱提醒 服务器繁忙,微信设置密码失败,QQ无法绑定,邮箱服务器繁忙...

    满意答案 nthetm 2016.09.29 采纳率:52%    等级:8 已帮助:261人 QQ邮箱发邮件老是显示系统繁忙的原因及解决方法如下: 1.同一时间操作QQ邮箱的人员太多导致系统繁忙,可 ...

  6. 抖音微信登录服务器繁忙,微信登录抖音失败解决方法介绍

    微信登陆抖音可以想必一些小伙伴出现了问题,这到底是怎么回事呢?下面18183小编就为各位玩家带来了微信登录抖音失败解决方法介绍. 微信登录抖音失败解决方法介绍 1.登录的时候没有同意授权; 2.版本没 ...

  7. 服务器繁忙 微信 苹果,iOS 9正式放出 服务器繁忙苹果推荐用户早晨更新

    [TechWeb报道]苹果在之前的发布会上曾经明确表示,iOS 9会在9月16日推出正式版,那么这个正式时间在国内究竟是什么时候呢?根据苹果官方的回答,北京时间16日凌晨0:00开始升级,也就是昨天晚 ...

  8. n96 微信 服务器繁忙,网友称塞班手机已无法登陆QQ/微信

    从当年街机N73,到T9 机皇N95,再到全键盘机皇E73,最后到触屏旗舰N97.机皇这个称号一直是N系列的代表.塞班系统也一直陪伴着我们80, 90 后.虽然当时屏幕最早只有1. 5 到2. 4 英 ...

  9. 微信改密码qq邮箱服务器繁忙,微信无法通过邮件修改密码,解决方法

    现在各种智能手机已经成为我们生活中不可或缺的电子产品,现在手机几乎可以满足人们所有的需求,包括娱乐和各种工作需求都可以满足. 微信无法通过邮件修改密码,解决方法 1. 特别是随着各种移动支付平台的出现 ...

最新文章

  1. 前端开发-日常开发沉淀之生产环境与开发环境
  2. ELK日志管理之——logstash部署
  3. 获取socket对应的接收缓冲区中的可读数据量
  4. angularjs入门学习【应用剖析中篇】
  5. 《浪潮之巅》十八十九章笔记
  6. 数据结构与算法python—5.队列及python实现与leetcode总结
  7. JNI FindClass出错的一种特殊情况
  8. 傅里叶变换与拉普拉斯变换
  9. 清华大学829考研 初试436经验谈
  10. laypage分页java例子_laypage分页控件使用实例详解
  11. 我的盖洛普“优势识别器”测试报告
  12. 网站服务器被劫持,网站服务器被劫持了怎么修复
  13. php机器人聊天对话框,基于AIML的PHP聊天机器人
  14. 哈工大csapp计算机系统大作业
  15. 逻辑回归实例,特征预处理
  16. 如何在电脑上添加蓝牙耳机设备
  17. gboard包名_如何在Android的Gboard键盘中搜索表情符号和GIF
  18. ffmpeg压缩命令
  19. idea的debug功能详解
  20. Axapta program, involve MenuItem:程序定义MenuItem

热门文章

  1. CREO:CREO软件之零件【工具(调查/模型意图/实用工具)】、【视图(可见性/方向/模型显示/显示/窗口)】的简介及其使用方法(图文教程)之详细攻略
  2. 【转载】FreeIPA中间CA证书已过期
  3. ios 打包 验证应用失败原因汇总
  4. python 100days github_GitHub - 596861134/Python-100-Days: Python - 100天从新手到大师
  5. excel多窗口分屏并列显示
  6. 上传图片为线上图片,可以在线访问
  7. 收入结算与提现常见问题( iOS )
  8. 2018C语言自考答案,2018年中考语文试题解析
  9. 向日葵 11.0.0.34335 中文版 (老牌国产远程控制软件)
  10. 开发者的如何优雅的使用OSX