单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,http:/ Server,CN Erlounge III,Shanghai,Tim,Google talk:,Blog:,http:/ Miller,于,1999 January the 4,th,把一种新的开放的,IM,协议取名,Jabber,the IETF accepted XMPP-related RFCs as Internet Drafts on 2004 october the 4,th,目前业界逐渐转向新名称,http:/ much more.,压力测试工具,(Tsung,Java XMPP Test Client),http:/ IM,Mobile IM,等各种场合,基本都有开源实现或,Library,。,http:/ API,的流行及问题,twitter,XMPP,代替,HTTP Pooling,的趋势,OSCON day 1:Beyond REST?Building Data Services with XMPP PubSub,http:/ XMPP the Future of Cloud Services?,http:/ Avatars,目前广泛采用,),表情,正在输入信息,User Mood(XEP-0080,个性签名,),GeoLocation(XEP-0080),User Activity(XEP-108,如发表了一篇博文等,),User Tune(XEP-118,正在听音乐,),文件传输、语音、视频,(Stream Initiation,jingle),更多,(http:/xmpp.org/extensions/),http:/ resource,Roster subscription,Presence,Message,IQ,S2S,XEP,http:/ bot,Client bot,实现简便,不便实现大规模服务,Component bot,作为,Component,注册到主服务器,可以实现,round robin load balance,,可以实现大规模的服务,rabbiter,S2S bot,可支持多服务器和负载均衡,但需增加额外的,XMPP,协议栈实现,http:/ Server,面临的主要问题,大型,XMPP,服务器 指在线用户大于,100,万,用单台服务器无法满足运营需求。,面临的主要问题:,连接数,100,万以上面临的问题,内存,逻辑服务器的主要瓶颈之一,Presence,Message,db,http:/ presence,即,online/away/busy,集群系统的瓶颈,处理量是:,O(,平均好友数*在线用户峰值*变化频率,)msg/sec,如,50*1000000/300=166,666/s,http:/ pubsub,publish topic(,可理解改变在线状态,),生命周期可能极短,调用一次就结束,(,用户在本节点无好友在线,),;也可能很长,publish,数据实时广播即可,无需保存等待,consumer,到来,subscribe list,相对固定,(,在线好友列表,or follow list),subscribe list,需要跨节点的,即一个,topic,在多个节点有,local subscribe list(,我的好友登陆在不同服务器,),对性能要求极高;分布式,无中心节点,http:/ M,挂起几秒通常会造成延迟。,可靠到达,丢信息会流失用户。但网络、路由及程序通常会发生故障,,0.1%,的故障会引起用户大量投诉。,顺序,信息到达错序会引起笑话。但服务器通常是多线程处理所有数据包,不容易保证顺序。,http:/ Message,每秒需要处理上万次查询,上千次修改,http:/ Google Talk Server,基于,XMPP,协议实现,使用,Java,实现,实现的难点:,服务器峰值流量 峰值,QPS 10,万,一上线即大容量,没有平缓增长的过渡,压力测试,实验室的压力只是一个开端,上线前选取,10%,的用户做压力测试,http:/ Google Talk Server,数据库和应用都支持动态扩展,无需停机。,并不支持跨,IDC,作者认为在海量流量处理下,跨数据中心不利于系统处理。,避免客户端或服务器自动重连造成,DoS,问题,服务器瞬时访问过大而瘫痪。使用策略?,运行监控体系,可以分析系统任一时刻配置文件,系统运行状况。,各个模块之间协议保持向前和向后兼容。可以逐个和批量升级,http:/ IM,Flash client,SparkWeb(opensource),XIFF library,缺点:不能关浏览器窗口或离开窗口,http:/ Web IM,XEP-0124 Bidirectional-streams Over Synchronous HTTP(BOSH),XMPP over HTTP,Gateway,只做协议转换,胖客户端,缺点,http:/ IM,Web gateway,使用,JSON,Web gateway,处理所有,XMPP,逻辑,http:/ chat,Facebook Chat,与一般的,IM,系统一样。最复杂之处不是消息发送,而是在线状态通知。而,facebook,为了提高用户体验,考虑增加的功能更增大这些处理,比如好友可以看到某个用户“,idle-for-10-minutes”,,用户即使不操作也有巨大负荷。,Facebook,使用基于,epoll,技术的,erlang web server,mochiweb,Erlang,跟其他语言,RPC,交互是选用,Erlang,的最大问题,,Facebook,为了解决这个问题,自己开发了,open source,的,Thrift,实现远程,RPC,http:/ or Socket,XMPP,优势,和,PC,Web,很容易互联互通。,Android/G1 XMPP binary protocol,SIP,Nokia XMPP support,Nokia Internet Tablet,S60 SIP stack,SIP,在语音视频方面具有很好的平台支持,libjingle,目前没有,SIP,兼容,http:/ talk:iso1600at ,Blog:,http:/