异步分布式列对象请求代理系统应用方法转让专利

申请号 : CN201110314341.2

文献号 : CN102355505B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 连琨胡斌

申请人 : 苏州迈科网络安全技术股份有限公司

摘要 :

本发明提供了一种异步分布式列对象请求代理系统的应用方法:第一子系统接收到符合本命名服务命名的消息;Gate把请求传递给软件总线;软件总线读取请求信息,匹配在总线中注册的桩信息,并传递请求消息给请求代理;请求代理根据请求数据,填充代理追踪信息入栈,若请求本系统服务,传递消息到本地服务单元,若请求其他系统数据,则请求代理需要按照本地缓存的命名信息寻找第二子系统的命名服务,并发送给第二子系统的Gate处理该消息;第二子系统的Gate收到请求消息;服务单元收到请求消息后,令该消息进入本服务待处理队列;并提醒调度器,调度器调度该服务单元运行请求;服务单元运行请求后得到一个响应消息,该响应消息中包含了代理追踪栈,服根据消息的追踪栈,该响应消息传递给消息的请求单元。

权利要求 :

1.一种异步分布式列对象请求代理系统的应用方法,其特征在于,当第一子系统在Gate接收到一个Client请求消息后,所述方法包括以下步骤:S1、第一子系统接收到符合本命名服务命名的消息;

S2、Gate把请求传递给软件总线处理;

S3、软件总线读取请求消息中请求信息,匹配在总线中注册的桩信息寻找请求代理单元的桩,并传递请求消息给请求代理;

S4、请求代理根据请求数据,填充代理追踪信息入栈,若请求本系统服务,传递消息到本地服务单元,并直接进入S6,若请求其他系统数据,则请求代理需要按照本地缓存的命名信息寻找第二子系统的命名服务,并发送给第二子系统的Gate处理该消息;

S5、第二子系统的Gate收到请求消息,并重复步骤中的S1到S4;

S6、服务单元收到请求消息后,令该消息进入本服务待处理队列;

S7、服务单元提醒调度器,本服务有请求需要执行,调度器调度该服务单元运行请求;

所述S7步骤的响应消息是异步发送的消息,消息发送者在发送消息后不需要等待该消息的响应,该消息的请求者需要以异步的方式获取消息的响应;

S8、服务单元运行请求后得到一个响应消息,该响应消息中包含了代理追踪栈,服务发送响应消息给请求代理,根据消息的追踪信息,该响应消息传递给消息的请求单元;

若一个服务单元调用其他单元的服务,且其他单元的位置是通过本系统内的请求代理来确定的,其步骤为:S10、服务单元发送对其他单元的调用请求消息给总线;

S20、软件总线读取请求消息中请求信息,匹配在总线中注册的桩信息寻找请求代理单元的桩信息,并传递请求消息给请求代理;

S30、请求代理根据请求数据,填充代理追踪信息入栈,若请求本系统服务,传递消息到本地服务单元,并直接进入S50,若请求其他系统数据,则请求代理需要按照本地缓存的命名信息寻找第二子系统的命名服务,并发送给第二子系统的Gate处理该消息;

S40、第二子系统的Gate收到请求消息,并重复S1到S4;

S50、其他单元收到请求消息后,令该消息进入本服务待处理队列;

S60、服务单元提醒调度器,本服务有请求需要执行,调度器调度该服务单元运行请求;

S70、服务单元运行请求后得到一个响应消息,该响应消息中包含了代理追踪栈,服务发送响应消息给请求代理,根据消息的追踪信息,该响应消息会最终被传递给消息的请求单元。

2.如权利要求1所述的方法,其特征在于,所述S8和S70具体包括以下步骤:S100、服务单元把运行请求后得到的响应消息,发送给系统所在的总线;

S200、总线获取请求代理桩信息后,发送该响应消息给请求代理单元;

S300、请求代理单元按照消息中包含的代理追踪栈信息,分情况处理,如果该响应对应的请求在本服务器,则直接发送该响应消息给本服务器的请求单元,到此,本次请求响应的流程结束,否则进行S400;

S400、如过该响应的请求不在本服务器,请求代理需要按照本地缓存的命名信息寻找第一子系统的命名服务,并发送给第一子系统的Gate处理该响应消息;

S500、第一子系统的Gate收到响应消息后,发送给总线处理,总线获取第一子系统上的请求代理单元处理该响应消息;

S600、第一子系统上的请求代理,按照消息中包含的代理追踪栈信息,重复S300的处理,直到本次请求响应的流程结束。

3.如权利要求1至2中任意一项所述的方法,其特征在于,所述各单元间的交互是通过会话传递的,一个会话封装了单元和单元间通信的管道,该管道的底层实现可以是tcp或udp或ipc三种方式,在会话中单元可以进行发送一个请求,响应一个请求,主动发送一个通知的操作。

说明书 :

异步分布式列对象请求代理系统应用方法

技术领域

[0001] 本发明涉及一种异步分布式列对象请求代理系统的应用方法,属于分布式网络监控系统领域。

背景技术

[0002] 随着计算机网络和电信网的快速发展和膨胀,人们对于网络的安全,可靠的要求越来越高,网络监控系统可以让用户有效的监控、分配有限的网络资源。传统的网络监控系统采用集中运行模式,中心服务器负责对整个网络进行统一的监控和管理。这种模式下,大量的监控或管理信息传输会消耗网络带宽,且中心服务器往往超负荷工作,严重影响监控系统的运行效率。这种系统结构较简单,但是可扩展性差,如果中心服务器失效,将引起整个网络无法监控。
[0003] 为了克服集中式监控的缺陷,可以进行分布式层次监控,由多个监控服务器进行监控,再将监控结果层层汇总。在这样的体系结构中会有很多个监控服务器存在。这种系统可以进行分布式分层次监控,可以满足现有超大网络的监控需求。
[0004] 但分布式分层次监控系统的体系结构比较复杂,系统各个服务器间都需要互相调用,这首先需要一种能够异步响应的,分布式的请求代理系统来满足层次调用的要求,同时,传统的监控数据使用对象传递,该方式不能有效的利用现有带宽,因此监控数据本身的传输也需要一种能更高效利用现有网络带宽的方式。

发明内容

[0005] 为了解决上述问题,本发明提供了一种异步分布式列对象请求代理系统的应用方法。
[0006] 具体技术方案如下:
[0007] 本发明实施例提供的一种异步分布式列对象请求代理系统的应用方法,包括:
[0008] S1、第一子系统接收到符合本命名服务命名的消息;
[0009] S2、Gate把请求传递给软件总线处理;
[0010] S3、软件总线读取请求消息中请求信息,匹配在总线中注册的桩信息寻找请求代理单元的桩,并传递请求消息给请求代理;
[0011] S4、请求代理根据请求数据,填充代理追踪信息入栈,若请求本系统服务,传递消息到本地服务单元,并直接进入S6,若请求其他系统数据,则请求代理需要按照本地缓存的命名信息寻找第二子系统的命名服务,并发送给第二子系统的Gate处理该消息;
[0012] S5、第二子系统的Gate收到请求消息,并重复步骤中的S1到S4;
[0013] S6、服务单元收到请求消息后,令该消息进入本服务待处理队列;
[0014] S7、服务单元提醒调度器,本服务有请求需要执行,调度器调度该服务单元运行请求;
[0015] S8、服务单元运行请求后得到一个响应消息,该响应消息中包含了代理追踪栈,服务发送响应消息给请求代理,根据消息的追踪信息,该响应消息传递给消息的请求单元。
[0016] 作为本发明的进一步改进,所述S7步骤的响应消息是异步发送的消息,消息发送者在发送消息后不需要等待该消息的响应,该消息的请求者需要以异步的方式获取消息的响应。
[0017] 作为本发明的进一步改进,若一个服务单元调用其他单元的服务,且其他单元的位置是通过本系统内的请求代理来确定的,其步骤为:
[0018] S10、服务单元发送对其他单元的调用请求消息给总线;
[0019] S20、软件总线读取请求消息中请求信息,匹配在总线中注册的桩信息寻找请求代理单元的桩信息,并传递请求消息给请求代理;
[0020] S30、请求代理根据请求数据,填充代理追踪信息入栈,若请求本系统服务,传递消息到本地服务单元,并直接进入S50,若请求其他系统数据,则请求代理需要按照本地缓存的命名信息寻找第二子系统的命名服务,并发送给第二子系统的Gate处理该消息;
[0021] S40、第二子系统的Gate收到请求消息,并重复S1到S4;
[0022] S50、其他单元收到请求消息后,令该消息进入本服务待处理队列;
[0023] S60、服务单元提醒调度器,本服务有请求需要执行,调度器调度该服务单元运行请求;
[0024] S70、服务单元运行请求后得到一个响应消息,该响应消息中包含了代理追踪栈,服务发送响应消息给请求代理,根据消息的追踪信息,该响应消息会最终被传递给消息的请求单元。
[0025] 作为本发明的进一步改进,所述S8和S70具体包括以下步骤:
[0026] S100、服务单元把运行请求后得到的响应消息,发送给系统所在的总线;
[0027] S200、总线获取请求代理桩信息后,发送该响应消息给请求代理单元;
[0028] S300、请求代理单元按照消息中包含的代理追踪栈信息,分情况处理,如果该响应对应的请求在本服务器,则直接发送该响应消息给本服务器的请求单元,到此,本次请求响应的流程结束,否则进行S400;
[0029] S400、如过该响应的请求不在本服务器,请求代理需要按照本地缓存的命名信息寻找第一子系统的命名服务,并发送给第一子系统的Gate处理该响应消息;
[0030] S500、第一子系统的Gate收到响应消息后,发送给总线处理,总线获取第一子系统上的请求代理单元处理该响应消息;
[0031] S600、第一子系统上的请求代理,按照消息中包含的代理追踪栈信息,重复S300的处理,直到本次请求响应的流程结束。
[0032] 作为本发明的进一步改进,所述各单元间的交互是通过会话传递的,一个会话封装了单元和单元间通信的管道,该管道的底层实现可以是tcp或udp或ipc三种方式,在会话中单元可以进行发送一个请求,响应一个请求,主动发送一个通知的操作。
[0033] 由以上技术方案可以看出,本发明的异步分布式列对象请求代理系统能适应从小网络到大网络到超大网络的分布式层次监控要求,列对象数据压缩传输能有效的节约网络带宽,达成高效监控大网络的目的。
[0034] 【附图说明】
[0035] 图1是本发明一实施方式分布式子系统的单元图;
[0036] 图2是本发明一实施方式分布式子系统交互的示意图;
[0037] 图3是本发明一实施方式异步分布式列对象请求代理系统的应用方法的流程图;
[0038] 图4是本发明另一实施方式异步分布式列对象请求代理系统的应用方法的流程图;
[0039] 图5是S8和S70的具体流程图。
[0040] 【具体实施方式】
[0041] 为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
[0042] 对批量监控数据本身的传输,需要使用列对象方式。因列对象传输只传递一个列名称和多个列数据来组成网络监控数据,且顺序、高度重复的数据可以产生更高的压缩比,故本发明中的列对象本身也被设计为是一个具备高压缩比的数据集,本系统中各个服务单元的调用都是采用这个列对象来传递请求和响应消息。
[0043] 在此基础上构建的本分布式列对象请求代理系统中的单元或系统间调用的消息定义(包括请求消息,请求响应消息,通知消息)具备了高压缩比,可以快速传递的特性,能够有效的减小对监控网络的带宽需求。
[0044] 如图1所示,在本发明一实施方式中,异步分布式列对象请求代理系统由多个分布式子系统构成,每个分布式子系统包括:
[0045] TCP/UDP/IPC Gate单元:用于负责系统中各单元或系统的底层通信实现,TCP Gate为TCP(传输控制协议)方式的通信实现,UDP Gate为UDP(用户数据报协议)方式的通信实现,IPC Gate(Inner Process Communication)为进程内的通信实现。
[0046] 命名服务单元:用于负责系统间调用的命名解析,名字格式为 “协议://地址[:端口]/单元名”,协议可选数据为tcp/udp/ipc,分别对应组件中的三种Gate, 通过一个指定的命名即可以获得一个可供单元进行请求/响应或通知操作的会话。
[0047] 软件总线:用于管理一个系统内所有可以提供服务的软件单元,每个软件单元注册到软件总线后,才可以对外提供服务,同时,只有该单元注册到软件总线后,才可以向其他单元请求服务。
[0048] 总线桩:每个接入到软件总线的单元,必须存在一个总线桩,总线桩负责单元和总线的交互,从其他服务器来得请求到达软件总线后,总线调度总线桩发送请求给单元,在单元处理完成后,单元发送相应给总线桩,由总线桩请求总线调度返回结果给请求服务器。
[0049] 调度器:所有需要CPU执行的代码都必须通过调度器调度运行。调度器以负载均衡的方式实现任务按照优先级调度,以保障服务器稳定运行。
[0050] 请求代理单元:请求代理管理请求可以到达的对端,该对端可以是本机也可以是不是本机,甚至可以是多个层次嵌套下的主机,因此请求代理屏蔽了具体执行任务的机器的位置,对于一个原始请求来说,其只需要按照命名向具备请求代理的软件总线请求服务,软件总线向请求代理发起请求后,请求代理按照命名情况决定转发请求到本总线对应的单元或其他机器上的对应单元,请求代理的存在使得灵活的部署多个层次的分布式服务器成为可能。
[0051] 以上单元间的交互是通过会话传递的,一个会话封装了单元和单元间通信的管道,该管道的底层实现可以是tcp/udp/ipc三种方式,在会话中单元可以进行发送一个请求,响应一个请求,主动发送一个通知的操作。
[0052] 如图2、图3所示,在本发明一实施方式中,异步分布式列对象请求代理系统包括子系统A和子系统B,在分布式子系统A在Gate接收到一个Client请求消息后的对这个请求消息的处理流程:
[0053] S1、子系统A接收到符合本命名服务命名的消息,注意如果消息指定的命名不在本系统,则该消息不会被本系统接收;
[0054] S2、Gate把请求传递给软件总线处理,注意,此处传递的具体含义为创建一个会话,在会话中传输消息,后面每个步骤中的传递均为此处的含义,后面的步骤的描述直接使用传递;
[0055] S3、软件总线读取请求消息中请求信息,匹配在总线中注册的桩信息寻找请求代理单元的桩,并传递请求消息给请求代理;
[0056] S4、请求代理根据请求数据,填充代理追踪信息入栈,若请求本系统服务,传递消息到本地服务单元,并直接进入S6,若请求其他系统数据(示意图中为子系统B),则请求代理需要按照本地缓存的命名信息寻找子系统B的命名服务,并发送给子系统B的Gate处理该消息;
[0057] S5、子系统B的Gate收到请求消息,类似的,子系统B的处理需要重复步骤中的S1到S4;
[0058] S6、服务单元收到请求消息后,令该消息进入本服务待处理队列;
[0059] S7、服务单元提醒调度器,本服务有请求需要执行。调度器会在合适的时候调度该服务单元运行请求;
[0060] S8、服务单元运行请求后得到一个响应消息,该响应消息中包含了代理追踪栈,服务发送响应消息给请求代理。根据消息的追踪信息,该响应消息会最终被传递给消息的请求单元。
[0061] 需要指出的是,S7的响应消息是个异步发送的消息,消息发送者在发送消息后不需要等待该消息的响应,该消息的请求者需要以异步的方式获取消息的响应。
[0062] 同样的,如图4所示,若一个服务单元(假设其为单元S-A)如果调用其他单元的服务(假设其为单元S-B),该单元S-B的位置是通过本系统内的请求代理来确定的,单元S-A并不知道S-B的具体位置是否和S-A在同一系统内,其步骤为:
[0063] S10、S-A发送对S-B单元的调用请求消息给总线;
[0064] S20、软件总线读取请求消息中请求信息,匹配在总线中注册的桩信息寻找请求代理单元的桩信息,并传递请求消息给请求代理;
[0065] S30、请求代理根据请求数据,填充代理追踪信息入栈,若请求本系统服务,传递消息到本地服务单元,并直接进入S50,若请求其他系统数据(本图为子系统B),则请求代理需要按照本地缓存的命名信息寻找子系统B的命名服务,并发送给子系统B的Gate处理该消息;
[0066] S40、子系统B的Gate收到请求消息,类似的,子系统B的处理应该重复S1到S4。
[0067] S50、服务单元B收到请求消息后,令该消息进入本服务待处理队列;
[0068] S60、服务单元提醒调度器,本服务有请求需要执行。调度器会在合适的时候调度该服务单元运行请求;
[0069] S70、服务单元运行请求后得到一个响应消息,该响应消息中包含了代理追踪栈,服务发送响应消息给请求代理。根据消息的追踪信息,该响应消息会最终被传递给消息的请求单元。
[0070] 进一步的,如图5所示,S8和S70,请求代理单元都在发送响应消息给请求的单元,假设该服务单元位于子系统B,其收到一个请求,并由调度器调度运行后产生了对应的响应,详细步骤如下:
[0071] S100、服务单元把运行请求后得到的响应消息,发送给系统所在的总线;
[0072] S200、总线获取请求代理桩信息后,发送该响应消息给请求代理单元;
[0073] S300、请求代理单元按照消息中包含的代理追踪栈信息,分情况处理,如果该响应对应的请求在本服务器,则直接发送该响应消息给本服务器的请求单元,到此,本次请求响应的流程结束。否则进行S400;
[0074] S400、如过该响应的请求不在本服务器(假设请求单元在子系统A),请求代理需要按照本地缓存的命名信息寻找子系统A的命名服务,并发送给子系统A的Gate处理该响应消息;
[0075] S500、子系统A的Gate收到响应消息后,发送给总线处理。总线获取子系统A上的请求代理单元处理该响应消息;
[0076] S600、子系统A上的请求代理,按照消息中包含的代理追踪栈信息,重复S300的处理,直到本次请求响应的流程结束。
[0077] 需要注意的是S300到S600的处理何时跳出,取决于系统的层次关系,分布式系统的层次如果为N层,则该循环至多循环N-1次即可结束处理。
[0078] 需要注意的是:本异步分布式列对象请求代理系统不需要区分Client和Server,实际上只要是采用本分布式对象请求代理体系结构的系统,即可以按照各自的命名互相访问,互为Client,互为Server。
[0079] 异步分布式列对象请求代理系统的应用方法适用于如下几种情况:
[0080] 第一种:所有的服务单元都在本端,这种形式适用于小网络,如校园网的监控,单服务器模式即可以完成网络的监控。这种部署可以很方便的修改为第二种应用方式。
[0081] 第二种:分服务平行部署,不对服务器分层。即部分服务单元在一台服务器,另外部分服务单元在另外的服务器等,这种模式下,可以按照服务单元的多少切分为2个或更多的平行服务器。一个同样应用了本体系结构Client可以按照服务的命名向各平行服务器请求服务,这种模式可以适应更大规模的网络监控,如一些流量很大的校园网或企业网,这种模式下可以很方便的建立平行的服务集群。
[0082] 第三种:分层网格式应用部署:
[0083] 首先按照网络规模切分为N个子监控网络。
[0084] 其次,在N个子网络上,可部署N个单机服务系统,在N个子网上可部署M个(M<
[0085] 最后,在M个大网络系统上可部署一个或多个顶层网络监控系统。
[0086] 同时,本方式的顶层系统,也可以应用为多个平行顶层系统,如监控全网络告警的顶层系统为一个单独的顶层监控子系统,监控性能的顶层系统为一个单独的顶层监控子系统。
[0087] 为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
[0088] 通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施方式或者实施方式的某些部分所述的方法。
[0089] 以上所描述的装置实施方式仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0090] 本申请可用于众多通用或专用的计算系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
[0091] 本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序单元。一般地,程序单元包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序单元可以位于包括存储设备在内的本地和远程计算机存储介质中。
[0092] 应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施方式中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。
[0093] 上文所列出的一系列的详细说明仅仅是针对本发明的可行性实施方式的具体说明,它们并非用以限制本发明的保护范围,凡未脱离本发明技艺精神所作的等效实施方式或变更均应包含在本发明的保护范围之内。