




已阅读5页,还剩65页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本 科 生 毕 业 论 文 题 目: 分布式网络中的推送系统的设计与实现 院 系: 软件学院 专 业: 软件工程(计算机应用方向) 学生姓名: 学 号 指导教师: 明志(副教授) (职 称) 二 一五 年 三 月 摘 要 随着互联网计算机技术的飞速发展,网络已经成了大众生活必不可少的部分,它的最大优点就是可以将大量的信息互相共享。不管是移动终端还是个人电脑,人们总是可以通过设备进入互联网中获得自己感兴趣的信息。 但与此同时,由于互联网是属于大家 的,具有很强的开放性,使得网络上的信息每天都在呈爆炸式地增长,信息的泛滥而引起网民难以消化的现象已经不再是新鲜事。在当今这个步伐急促的社会中,要想通过普通浏览的方式在信息海洋中找到自己所需要的内容确实不是一件轻松的事,普通的浏览查找在当今已经可以说得上是一种既消耗精力又浪费时间的信息获取方式,在注重用户体验的今天,它已经很难达用户满意程度。 为了给各位网民带来具有针对性的个性化服务,将方便快捷的体验带给网民,信息推送技术( 运而生。有了 术,用户再也不用手动地在互联网上查找自己想要的信息, 而只需设置订阅自己所感兴趣的内容, 统就会定期地向用户推送相关消息,整个过程中用户处于被动状态,省去了手动查找等繁杂步骤,大大提高了用户的体验质量。 因此,推送技术已经在近些年中得到了巨大的发展和推广,尤其是在当今分布式主流的网络中,一个好的推送系统会给成千上万的用户带来便利,也给了各个消息发送方带来了推广渠道。通过推送系统,各个组织可以把自己的新闻消息推送到特定用户的设备中,形成了定向传送的局面,双方的需求都得到了满足,并且还有了效率的保证。 关键词: 信息获取,推送技术,个性化 of in of is of of or to to he/in to it is so in It is no a of In it is an to we in by is to of to it To no to to to in is So in An to to an to It in 录 第一章 前言 . 1 景现状分析 . 1 送系统概述 . 2 文结构简介 . 3 第二章 技术与原理 . 4 送基本原理 . 4 术优缺点分析 . 5 络编程 . 6 据库编程 . 11 介 . 11 据库操作 . 12 议介绍 . 17 第三章 架构设计 . 19 统架构及原理 . 19 务用例的实现 . 20 据库设计 . 22 建数据库的系统流程 . 22 的具体设计 . 24 第四章 模块设计 . 28 介绍 . 28 介绍 . 38 介绍 . 43 介绍 . 48 第五章 部署应用 . 52 行环境 . 52 用说明 . 53 第六章 结论 . 57 作总结 . 57 作展望 . 58 致谢 . 59 参考文献 . 60 1 第一章 前言 景现状分析 术对用户来说都是信息获取方式,但却是两种截然相反的信息获取技术。 信息拉取技术,在信息获取时,用户必须时时处于主动地位,并且参与信息获取整个过程; 术为信息推送技术,服务器处于主动 地位,用户处于被动地位。 通常情况下,人们都是采用“ 式从网络上“拉取”信息,即利用搜索引擎来获取信息的方式。随着网络上信息资源的日益丰富,基于 术的信息获取技术无论在信息的搜索速度、传输速度,还是搜索信息的质量上都越来越难以令人满意。这是由于 术自身存在的不足造成的。一是以 式获取信息不仅时间长,而且费用高。 术是通过 进行信息资源定位的。人们上网获取信息时,必须首先利用各种搜索引擎去查找各个服务器在网上的 后再通过 访问该服务器,定位、浏览、 选择自己所需的信息资源。这样人们查询一次信息,必须长时间地频繁登录多个服务器,因而不仅时间长,而且费用高。二是信息效率低,资源浪费严重。从网络技术上讲, 术是一种点到点的传输方式,当多个用户需要一条信息时,该信息就必须重复传输多次,因此严重地浪费了网络带宽和服务器资源。三是服务器被动服务,用户获取信息及时性差。 式获取信息时,用户是主动的,服务器和信息是被动的,也就是说,用户必须主动到服务器上寻找信息,这就是人们通常所说的“人找信息”。另外,这种方式客户机和服务器必须保持实时的连接才能获取信 息。但由于网络信息更新快,这就要求用户必须经常上网查看信息,否则很难及时获得自己所需的最新信息。 简单地说, 展到今天的规模,网上具有海量信息,这种依靠被动“拉取”信息的服务方式,在时间延迟、查全率、查准率、响应时间等方面都不能满足用户的需求,可以说,以 术为代表的信息获取模式已成为信息共享的瓶颈。 术对用户来说都是信息获取技术,但二者存在着根本的不同。 2 以 术为核心的信息拉取技术,在信息获取时,用户必须时时处于主动地位,也就是说,用户必须参与信息获取的 整个过程。而以 术为核心的信息推送技术,在信息推送过程中,服务器始终处于主动地位,用户却处于被动地位。 与 术相比, 术不仅获取信息的效率高,费用低,而且及时性强,因而它一出现便受到人们的青睐。 术能够通过一定的技术标准或协议,把用户感兴趣的信息,按照用户的要求及时、主动地推送给用户。用户收到信息后,还可以离线浏览。信息推送技术将深刻地改变网络信息的传播方式,使用户不必“大海捞针”式地搜集信息,而由服务器主动、及时地把用户感兴趣的信息推送给用户,用户可以“以逸待劳”地坐等信息 到来。 送系统概述 随着互联网越来越深入人心,网络容量和浏览人数都以惊人的速度增长着。当人们上网浏览资讯,面临着数以百万计的网页,他们就更需要一种简便快速的方法找到他们所需要的信息内容。毫无疑问,推送系统将是一个很好的选择,通过这类系统,用户可以全面、及时、准确的获得个人感兴趣的内容。 我们来打个比方,推送系统好比一个传递信息中间者,它的一边是发布方,一边是接受方,一旦发布方有了新的推送消息,它就立即将信息传递到特定的接收方当中,将原来复杂繁琐的步骤最简化,以提高信息分享的效率。 在推送系统的面前 ,人们只需要做这几件事,假如你是一个网民,你只需要订阅好你所感兴趣的内容,然后就可以悠哉的等待最新信息的到来,想接受什么消息和拒绝接受什么消息完全由用户来决定,以此体现了个性化的用户体验;接入你是一个组织,你想要发布一些消息(如新闻、通知等),你只需要填写好消息的内容,推送系统的服务器就会自动地将消息转发推送到被订阅的用户去,不必担心用户因为不在线而因此的消息推送失败,对于没在线的用户,服务器会将消息保存下来,等待用户下一次上线再推送,整个过程方便保险。 3 文结构简介 本论文各章节内容安排如下: 第一章作为本论文的绪论,主要论述了消息推送技术的背景现况、推送系统的概述,并简要介绍了本文的结构。 第二章会把实现系统的技术原理进行详细的阐述,比如如何实现推送功能、如何对在线用户进行管理、如何将信息中转保存等等关键技术问题,也会讨论到系统的运行机制和一些用到的关键算法。 第三章主要讲述整个推送系统的框架设计,该章首先会对系统进行一个整体化的分析论述,整体论述后还会对系统的各大模块进行功能性的介绍,并分析其在整个系统中的重要性以及各个模块之间是如何衔接起来支撑整个系统。 第四章 将会深入分析各个模块的设计实现过程, 剖析各模块的内部结构,也讲述到实现过程中要注意的细节以及如何对模块进行优化以保证系统的运行效率。 第五章 主要对消息推送系统的设计实现进行一个整体总结,并且提出本次实践当中存在的一些局限性和有待改进的地方。 4 第二章 技术与原理 送基本原理 尽管在定义上 式的消息推送是由服务器占有主动权,终端用户处于被动状态,但其实技术实现的背后还是基于“请求 响应”模式,在这模式上做了一定修改。终端用户一旦设置好自己的订阅内容,就不停“隐蔽”地向服务器发送请求,而一旦服务器发现有新的消息需要推送,就给 终端返回推送消息,以此实现了推送的效果。在这里主要涉及到两个方面,一个是轮询时间,它代表着终端访问服务器的时间间隔;另一个是服务器的请求处理方式,接收到来自终端的请求后,服务器可以选择挂起连接或者马上返回消息给用户。 根据轮询时间、请求处理方式,分为以下两种 简单轮询 : 客户端一般以定时方式发起请求,服务端处理后返回响应。 图 简单轮询原理 特点: 原理、客户端 /服务端实现简单 可根据应用场景调整轮询时间间隔 服务端需要处理大量请求 5 长轮询 : 客户端发起请求后服务端将该请求挂起(不返回响应),直到超时、异常或需要处理响应(推内容)才返回。客户端收到响应后再次请求(即轮询)服务端,并处理响应。 图 轮询原理 特点: 实时性高 服务端需要管理挂起请求 术作为一种网络信息获取技术是成功的 ,它的好处可概括为: 可以避免用户在网上无目的上网查找,利用离线浏览技术使用户可采用离线方式进行阅读。 可以提高被推送信息的准确性,控制搜索深度,过滤不必要的信息。 能被推送的信息内容有教学资料、新闻、电影、音乐、房产信息、股市行情、共享软件、天气预报等。 6 能被推送的文件有文字、图形、图像、声音、小程序等,并且可以超文本或通过超文本访问的文件的形式保存在用户的硬盘上。 可以推送通过专用的播放程序实时显示的信息,向用户提供多媒体信息。 务器能对各个用户的兴趣和偏好进行智能性识别、预测,根 据用户要求自动搜集定制信息并定期快速、连续不断地向目标用户主动推送,满足了用户的个性化需求。 但同时也存在很多需要完善的地方: 难以满足用户个性化的要求。 术是按照预先确定的一系列标准来传送信息的,这种标准是建立在发送方和接收方之间的协议上,而不是以用户需求为基础的。多数 品针对性较差,满足个性化程度不高,这在覆盖推送中表现尤为突出。 未能解决信息过载问题。 术本来是为了解决因特网上信息过载而出现的新技术,然而结果事与愿违。如果 品大量使用,反而会加重网络信 息过载。 数据风暴问题。“推送技术”与过去常用的“拉取技术”的显著不同是:拉取是由用户来控制信息的检索与获取,用户是主动的。而推送技术则考虑由其他方来控制信息的传送。当信息提供商将大量信息强制性地推向用户时,便会将用户淹没于“信息垃圾”中。 网络带宽浪费问题。 术为网络带来新的服务模型的同时也引起了带宽浪费问题,这主要是由 务器主动发送大量信息或客户代理自动进行站点搜索所造成的。因此, 品必须考虑如何有效地利用带宽,这将是决定该项技术前景的关键。 络编程 本推 送系统主要使用 言实现,因此 网络编程在本项目中占有很 7 大比重,而网络编程本来就是开发者的必备技术之一,接下来本节会简单介绍一下网络编程以及 身网络编程的一些技巧。 从通俗的角度上来说,网络编程就是指通过程序将数据从一台网络设备上传输到另一台设备之中去,而上述所说的程序实际上就是指服务程序和客户端,每一次的数据连接都是由一方提出请求,等另一方确认接受之后才会得以进行,并且客户端程序就是提出请求的一方,服务器就是被请求然后确认接受的一方。 在讲解网络传送的原理之前,我们需要理解两个概念, 一个是 址,一个是端口号。 址是一个 32 位的二进制序列,通常被分割成四个八位的二进制数,它好比是一台电话的电话号码,用来识别出互联网中的唯一设备,正是有了这个唯一的标识,我们才可以在千千万万台设备中将数据方便快捷的传输到我们的目的主机中去。 而端口号是用来识别数一台主机中的一个服务,也就是一个程序,每个程序都有自己的端口号,知道了端口号之后数据达到主机后就可以根据端口号分配到目的程序中去,以保证数据不会被其它服务所接收。 所以,通过 址 /端口号,我们就可以识别出网络中的唯一服务,实现双方的连接 和数据的传送。 尽管数据的传送是建立在 址 /端口号对之上,但传送的方式根据其机制的不同也分为多种,而当今网络连接协议主要分为两大类: 议以及 一种面向连接的协议,言下之意就是在数据传送之前设备之间必须先建立好可靠安全的连接,而每一次的连接必须双方完成了“三次握手”之后才能得以进行,即双方事前必须经过三重确认后才可以传输数据。另外, 接是一种安全的连接,它保证数据一定会传送到目的地,如果数据在传输过程中意外丢失,它会通过一系列的机制进行重发,并且设有阻塞机制以保证网络的稳定 性,常见的 议有 议、 议等等。 一种无连接协议,即在传送数据之前并不需要建立一个传输通道,而是从程序中获取到所要发送的数据,随后将之“扔”到网络中,整个过程并不需要维护一个数据的连接状态,它使用的是最大交付方式,即不保证数据能准确地 8 传输到目的程序当中,但因为不设有阻塞机制,因此速度会相对 接快,适用于一些流媒体或语音数据等传输,平时我们使用的“ 令就是对目标主机发送 议数据包以测试当前网络是否通行。 简单介绍完一些关于网络编程的概念之后,接下来谈一下现实 络编程中的实际方法,由于本推送系统使用的是 议,因此下面我们暂时不探讨络编程中 接的实现。 在 言中,对于 式的网络编程提供了良好的支持,在实际实现时,以 代表客户端连接,以 代表服务器端连接。在进行网络编程时,底层网络通讯的细节已经实现了比较高的封装,所以在程序员实际编程时,只需要指定 址和端口号码就可以建立连接了。正是由于这种高度的封装,一方面简化了 言网络编程的难度,另外也使 得使用 言进行网络编程时无法深入到网络的底层,所以使用 言进行网络底层系统编程很困难,具体点说, 言无法实现底层的网络嗅探以及获得 结构等信息。但是由于 言的网络编程比较简单,所以还是获得了广泛的使用。 下面分别介绍一下在 言中客户端和服务器端的实现步骤。 在客户端网络编程中,首先需要建立连接,在 以 以建立客户端网络连接,也就是创建 型的对象,该对象代表网络连接,示例如下: ,10000); ,80); 上面的代码中, 现的是连接到 址是 计算机的 10000 号端口,而 现的是连接到域名是 计算机的80 号端口,至于底层网络如何实现建立连接,对于程序员来说是完全透明的。如果建立连接时,本机网 络不通,或服务器端程序未开启,则会抛出异常。 连接一旦建立,则完成了客户端编程的第一步,紧接着的步骤就是按照“请求 型进行网络数据交换,在 言中,数据传输功能由 O 实 9 现,也就是说只需要从连接中获得输入流和输出流即可,然后将需要发送的数据写入连接对象的输出流中,在发送完成以后从输入流中读取数据即可。示例代码如下: ; /获得输出流 ; /获得输入流 上面的代码中,分别从 个连接对象获得了输出流和输入流对象,在整个网络编程中,后续的数据交换就变成了 作,也就是遵循“请求 型的规定,先向输出流中写入数据,这些数据会被系统发送出去,然后在从输入流中读取服务器端的反馈信息,这样就完成了一次数据交换过程,当然这个数据交换过程可以多次进行。 这里获得的只是最基本的输出流和输入流对象,还可以根据前面学习到的 用流的嵌套将这些获得到的基本流对象转换成 需要的装饰流对象,从而方便数据的操作。 最后当数据交换完成以后,关闭网络连接,释放网络连接占用的系统端口和内存等资源,完成网络操作,示例代码如下: ; 介绍完一个简单的客户端编程的示例,下面接着介绍一下 型的服务器端的编写。首先需要说明的是,客户端的步骤和服务器端的编写步骤不同,所以在学习服务器端编程时注意不要和客户端混淆起来。 在服务器端程序编程中,由于服务器端实现的是被动等待连接,所以服务器端编程的第一个步骤是监听端口,也就是监听是否有客户端连接 到达。实现服务器端监听的代码为: 0000); 该代码实现的功能是监听当前计算机的 10000 号端口,如果在执行该代码时, 10 10000 号端口已经被别的程序占用,那么将抛出异常。否则将实现监听。 服务器端编程的第二个步骤是获得连接。该步骤的作用是当有客户端连接到达时,建立一个和客户端连接对应的 接对象,从而释放客户端连接对于服务器端端口的占用。实现功能就像公司的前台一样,当一个客户到达公司时,会告诉前台我找某某 某,然后前台就通知某某某, 然后就可以继续接待其它客户了。通过获得连接,使得客户端的连接在服务器端获得了保持,另外使得服务器端的端口释放出来,可以继续等待其它的客户端连接。 实现获得连接的代码是: ; 该代码实现的功能是获得当前连接到服务器端的客户端连接。需要说明的是一个阻塞方法,也就是当无连接时,该方法将阻塞程序的执行,直到连接到达时才执行该行代码。另外获得的连接会在服务器端的该端口注册,这样以后就可以通过在服务器端的 注册信息直接通信,而注册以后服务器端的端口就被释放出来,又可以继续接受其它的连接了。 连接获得以后,后续的编程就和客户端的网络编程类似了,这里获得的 是服务器端需要首先读取发送过来的数据,然后进行逻辑处理以后再发送给客户端,也就是交换数据的顺序和客户端交换数据的步骤刚好相反。这部分的内容和客户端很类似,所以就不重复了。 最后,在服务器端通信完成以后,关闭服务器端连接。实现的代码为: ; 综上所述, 络编程步骤 大概可以概括为如下图: 11 图 络编程流程 据库编程 推送系统服务器可能会面临着大量数据的存储和转发,也会包括一系列的事务操作,因此系统需要数据库的技术支持来保证运作的效率。本推送系统使用了据库来维护数据,下面会介绍一下 言中数据库的使用技巧。 介 据库 连接)是一种用于执行 以为多种关系数据库提供统一访问,它由一组用 言 12 编写的类和接口组成。 供了一种基准,据此可以构建更高级的工具和接口,使 数据库 开发人员能够编写数据库 应用程序 。 有了 各种关系数据发送 句就是一件很容易的事。换言之,有了 不必为访问 据库 专门写一个 程序 ,为访问 专 门写一个程序,或为访问 据库又编写另一个程序等等,程序员只需用 一个程序就够了,它可向相应数据库发送 用。同时,将 言和 合起来使 程序 员不必为不同的平台编写不同的 应用程序 ,只须写一遍程序就可以让它在任何平台上运行,这也是 言“编写一次,处处运行”的优势。 据库连接 体系结构是用于 用程序 连接数据库的标准方法。 序 员而言是 实现与 数据库 连接的服务提供商而言是接 口模型。作为 程序 开发提供标准的接口,并为 数据库 厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。 用已有的 准并支持与其 它 数据库 连接标准,如 间的 桥接 。 现了所有这些面向标准的目标并且具有简单、严格类型定义且高性能实现的接口。 有坚固、安全、易于使 用、易于理解和可从网络上自动下载等特性,是编写 数据库 应用程序 的杰出语言。所需要的只是 用程序 与各种不同 数据库 之间进行对话的方法。而 是作为此种用途的机制。 据库操作 由于本系统采用的是 据库,所以本节接下来只介绍 言中据库的使用方法。 首 先,我们必须在主机中先安装好 据库以及在项目中导入据库的 动包以保证 序能正常访问数据库,以上操作网上有具体教程,在这里不进行详述。 完成上述两部后,我们就可以使用 供的 据库进行操作,操作过程主要分成以下几步: 1、加载合适的 动程序 13 动程序: 动程序: 动程序: 、建立数据库连接 与 据库连接的方法: ” ,用户名,密码 ); 用来处理装载驱动程序并且为创建新的数据库连接提供支持; 用于完成 对特定定数据库的连接; 用 于 对 特 定 的 数 据 库 执 行 句;包含了以下两个重要的子类型: 用于执行预编译的 句; 用于执行数据库中存储的过程的调用; 用于保存查询所得的结果集 3、创建 象 st=; /最后可以不关闭,但推荐关闭 利用 态 句、 句和 句。 执行 句 口提供了三种执行 句的方法: 、 和 。具体使用哪一个方法由 句本身来决定。 于产生单个结果集的语句,例如 句等。 于执行 句以及 据定义语言)语句,例如 句的效果是修改表中零行或多行中的一列或多列。返回值是一个 整数,指示受影响的行数(即更新计数)。对于 不操作行的语句, 返回值 14 总为零。 于执行返回多个结果集、多个更新计数或二者组合的语句。一般不会需要该高级 功能。 编译时并不对将要执行的 询语句作任何检查,只是将其作为一个 对象,直到驱动程序执行 询语句时才知道其是否正确。对于错误的 询语句,在执行时将会产生 一个 象在同一时间只能打开一个结果集,对第二个结果集的打开隐含着对第一个结果集的关闭。 如果想对多个结果集同时操作,必须创建出多个 象,在每个 象上执行 询语句以获得相应的结果集。 如果不需要同时处理多个结果集,则可以在一个 象上顺序执行多个 询语句,对获得的结果集进行顺序操作。 24,; 执行 方法返回该句涉及的记录数。 /查询表中记录 rs= 由于 句是 方法,返回一个结果集保存在 象 。 4、分析 象 执行完毕 句后,将返回一个 的对象,它包含所有的查询结果。但对 的对象方式依赖于光标( 类型,而对每一行中的各个列,可以按任何顺序进行处理(当然,如果按从左到右的顺序对各列进行处理可以获得较高的执行效率); 中的 式主要有: 缺省设置):光标只能前进不能后退,也就是只能从第一个一直移动到最后一个。 许光标前进或后退并感应到其它光标的移动情形。 许光标前进或后退并不能感应 15 到其它 光标的移动情形。 中的数据是否允许修改主要有: 缺省设置):表示 数据只能只读,不能更改。 示数据允许被修改。 可以在创建 象时指定 这两个特性。 或 ?,?,?), 的对象维持一个指向当前行的指针,利用 的 方法可以移动到下一行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论