首页 > 代码库 > 《环信支持千万并发即使通讯的技术要点》阅读摘要

《环信支持千万并发即使通讯的技术要点》阅读摘要

一天早上起来,偶然机会看到《环信支持千万并发即使通讯的技术要点》演示文档,简单翻阅之后,感觉干货很多,于是快速记下以下笔记。

一。IM协议和IM Server

870671719

XMPP确实很传统,WhatsApp选用了,同时经过压缩、精简(比如说user字符串使用u字符替代)处理,让XMPP轻量不少。

MQTT,如何实现群组、好友呢,这个是业务层面上事情,大家都订阅某一个主题Topic好了,属于业务拓展。

SIP,接触少。

微信私有协议ActivitySync,以前在博客上分享过。

881148668

正确拼写是WhatsApp,呵呵。

881243517

针对XMPP协议的改进,很有参考价值。

心跳单向四个字节,在XMPP协议下,估计应该是极限了吧。在私有协议协议下,一来一往两个字节足够。

文件传输方式,这是业界通用方式。

移动互联网环境下,用户永远在线,大家的共识。可是取决于手机有没有连接到服务器端,这是无法逾越的障碍。

Muc聊天室,业务层面改进。

881482479

这个针对使用OpenFire的同学,很有参考意义。

话说,我以前也安装过OpenFire,定制过在线聊天/咨询的代码。

二。移动网络环境下的网络、电量等客户端优化


868742751

IM或推送,建立长连接是必须的,可以节省TCP来回创建的开销,但断线之后,是否需要即刻重连,尤其是处于地铁、WIFI边缘地带,可能会造成重连风暴,需要添加稍加延迟连接机制。

针对发送的消息的回执,客户端一定要发送回执反馈,否则不知道是否发送成功与否。

868780347

流量跑马测速,心跳智能,压缩传输。

868832358

Android手机端优化措施,干货、细节很实用,可以直接拿来用,分享很给力,呵呵!

批量、合并数据请求/发送,增量更新,这是一个大家都应该使用的常规节省流量手段,应牢记!

难得的是,分享了:

2G 文件上传最佳buffer size 1024个字节,3G/4G下直接设置为10K

2G 文件下载最佳buffer size 2048个字节,3G/4G下 30K

绝对经验的总结,赞!

心很细,给出了频繁的属性访问直接声明protected/publish了,不创建新的Java对象只能static类型了。记得很久以前写J2ME程序时,就用过这样的方式。

868936208

实践中走过多少弯路才总结出来的同步、绘图、渲染页面惊艳,尤其是支持离线方式的数据同步机制,很受用。

三。百万级架构经验分享

868995894

虽然很简单,熟悉TCP/IP协议,这是毫无疑问。

无状态协议交互,才能够很容易水平横向扩展,也是当今共识。

让所有操作都要尽可能的异步

869119306

典型的按照机房进行完整部署,若不能够在DNS层面做到按照用户ID进行指派(HTTP DNS进行接入IP分配),那么就必须处理用户乱入机房的问题,必然要做到一些数据的跨机房的同步,大家都会采用增量式同步方式,跨机房一般常见30毫秒的延迟,批量形式增量同步,那都不叫事。

可以看到业务垂直切分,各个业务之间水平扩展。

869214857

貌似可以看到单元化CELL/SET架构的影子,但这只是自己的瞎猜而已。

PPT上架构图文字细节不甚清晰,再加上自己近视,分辨不太老好的,可以看到消息存储使用了Kafka(和数据库集群之间存定时拉取关系),分布式锁基于Zookeeper,前端LVS做负载均衡,业务非常垂直。

在PPT上只看到了两个机房,若用户量级上亿,可能需要扩展到第三个、第三机房,可能跨机房同步的压力就就凸显出来了。

四。小结

总之,干货不少,很给力,再次对刘少壮大牛表示感谢!

原PPT下载地址:http://vdisk.weibo.com/s/A0GI9rXObFMd

PS: 若有侵权,请及时告知。

《环信支持千万并发即使通讯的技术要点》阅读摘要