- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Tornado即时通讯系统设计与实现
基于Tornado即时通讯系统设计与实现
摘 要
即时通讯系统已经成为人们日常生活中必不可少的交流工具,随着HTML5的兴起以及富客户端应用的发展,基于WEB的即时通讯系统已经成为互联网应用的一种发展趋势。本文的目的在于探求一种能同时容纳数千万人同时在线的高性能即时通讯解决方案。本系统前端为了开发出美观、友好的系统界面,采用成熟的Extjs框架,这样还可以降低开发成本;后端则采用高性能服务器Tornado处理用户请求,数据存储使用MySQL数据库持久化存储用户数据,并利用Redis数据库作为消息缓冲区,来优化系统。客户端采用AJAX技术,主动定时的拉取服务器上的最新数据。从实际使用上看本系统较强的鲁棒性,良好的可扩展型,并且具有较低响应时间,较高系统的吞吐量和用户的并发数。
【关键词】软件工程 即时通讯 Tornado Extjs AJAX
从1994年以色列人发明IM(Instant Messaging即时通讯)的鼻祖“ICQ”到1999年腾讯推出QQ,再到今天的微信,IM已经成为互联网上最大的应用之一。IM的出现改变了现代人的交流方式,如今IM不仅成为人们日常交流的工具,更成为企业与用户交流的重要渠道。随着HTML5的兴起以及基于WEB的富客户端应用技术的飞速发展,国内外对基于WEB的IM也有了相当多的研究和应用。
本文介绍的基于Tornado的即时通讯系统,前端采用Extjs框架,后端使用Tornado作为服务器,通过Ajax技术进行客户端与服务器间的通讯;通过需求分析,概要设计,详细设计等环节完成整个系统的设计。并利用Redis作为缓存来优化系统的响应时间,提高系统的吞吐量和用户的并发数。
1 需求分析
即时通讯系统是一个在线交流的工具,它应该能够方便的进行更新、升级、与其它系统集成。它应该尽可能的提高用户满意度。它的用户可以分成两类:管理员和普通用户。因此对于管理员应该能对系统进行有效的管理;对于普通用户,在线交流是最重要的功能,他们之间能够进行一对一、多对多等方式进行交流、互传文件,还应该能够查询自己与其他人的通讯记录。
2 总体设计
2.1 系统目标
根据需求分析,即时通讯系统应实现以下目标:
(1)为了避免下载安装以及软件升级的麻烦,本即时通讯系统采用B/S架构;
(2)要求较高的用户并发数,能够满足千万级别的用户同时在线交流;低时延,不能让用户在相互的交流中感到系统的卡顿;
(3) 要求系统具有良好的可扩展性,能够透明的增加或减少服务器的数量,能够简便的把该即时通讯系统集成到其他系统中;
(4) 具有较强鲁棒性,当机器发生磁盘故障、网络过载时能够保证系统的稳定性和数据的完整性。
(5)系统界面友好、美观,降低用户使用时的学习成本。
2.2 系统环境
对于开发环境,本系统在Linux系统下,采用Python语言进行开发;运行在Linux操作系统上,使用开源的Tornado作为Web服务器;客户端使用Extjs框架,javasript脚本语言开发,运行于浏览器上,如Chrome,Firefox,IE等。
Tornado是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本,它和现在的主流 Web 服务器框架有着明显的区别:它是非阻塞式服务器,而且速度相当快。得利于其非阻塞的方式和对 epoll 的运用,Tornado 每秒可以处理数以千计的连接,这意味着对于实时Web服务来说,Tornado 是一个理想的 Web 框架。
Extjs可以用来开发RIA也即富客户端的AJAX[3]应用,是一个用Javascript写的,主要用于创建前端用户界面,是一个与后台技术无关的前端AJAX框架。
2.3 系统架构
本系统所有服务器都采用多机热备,这样可以提高系统的鲁棒性;采用Redis内存数据库作为用户消息的缓存,用户通讯的过程中发送和接受消息就可以直接从内存中读取,不用每次都去读写磁盘为了提高系统的吞吐量和用户并发数;为防止因断电等原因造成的用户消息丢失,专门设计一个模块用来异步数据备份到MySQL数据库。系统的架构如图1所示。
3 系统实现
3.1 功能实现
根据需求分析,本系统可为7个功能模块,各个模块的具体功能如下:
(1)发送消息,用户发送消息到服务器,又分为普通发送和群发消息。
(2)接收消息,用户从服务器接收消息,又分为普通接收和群接收消息。
(3)检查消息,检查是否有发送给该用户的新消息。
(4)查看通讯记录,查看与某个用户的聊天记录。
(5)建群,用户新建一个群,用来多对多聊天。
(6)修改个人信
文档评论(0)