您的位置:首页 > 运维架构 > 网站架构

微信、陌陌等著名IM软件设计架构详解-低手解读

2015-04-08 10:26 239 查看
原文 :微信、陌陌等著名IM软件设计架构详解

1 什么是IP直连?

参考:

DNS优化之IP直连

android httpclient 服务器 ip 直连问题

(移动互联网中,DNS解析的失败率是联网失败中占比很大的一种。为了优化这个问题,我们使用了IP直连。即,从服务器拉取一个配置文件,里面包含域名到IP映射。客户端每次联网时根据域名在配置文件中查找到对应IP,直接使用IP进行请求……)

2 protobuf 是什么协议?

参考:

开源点评:Protocol Buffers介绍

(简单地说,这个东东干的事儿其实和XML差不多,也就是把某种数据结构的信息,以某种格式保存起来。主要用于数据存储、传输协议格式等 场合。有同学可能心理犯嘀咕了:放着好好的XML不用,干嘛重新发明轮子啊?!先别急,后面俺自然会有说道。话说到了去年(大约是08年7 月),Google突然大发慈悲,把这个好东西贡献给了开源社区。这下,像俺这种喜欢捡现成的家伙可就有福啦!貌似喜欢捡现成的家伙还蛮多滴,再加上Google的号召力,开源后不到一年,protobuf的人气就已经很旺了……)

3 如何针对弱网络优化协议?



4 智能路由、连接策略有哪些?

多端口、双协议支持

应对移动网关代理的端口限制

支持TCP、HTTP两种协议

根据备选IP列表进行并发测速(IP+端口+协议)

后端根据终端连接情况,定时更新终端的备选IP列表

终端在连接空闲时上报测速数据,便于后端决策

TCP协议不通,自动切换到http

优先使用最近可用IP

并发测速,根据终端所处的位置下发多组IP、PORT,只用IP,不用域名,手机上的DNS50%不准

负载均衡器(LVS…)的问题– 单点失效

单点性能瓶颈

负载均衡从客户端开始做起• 域名负载的问题

域名系统不可靠– 更新延迟大

5 客户端优化

–使用一收一发的消息队列方式处理

–使用Android service可被系统随时唤醒

–独立进程,更轻量与app进程互不影响

–使用native socket精确调优、提高成功率

–多线程连接多个后台,最快建立连接,连接测速,记录最优ip(如何测速????记录响应时间?

–保持长链接,不使用http协议,反域名劫持,IP直连

–添加重试策略
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: