第1章高性能聊天系统.PDF

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第1章高性能聊天系统

1 章 高性能聊天系统 第1 章 高性能聊天系统 本章以建立一个聊天系统为例,介绍如何使用J2SE 1.4 非堵塞I/O (NI/O )为核心开 发一个高性能的实时互动服务器系统,这个高性能服务器系统可以拓展为更广阔的应用, 如游戏系统、社区系统或者数据实时采集系统。 1.1 系统需求 聊天交流是目前互联网提供的主要内容。聊天系统有多种实现方式,类似ICQ 属于一 种点对点的聊天系统,还有一种是基于Socket 的集中式聊天系统,这种聊天系统需要登录 统一的聊天服务器,每个人的聊天信 其他人都可以看到,类似一种会议室,当然,两个 人之间也可以进行保密的私语。 在基于Socket 的聊天系统中,主要有两种角色:服务器和客户端,不同的客户端登录 集中式的服务器,通过服务器将一个客户端发出的信息推送到其他所有客户端。 基于Socket 的聊天系统最早实现是使用网页刷新方式,通过客户端不断地自动刷新, 将服务器端整个页面内容下载到客户端显示,这种方式的聊天速度慢,而且有刷屏现象, 很快被更新的聊天技术所替代。 聊天系统在客户端和服务器之间主要传送的是文字信 ,服务器端只需要把最新的文 字信息推送到客户端,这样减少了网络传输内容,节省了网络传输的时间,无疑提高了聊 天速度。这种 “推”技术是目前基于Socket 聊天系统的主要实现技术。 一个基于Socket 的聊天系统有下列具体功能要求: (1)客户端和服务器必须保持随时随地的连接。这有别于普通Web 浏览的连接方式。 在使用浏览器访问服务器时,先由客户端发出HTTP 协议,然后服务器响应处理这个客户 端的响应,再返回处理结果;请求 (Request )和响应(Response)是一种一对一的前后因 果关系。 而在基于Socket 的聊天系统中,客户端发出聊天信 的同时,客户端也在接受服务器 发送过来的其他人的聊天信 ,因此,请求和响应不存在那种前后对应关系,是两种分别 独立进行的进程。 因为服务器任何时候都可能发送信 到客户端,因此,客户端和服务器一旦建立连接, 必须能让服务器在以后发送中寻找定位到这个连接。 (2 )在速度性能方面,聊天系统提出了更高的要求。在网络连接的薄弱环节I/O 通信 方面,要求能够实现无堵塞地、流畅地数据读写。在面对几百个甚至更多的客户端同时发 出连接信 的情况下,服务器要求能够保持高性能的并发处理机制,迅速地完成这几百个 并发请求的处理和发送任务。 (3 )在扩展性和伸缩性方面,聊天系统也提出了一定的要求。当一台服务器不能满足 1 要求时,必须在客户端不知晓的情况下,通过不断增加服务器就能方便地拓展聊天系统的 整体处理能力。对于客户端用户来说,这些服务器群都象征一个统一的服务器,不需要他 们在进入聊天室之前先选择具体的服务器;也没有单个聊天室最大人数的限制,如果可以, 服务器群可以支撑一个巨大容量的聊天室。 1.2 架构设计 本系统的设计核心是Socket 底层通信,基于快速稳定的Socket 底层通信架构,不但可 以实现聊天系统,还可以实现其他如游戏、数据采取等实时性要求较高的系统,甚至可以 建立一个快速的平台服务器系统。相比J2EE 服务器系统,该平台系统的最大优势就是精简 的代码带来的高性能。 当然,如果单纯追求高性能和速度,也许直接使用汇编就可以。使用Java 设计这样的 实时系统,实际还有一种很重要的目的,即追求高度的可扩展性和伸缩性。 因此,本系统设计必须将高性能和高伸缩性两个方面和谐地统一起来,不能盲目追求 性能而破坏面向对象的编程风格和模式;也不能因为追求更大的重用性,建立太多复杂的 中间层,其实这方面J2EE 已经做得很好,有关J2EE 的应用将在以后章节重点讨论。 当然,高性能应该是本系统的主要特色,为了实现本系统高效率的并发处理性能,设 计上将采取Reactor 模式实现自我快速触发;网络通信上,使用非堵塞I/O 进行流畅地数据 读写,在应用逻辑上,通过非堵塞的多线程技术实现并发功能处理。特别是J2SE 1.4 以后 版本推出的非堵塞I/O ,将使得Java 表现出和C 语言同样的优越性

文档评论(0)

ldj215322 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档