Web组件系统及其数据交换方法

文档序号:7605818阅读:190来源:国知局
专利名称:Web组件系统及其数据交换方法
技术领域
本发明涉及通信领域,具体而言,涉及一种TOB组件系统及其数据交换方法。
背景技术
对于软件系统集成工程师,或者是大型软件系统设计师来说,通常系统的构成被 划分为若干的独立并且有联系的组成部件,这些组件通常遵循高内聚,低耦合的原则进行 划分。也就是说,每个组件内部仅处理某种特定的逻辑功能,不同的逻辑功能由不同的组件 来处理,这就是高内聚;同时,要求组件在实现自己的逻辑功能时能够独立完成,尽量少的 依赖外部的其他组件,这就是低耦合。尽管遵循低耦合原则,但组件间不可能完全避免依赖 和联系,否则的话若干组件就无法互相协作构成一个有机整体。因此,在划分组件时,既要 让组件之间发生联系,又要尽可能减少这样的联系,避免组件之间产生过大的依赖关系从 而阻碍组件各自独立的升级和扩展。组件间的联系和依赖直接表现为组件之间互相调用接 口,但其实质是满足组件间数据交换的需要。只要有某种合适的数据交换机制,就能降低组 件间因接口调用而导致的依赖。例如,如果有一个专门用于数据交换的组件,那么需要交换 数据的组件间就可以通过数据交换组件来进行间接的数据交换,这样就能避免组件间的直 接调用依赖,降低耦合程度。如果数据交换组件实现一种通用的数据交换功能,那就可以为 系统内众多的组件间数据交换提供低耦合的交换方式。通常这样的数据交换组件采用队列 模式,即产生数据的组件将数据压入队列队尾,而获取数据的组件则从同一个队列的队首 获取数据,如此就可以实现组件间的间接数据交换。这样的队列式数据交换组件的表现形 式多种多样,但实质上都是这样的基于逻辑队列的“生产者-消费者”模式的运用。另外,在 IM(即时通讯)领域有一种叫“发布-订阅-通知”模式的用户在线状态数据交换方法,即 IM登录用户发布自己的状态到服务器,同时此用户的多个好友用户也分别发送订阅请求到 服务器;当登录用户一旦完成自己的状态发布,服务器就会自动依据订阅的情况将这个发 布所包含的状态信息通知给之前所有的已订阅的好友用户。这个典型的应用在QQ,MSN等 IM应用中显示好友是否在线,好友签名等功能中,就是对此“发布-订阅-通知,,模式的实 际运用。这个模式也能够实现数据交换,但仅运用于IM系统的广大用户之间的在线状态数 据的实时交换,并且已形成一套IETF的协议标准。对于前述的组件数据交换方法,如果采用基于队列模式的交换,好处就是可以实 现大量的,大块头的数据交换,但缺点就是会引入延迟,因为向队列输入数据的组件和从队 列取出数据的组件是异步操作的,各自独立,从数据输入到数据被取出,中间有不确定的延 迟。如果某些系统希望组件间的数据交换能够达到实时或准实时,就不适合采用队列模式。 另外,由于从队列获取数据的组件并不知道何时有新数据产生,所以通常要采用主动轮询 的方式不断询问队列中是否存在数据,这样就会造成计算资源的浪费,效率不高。此外,如 果数据交换需要针对不同类型的数据有不同的交换优先级,仅简单的使用队列就无法满足 这种需要。最后,由于队列模式是使用入队,出队的操作进行数据操作,一旦数据被取出,队 列里就不再保存这个取出的数据,因此用队列方式只能实现组件间一对一的数据交换,如果有一对多的数据交换需要,则无法满足。如果采用“发布-订阅-通知”模式,则能在一定程度上克服队列模式的缺点,因 为该模式可以较好地解决数据延迟问题,并能解决一对多的数据交换需求。但是,目前的 “发布-订阅-通知”模式是为IM系统交换用户间状态信息而设计,这种模式主要为解决大 量用户间的小块数据交换而设计,即“多而小”的数据交换模式,并形成了以SIP,SIMPLE, XPIDF等协议规范。这些协议规范使用了一套新的协议,在TCP/IP协议之上使用了一套新 的服务端口。如果要使用这套机制,就要找到一个实现了这套协议的协议栈。目前还没有 成熟的协议栈实现产品。并且,就算有这样的协议栈产品,由于这样的协议栈是设计用来为 IM应用服务的,功能逻辑较为复杂,性能上难以保证。如果直接用这样的标准的“发布-订 阅-通知,,模式来实现web组件间数据交换,则显得比较“重”了,并且其“多而小,,的交换 模式不一定适合web服务端组件级数据交换。另外,这样的模式不支持数据交换的优先级 控制。针对相关技术中TOB组件系统中数据交换延迟比较严重的问题,目前尚未提出有 效的解决方案。

发明内容
针对相关技术中TOB组件系统中数据交换延迟比较严重的问题而提出本发明,为 此,本发明的主要目的在于提供一种WEB组件系统及其数据交换方法,以解决上述问题。为了实现上述目的,根据本发明的一个方面,提供了 一种WEB组件系统。该TOB组 件系统包括多个WEB组件,其中,多个TOB组件之间基于HTTP协议进行通信。进一步地,多个WEB组件包括发送组件和发布订阅服务器,其中,发送组件和发布 订阅服务器之间基于HTTP协议进行通信。进一步地,多个WEB组件包括数据交换组件;以及数据订阅组件,用于接收来自 数据交换组件的数据。进一步地,数据交换组件还用于缓存未传递给数据订阅组件的数据。
进一步地,数据交换组件还用于基于数据的优先级发送数据。进一步地,数据交换组件还用于在第一优先级的数据队列为空的情况下发送第二 优先级数据队列中的数据,其中,第一优先级高于第二优先级。进一步地,数据交换组件还用于记录数据发送过程中的错误。为了实现上述目的,根据本发明的另一方面,提供了一种TOB组件系统的数据交 换方法。其中,WEB组件系统中的多个TOB组件之间基于HTTP协议进行通信。进一步地,数据发送组件通过HTTP协议将数据发送至数据交换组件;数据交换组 件通过数据队列对接收到的数据进行缓存;以及数据交换组件通过HTTP协议将缓存的数 据发送至数据订阅组件,其中,数据交换组件按照各个数据队列的优先级的顺序依次发送 各个数据队列中缓存的数据。进一步地,数据交换组件在调用数据订阅组件中的地址发生错误时,将错误的情 况记录在错误日志中。通过本发明,采用包括多个TOB组件的TOB组件系统,其中,多个WEB组件之间基 于HTTP协议进行通信,解决了相关技术中WEB组件系统中数据交换延迟比较严重的问题,
4进而达到了提高WEB组件系统中数据交换效率的效果。


此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发 明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中图1是根据本发明实施例的TOB组件系统的示意图。
具体实施例方式需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相 互组合。下面将参考附图并结合实施例来详细说明本发明。本发明实施例提供了一种TOB组件系统。该TOB组件系统包括多个TOB组件,其 中,多个TOB组件之间基于HTTP协议进行通信。该WEB系统中的各个组件通过基于HTTP 协议进行通信,可以提高WEB组件系统中数据交换的效率。优选地,多个WEB组件包括发送组件和发布订阅服务器,其中,发送组件和发布订 阅服务器之间基于HTTP协议进行通信。由于发送组件和发布订阅服务器之间基于HTTP协 议进行通信,因此,可以提高发送组件和发布订阅服务器之间的效率。优选地,多个WEB组件包括数据交换组件;以及数据订阅组件,用于接收来自数 据交换组件的数据。其中,数据交换组件还用于缓存未传递给数据订阅组件的数据。通过在数据交换组件将数据发送至数据订阅组件的过程中对数据进行缓存,能够 防止数据发送过程中的过载现象,进而能够提高数据发送的效率。优选地,数据交换组件还用于基于数据的优先级发送数据。通过基于优先级对数 据进行发送,可以使得数据订阅组件可以尽可能早的接收到高优先级的数据。优选地,数据交换组件还用于在第一优先级的数据队列为空的情况下发送第二优 先级数据队列中的数据,其中,第一优先级高于第二优先级。由于在较高优先级的数据发送 完毕后才发送下一优先级的数据,因而能够防止数据的丢失,提高数据发送的可靠性。优选地,数据交换组件还用于记录数据发送过程中的错误。通过使得数据交换组 件记录发送过程中的错误,能够使得在数据交换过程中出现错误时,能够通过读取所记录 的错误的形式来迅速找到错误发送的原因。为更好的解决组件间数据交换问题,本发明提出一个混合式的,使用web接口的 组件通讯技术,如下图所示如上图所示,本通讯方案由web服务接口,订阅-通知关系表,m个数据缓冲队列, 发送通知线程或进程,错误记录日志这几个部分组成。Web服务接口是一台或一组web服务器构成,用于向生产数据的组件提供数据发 布接口,向需要获取数据的组件提供数据订阅接口。这些接口都是基于HTTP协议的web接 口,主要的接口定义包括POST http://xxx.xxx.xxx/PublishData ? dataID = 123&pri = 0&content = xxxx,用于外部发布一个数据,数据可以用json或xml或其他约定的数据格式进行封装,并 在其中标识数据的ID,数据的优先级等信息;GET http://xxx.xxx.xxx/SubscribeData ? subscriber = bbs&datalDlist =123,345,789&lifetime = 100&notifyUrl =http://yyy. yyy. yyy :8080/onNotify,用于外 部组件订阅一组数据,其中subscriber可以指定外部组件的id,以便不同组件互相区别; dataIDlist指定要订阅的数据的ID,可以是以逗号分隔的多个ID的列表,这里的ID须与 生产数据的组件发布数据时指定的ID相吻合;lifetime指定订阅的有效期,当取值为0时 代表取消已存在的订阅,取值为正值时代表此订阅从订阅成功开始持续到指定的秒数,取 值为负值时代表此订阅永久有效;notifytol指定一个回调URL地址,即当有该组件要订阅 的数据到达时,本数据交换组件将使用HTTP协议POST方法回调notifytol所指定的URL 地址,notifyUrl对应的web接口必须能够接受dataID参数和content参数,数据交换组 件将在这两个参数里指定数据的ID和数据的内容,并且notifytol对应的web接口必须在 成功接收数据后返回200响应,否则视为接收失败。订阅-通知关系表用来存储哪些数据被哪些组件所订阅的信息,该表格是以 dataID为主键的若干条记录,每条记录包含了此数据被订阅的每一个订阅组件的信息,这 些信息包括订阅组件的ID,订阅的到期时间,定阅组件的notifytol。数据队列是若干个逻辑队列,用于缓冲到达本数据交换组件但仍未传递给数据订 阅组件的数据。每个数据队列都被赋予一个优先级数值,按优先级由高到低依次赋予从0 开始到系统定义的最大值m之间的数值。当Web服务接口从PublishData调用中接收到数 据时,将依据命令中的Pri参数值将数据入队到相应优先值的队列的队尾进行缓冲。当然, 同时会将dataID,数据内容也在入队时存入队列。发送通知是一个或一组线程或进程,用于实现数据的推送控制,就是完成数据通 知功能,下文称为发送通知控制。发送通知控制就是不断地循环处理,每一轮循环按照数据 队列的优先级,依次从0到m询问每个对应的数据队列,并从队列队首将数据取出,依据数 据的ID,在订阅-通知关系表中找到该数据ID的所有订阅组件信息,然后对每一个订阅组 件调用一次该组件的notifytol,调用时将数据内容作为参数传递过去,这就是“通知”,也 就实现了组件间的数据交换。不过,本发明的发送通知控制还实现了一个基于优先级的发 送控制功能,这主要是由一个调度算法来控制,即在每一轮循环中依次处理数据队列队首 数据时,均由这个调度算法来确定本轮循环是否要处理这个队列的队首数据。这个算法具 体如下首先,在系统初始化时为每个数据队列计算其发送概率P。设数据队列的优先级数 值为Y,则P的计算公式为p= 1/(1+Y),Y的取值范围是w,m],其中m是系统定义的最大 的优先级数值。也就是说,优先级值为0的队列的发送概率P为1,优先级值为1的队列的 发送概率为1/2,优先级值为2的队列的发送概率为1/3,以此类推。优先级数值越大,其优 先级越低。P的计算结果是固定的,依相应队列的优先级数值而定。其次,在发送通知控制每轮循环之初,也就是在依次处理数据队列数据之前,由随 机算法生成一个W,l]之间的随机数R。然后,按照数据队列优先级由高到低的顺序,也就是按优先级数值Y由小到大的 顺序依次处理每个数据队列队首的数据,在处理每个队列之前都要测试该队列是否满足不 等式R <= P,其中P为该队列的发送概率,若条件满足,则称为概率命中,此时取出该队列 队首的一条数据进行通知发送处理;若条件不满足,则称为概率未命中,此时暂不进行通知 发送处理,跳过此队列继续测试下一个优先级的队列。如此往复直到处理到优先值为m的队列时为止,然后开始一轮新的循环并重新生成随机数R并依次测试各个数据队列。按照上述的算法,就能做到按概率控制的优先级调度算法。可以看到,该算法能够 保证高优先级的队列中的数据能有更大的机会被通知发送控制进行通知处理。特别的,当 优先级数值Y = 0时,P为1,可以保证每轮循环中都能处理一次该数据队列队首的数据。仔 细分析会发现,当高优先级数据队列为空而低优先级数据队列中有较多数据时,该算法存 在一定问题,就是按照算法并不能增加低优先级数据队列概率命中的次数,这样就不能让 发送控制合理地分配更多的资源来处理低优先级数据队列中的数据,造成浪费和低效。为 此,对算法进行改进,提出一个概率进位的概念。就是说,在一轮循环中按随机数R依次测 试各数据队列是否概率命中时,若某一次测试的数据队列发生了概率命中但是队列为空, 此时就向下一个低一级优先级的队列设置进位,这就是概率进位,记作Pj,通常为Pj赋值 为1。随后当算法测试下一个数据队列时,会检查是否有概率进位,如果有的话,要将概率 进位进行考虑。也就是说,算法改进后,测试是否概率命中的不等式变为R < = P+Pj,其 中P为被测试的数据队列对应的发送概率值,Pj为上一个数据队列测试后设置的概率进位 值。每一个队列测试并处理数据后,都要设置对下一个队列的概率进位值,当不发生概率进 位时也要设置这个值为0。在一些情况下,概率进位具有传递效应。例如,当优先级数值为 0,1,2的数据队列中都没有数据时,调度算法会将概率进位一直传递到优先级数值为3的 数据队列的测试中。由于概率进位的提出,发送通知控制能在高优先级数据队列为空的情 况下,给予低优先级的数据队列更高的概率命中机会,从而更合理的分配计算资源。最后,本发明还使用了错误日志机制,就是当发送通知控制在试图调用订阅组件 的notitytol时,如果发生了错误,例如调用结果返回非200响应,或是socket无法连通等 情况,就会把这样的情况记录到错误日志文件中,供以后审核系统运行状况。如果有必要, 还可以通过重新读取错误日志的方式实现数据修复。本发明实施例还提供了一种TOB组件系统的数据交换方法。其中,WEB组件系统 中的多个TOB组件之间基于HTTP协议进行通信。优选地,数据发送组件通过HTTP协议将数据发送至数据交换组件;数据交换组件 通过数据队列对接收到的数据进行缓存;以及数据交换组件通过HTTP协议将缓存的数据 发送至数据订阅组件,其中,数据交换组件按照各个数据队列的优先级的顺序依次发送各 个数据队列中缓存的数据。通过基于优先级对数据进行发送,可以使得数据订阅组件可以 尽可能早的接收到高优先级的数据。优选地,数据交换组件在调用数据订阅组件中的地址发生错误时,将错误的情况 记录在错误日志中。通过使得数据交换组件记录发送过程中的错误,能够使得在数据交换 过程中出现错误时,能够通过读取所记录的错误的形式来迅速找到错误发送的原因。从以上的描述中,可以看出,本发明可以提高TOB组件系统中数据交换效率,进一 步地,本发明实现了如下技术效果1、接口及协议简单,适合web服务端组件级数据交换。2、既可以支持大量小块数据交换,也可以少量大块数据交换。3、支持一到多的数据交换,解除数据交换组件间的直接依赖,降低耦合度。4、采用发布订阅通知模式,使得数据交换过程的延迟有效降低,简化了数据接收 组件的处理逻辑,提高整个系统在数据交换方面的效率。
5、提供了支持优先级的数据交换方式,能在一定程度上满足实时性要求较高的 web应用。以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技 术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修 改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种WEB组件系统,包括多个WEB组件,其特征在于,所述多个WEB组件之间基于 HTTP协议进行通信。
2.根据权利要求1所述的WEB组件系统,其特征在于,所述多个WEB组件包括发送组件 和发布订阅服务器,其中,所述发送组件和所述发布订阅服务器之间基于HTTP协议进行通
3.根据权利要求1所述的WEB组件系统,其特征在于,所述多个WEB组件包括 数据交换组件;以及数据订阅组件,用于接收来自所述数据交换组件的数据。
4.根据权利要求3所述的TOB组件系统,其特征在于,所述数据交换组件还用于缓存未 传递给所述数据订阅组件的数据。
5.根据权利要求3所述的TOB组件系统,其特征在于,所述数据交换组件还用于基于数 据的优先级发送数据。
6.根据权利要求5所述的TOB组件系统,其特征在于,所述数据交换组件还用于在第一 优先级的数据队列为空的情况下发送第二优先级数据队列中的数据,其中,所述第一优先 级高于所述第二优先级。
7.根据权利要求3所述的TOB组件系统,其特征在于,所述数据交换组件还用于记录数 据发送过程中的错误。
8.一种TOB组件系统的数据交换方法,其特征在于,所述WEB组件系统中的多个TOB组 件之间基于HTTP协议进行通信。
9.根据权利要求8所述的TOB组件系统的数据交换方法,所述多个WEB组件包括数据 发送组件、数据交换组件和数据订阅组件,其特征在于包括所述数据发送组件通过HTTP协议将数据发送至所述数据交换组件; 所述数据交换组件通过数据队列对接收到的数据进行缓存;以及 所述数据交换组件通过HTTP协议将缓存的数据发送至所述数据订阅组件, 其中,所述数据交换组件按照各个数据队列的优先级的顺序依次发送各个数据队列中 缓存的数据。
10.根据权利要求9所述的TOB组件系统的数据交换方法,其特征在于还包括所述数 据交换组件在调用所述数据订阅组件中的地址发生错误时,将所述错误的情况记录在错误日志中。
全文摘要
本发明公开了一种WEB组件系统及其数据交换方法。其中,该WEB组件系统包括多个WEB组件,其中,多个WEB组件之间基于HTTP协议进行通信。通过本发明,能够提高WEB组件系统中的数据交换效率。
文档编号H04L12/56GK102137159SQ20111005862
公开日2011年7月27日 申请日期2011年3月10日 优先权日2011年3月10日
发明者彭升 申请人:央视国际网络有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1