发明内容
本发明所要解决的技术问题是提供一种解除客户服务器系统中指令间依赖关系的方法,实现多用户共享一个或多个PID获得服务器的业务服务。
本发明还提供了一种解除客户服务器系统中指令间依赖关系的系统和代理服务器装置,以保证上述方法在实际中的应用。
为了解决上述问题,本发明公开了一种解除客户服务器系统中指令间依赖关系的方法,其特征在于,所述客户服务器系统中的客户端与服务器之间具有代理服务器,所述代理服务器包括存储客户端提交的用户指令的指令缓存区和存储服务器返回的指令执行结果的结果缓存区,所述代理服务器与服务器之间基于服务器分配的认证信息资源PID建立连接,所述方法包括:
客户端发送用户提交的指令;
代理服务器解析所述用户提交指令的类型,若为独立指令,则将所述指令存储至相应用户的指令缓存区;
若为关联指令,则依据所述指令按照预置规则生成新的独立指令,存储至相应用户的指令缓存区;当所述关联指令为解析指令时,所述预置规则为:所述代理服务器从相应用户的结果缓存区读取与所述关联指令相关的数据,生成一条或多条新的指令,然后,将所述新生成的指令顺序存储至相应用户的指令 缓存区;
当所述关联指令为前置指令时,预置规则为:所述代理服务器判断相应用户的指令缓存区中是否有所述关联指令的前置指令,如果有,则按所述关联指令的前置指令、所述关联指令的顺序存储至相应用户的指令缓存区;
当所述关联指令为后续指令时,预置规则为:所述代理服务器生成所述关联指令的后续指令,然后按所述关联指令、所述新生成的后续指令的顺序存储至相应用户的指令缓存区;
代理服务器判断PID资源的状态,如果PID没有被占用,则占用该PID,顺序将所述用户指令缓存区中的指令提交至服务器,以及,接收服务器返回的指令执行结果并存储至相应用户的结果缓存区,并释放所述PID资源;
代理服务器向客户端返回所述指令执行结果。
优选的,所述方法还包括:
所述代理服务器收到用户提交的指令后,首先判断相应用户的结果缓存区中是否存在所述用户提交指令的执行结果,若是,则直接读取所述指令执行结果返回给客户端。
优选的,所述用户的指令缓存区和结果缓存区具有相应标识。
优选的,所述用户的指令缓存区和结果缓存区采用内存缓存的方式。
优选的,所述存储为,以字节流形式记录至缓存区。
优选的,所述方法还包括:
所述用户从客户端退出与代理服务器的连接后,所述代理服务器释放该用户的指令缓存区和结果缓存区。
优选的,所述方法还包括:
若所述代理服务器与服务器的连接中断,所述代理服务器自动检测,并重新基于所述服务器分配的PID建立连接。
优选的,所述代理服务器基于所述服务器分配的一个或多个PID建立与所述服务器的连接。
本发明还公开了一种解除客户服务器系统中指令间依赖关系的系统,包括客户端和服务器,其特征在于:在所述客户端与服务器之间设置代理服务器,所述代理服务器包括指令处理单元、缓存管理单元和PID管理单元,其中:
PID管理单元基于服务器为客户端分配的PID与所述服务器建立连接;
指令处理单元接收用户从客户端提交的指令,判断指令类型,对于独立指令,则直接将所述指令交缓存管理单元存储至相应用户的指令缓存区;对于关联指令,指令处理单元依据所述指令按照预置规则生成新的独立指令,然后交缓存管理单元存储至相应用户的指令缓存区;当所述关联指令为解析指令时,预置规则为:所述指令处理单元从缓存管理单元读取与所述关联指令相关的数据,生成一条或多条新的指令,然后,将上述新生成的指令,交缓存管理单元顺序存储至相应用户的指令缓存区;
当所述关联指令为前置指令时,预置规则为:所述指令处理单元判断缓存管理单元是否有所述关联指令的前置指令,如果有,则按所述关联指令的前置指令、所述关联指令的顺序交缓存管理单元存储至相应用户的指令缓存区;
当所述关联指令为后续指令时,预置规则为:所述指令处理单元生成所述关联指令的后续指令,然后按所述关联指令、所述新生成的后续指令的顺序交缓存管理单元存储至相应用户的指令缓存区;
PID管理单元判断PID资源的状态,如果PID没有被占用,则占用该PID,顺序将所述用户指令缓存区中的指令提交至服务器,以及,接收服务器返回的指令执行结果,交缓存管理单元存储至相应用户的结果缓存区,并释放所述PID资源;
指令处理单元将所述指令的执行结果返回客户端。
优选的,所述系统的指令处理单元收到用户提交的指令后,首先判断缓存管理单元是否存在所述用户提交指令的执行结果,若是,则直接读取所述指令执行结果返回给客户端。
优选的,所述缓存管理单元具有相应的用户标识。
优选的,当所述用户从客户端退出与代理服务器的连接后,所述缓存管理单元释放该用户的指令缓存区和结果缓存区。
本发明实施例还公开了一种解除客户服务器系统中指令间依赖关系的代理服务器装置,其特征在于,所述代理服务器包括指令处理单元,缓存管理单元和PID管理单元,其中:
PID管理单元基于服务器为客户端分配的PID与所述服务器建立连接;
指令处理单元接收用户从客户端提交的指令,判断指令类型,对于独立指令,则直接将所述指令交缓存管理单元存储至相应用户的指令缓存区;对于关 联指令,指令处理单元依据所述指令按照预置规则生成新的独立指令,然后交缓存管理单元存储至相应用户的指令缓存区;
当所述关联指令为解析指令时,预置规则为:所述指令处理单元从缓存管理单元读取与所述关联指令相关的数据,生成一条或多条新的指令,然后,将上述新生成的指令,交缓存管理单元顺序存储至相应用户的指令缓存区;
当所述关联指令为前置指令时,预置规则为:所述指令处理单元判断缓存管理单元是否有所述关联指令的前置指令,如果有,则按所述关联指令的前置指令、所述关联指令的顺序交缓存管理单元存储至相应用户的指令缓存区;
当所述关联指令为后续指令时,预置规则为:所述指令处理单元生成所述关联指令的后续指令,然后按所述关联指令、所述新生成的后续指令的顺序交缓存管理单元存储至相应用户的指令缓存区;
PID管理单元判断PID资源的状态,如果PID没有被占用,则占用该PID,顺序将所述用户指令缓存区中的指令提交至服务器,以及,接收服务器返回的指令执行结果,交缓存管理单元存储至相应用户的结果缓存区,并释放所述PID资源;
指令处理单元将所述指令的执行结果返回客户端;
用户从客户端退出与代理服务器的连接后,缓存管理单元释放该用户的指令缓存区和结果缓存区。
与现有技术相比,本发明具有以下优点:
首先,代理服务器解除了客户端提交的指令之间的依赖关系,因此,提交至服务器的指令都是能够迅速获得应答的独立指令,应答完成后,即可立即释放PID资源,可以大大减少每条指令对PID资源的占用时间;
其次,在本发明系统中,客户端不直接与服务器连接,服务器只对代理服务器进行PID验证;另外,客户端提交的指令都是由代理服务器缓存、重新调度后提交到服务器的;因此,可以实现多用户多客户端共享一个或多个PID获得服务器服务的技术效果;
第三,本发明的系统中,多用户是分时共享PID资源的,用户数量的增加不会增加服务器的负担,相反,因服务器不需要记录指令的状态,反而会降低对服务器资源的消耗,从而提高服务器的性能。
另外,客户端发送指令请求后,可以直接从代理服务器的缓存中获取所需要的数据,与到远程的服务器获取数据相比,节省响应时间,增强用户使用体验。
具体实施方式
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明的核心构思之一在于,分析客户服务器系统中,用户所发出的指令的特点,把它们转换成可迅速获得应答的独立指令,减少每条指令对网络连接所需要的PID资源的占用时间,然后,调度这些指令提交到服务器的时机,从而达到多用户共享PID资源的技术效果。
参照图1,示出了本发明一种解除客户服务器系统中指令间依赖关系的方法第一实施例流程图,在该方法实施例涉及的所述客户服务器系统中,客户端与服务器之间具有代理服务器,所述代理服务器包括存储客户端提交的用户指令的指令缓存区,还包括存储服务器返回的指令执行结果的结果缓存区,所述代理服务器与服务器之间基于服务器分配的PID建立连接。
具体包括以下步骤:
步骤101:客户端发送用户提交的指令。
步骤102:代理服务器判断所述指令的类型是否为独立指令?若是,则转步骤103;否则,转步骤104。
步骤103:代理服务器将所述指令存储至相应用户的指令缓存区。
步骤104:对于关联指令,代理服务器按预置规则生成新的独立指令,存储至相应用户的指令缓存区。
步骤105:代理服务器判断PID资源的状态是否未被占用?若是,则转步骤106;否则,等待下次调度。
步骤106:代理服务器占用所述PID资源,将所述用户指令缓存区中的独立指令顺序提交至服务器。
步骤107:代理服务器接收服务器返回的指令执行结果,并存储至相应用户的结果缓存区;之后,释放PID资源。
步骤108:代理服务器向客户端返回所述指令执行结果。
为使本领域技术人员更好地理解本发明,以下通过举例对本发明的优选实施例进行说明。
优选的,当所述关联指令为解析指令时,预置规则为:
所述代理服务器从相应用户的结果缓存区读取与所述关联指令相关的数据,生成一条或多条新的指令,然后,将所述新生成的指令顺序存储至相应用户的指令缓存区;其中,新生成的指令为独立指令。
优选的,当所述关联指令为前置指令时,预置规则为:
所述代理服务器判断相应用户的指令缓存区中是否有所述关联指令的前置指令,如果有,则按所述关联指令的前置指令、所述关联指令的顺序存储至相应用户的指令缓存区。
下面以GDS系统中AB与RT指令为例进行说明:
用AB命令查询某个代理10月10日预定的北京上海的订座记录。
>AB:10OCT/PEKSHA
服务器会返回如下结果:
AGENT BOOKING LIST
10OCT PEKSHA
001 1DING/NING VBNK9 Y HX2 BJS123 CA 1501 10OCT
002 1GUORUILIN T055P K RR2 BJS123 CA 934 10OCT
003 0HU/YONGFEI Q07V1 K HX2 BJS123 CA 934 10OCT
004 1JIANG/LIPING NZHXZ Y HX5 BJS123 CA 984 10OCT
005 1JIANG/BIAO MT7Y5 Y HX6 BJS123 CA 986 10OCT
006 1JIANG/BIAO MT7Y5 Y HX6 BJS123 CA 986 10OCT
007 1KONGWEIDONG W8B9J F RR1 BJS123 MU 5122 10OCT
+
此时,用RT1命令可以直接提取出第一条记录的详细结果。
1.DING/NING P53WS
2.CA1501 Y FR10DEC PEKSHA DK1 0840 1035 777 S 0
3.BJS/T PEK/T 010-63406973/SHIPU TRAVE AGENCY/LIU DE PU ABCDEFG
4.PEK/66017755-2509
5.TL/1200/10OCT/BJS123
6.BJS123
但是,如果在发送RT1之前,没有发送AB命令,则服务器报告命令错误。
RT1为前置指令类型,是只有执行了其前置指令AB后才能使用的指令。
对前置指令RT1,代理服务器的处理过程是:
当代理服务器收到用户从客户端发送的RT1时,首先检测该用户的指令缓存空间中是否有AB指令,如果存在,则在该用户的指令缓存区中以AB、RT1的顺序保存指令;否则,向客户端返回错误信息。
优选的,当所述关联指令为后续指令时,预置规则为:
所述代理服务器生成所述关联指令的后续指令,然后按所述关联指令、所述新生成的后续指令的顺序存储至相应用户的指令缓存区。
下面以GDS系统中AV指令为例进行说明:
AV指令属于后续指令类型,对于该指令请求,GDS服务器只能返回第一 页的数据,需要用翻页指令PN才能获得后续的数据。
如:AV命令查询北京到上海12月10日可用仓位情况。
>AV:PEKSHA/10DEC
服务器只返回如下结果:
AVPEKSHA10DEC
10DEC(FRI)PEKSHA
1- CA1501 PEKSHA 0840 1035 777 0 M DS# CA YA BA KS MA
2 WH2520 PEKSHA 1130 1320 310 0 M DS# FA YA BS
3 MU583 PEKSHA 1140 1340 M11 0M DS# FS C AYA EQ VA
4 CA983 PEKSHA 1310 1455 74E 0 M DS# FS PS CS JS YS SS HS KS MS TS*
5 NW5983 PEKSHA 1310 1455 EQV 0 M*JZ CZ YZ BZ MZ HZ QZ VZ
6 MU5102 PEKSHA 1320 1535 M11 0 M DS# CA YA EQ VA QA ZS
7+ CA991 PEKSHA 1340 1540 74M 0 M DS# FS CS YS SS HS KS MS TS GS XS*
** SHA-HONGQIAO AIRPORT PVG-PUDONG AIRPORT
当代理服务器收到用户从客户端发送的AV:PEKSHA/10DEC时,首先从代理服务器的软件配置信息中读取需要PN指令的次数,如需要3次PN翻页;然后在该用户的指令缓存区中以AV、PN、PN、PN的顺序保存指令。
优选的,所述用户的指令缓存区和结果缓存区具有相应标识,即缓存区中的指令和结果中,有用户的名称或代码标识,用以区分缓存区中指令和结果的归属。
优选的,用户的指令缓存区和结果缓存区采用内存缓存方式。采用内存缓存方式可以充分利用代理服务器的内存资源,提高指令的响应速度。
优选的,指令缓存区和结果缓存区的存储方式为:以字节流形式进行记录。
优选的,所述用户从客户端退出与代理服务器的连接后,所述代理服务器释放为用户的指令缓存区和结果缓存区。
优选的,代理服务器还包括如下功能:
代理服务器能自动检测与服务器的连接状态,当代理服务器与服务器的连接中断时,代理服务器基于所述服务器分配的PID重新与服务器建立连接。这 样,可以保证当代理服务器与服务器的连接因网络、服务器或其他原因中断时,可以尽快恢复连接,从而保障用户的指令请求可以迅速得到应答。
优选的,所述代理服务器基于所述服务器分配的一个或多个PID建立与所述服务器的连接,从而,连接到代理服务器上的多个终端用户能够共享一个或多个PID资源,使得服务器业务能够得到更充分的利用。
参照图2,示出了本发明一种解除客户服务器系统中指令间依赖关系的方法第二实施例流程图,在该方法实施例涉及的所述客户服务器系统中,包括有客户端、代理服务器和服务器,其中代理服务器包括存储客户端提交的用户指令的指令缓存区,还包括存储服务器返回的指令执行结果的结果缓存区,所述代理服务器与服务器之间基于服务器分配的PID建立连接。
具体包括以下步骤:
步骤201:客户端发送用户提交的指令。
步骤202:代理服务器判断该用户的结果缓存区是否有所述指令的执行结果?如果有,则转步骤209;否则,转步骤203。
步骤203:代理服务器判断所述指令的类型是否为独立指令?若是,则转步骤204;否则,转步骤205。
步骤204:代理服务器将所述指令存储至相应用户的指令缓存区。
步骤205:代理服务器按预置规则生成新的独立指令,存储至相应用户的指令缓存区。
步骤206:代理服务器判断PID资源的状态是否未被占用?若是,则转步骤207;否则,等待下次调度。
步骤207:代理服务器占用所述PID资源,将所述用户指令缓存区中的独立指令顺序提交至服务器。
步骤208:代理服务器接收服务器返回的指令执行结果,并存储至相应用户的结果缓存区;之后,释放PID资源。
步骤209:代理服务器向客户端返回所述指令执行结果。
下面以GDS系统中AV和PN指令为例进行说明:
用户A从客户端发送AV指令(步骤201),代理服务器判断A用户的缓存区中没有AV指令的执行结果,转步骤203(步骤202),代理服务器判断AV指令不是独立指令,转步骤205(步骤203),代理服务器按照预置规则生成新的指令序列AV,PN,PN,PN(步骤205),代理服务器判断PID资源没有被占用,转步骤207(步骤206),代理服务器占用PID资源,把A用户缓存区中的指令AV,PN,PN,PN按顺序提交至服务器(步骤207),服务器顺序返回AV执行后的结果第1页、第2页、第3页、第4页,代理服务器把上述结果存储至用户A的缓存区中,然后释放PID资源(步骤208),代理服务器把AV指令执行结果的第1页返回给客户端(步骤209)。
然后,用户A从客户端发送PN指令(步骤201),代理服务器判断A用户的缓存区中有PN指令的前置指令AV的执行结果,转步骤209(步骤202),代理服务器把AV指令执行结果的第2页返回客户端(步骤209)。
参照图3,示出了本发明一种解除客户服务器系统中指令间依赖关系的代理服务器装置实施例结构框图,具体包括以下单元:
单元31:指令处理单元,用于接收用户从客户端提交的指令,解析指令类型,生成新的指令,并把所述新生成的新指令交缓存管理单元32存储至相应用户的指令缓存区;用于把缓存管理单元32的相应用户结果缓存区中指令的执行结果返回给客户端。
单元32:缓存管理单元,用于暂时保存指令处理单元31解除依赖关系之后的独立指令和PID管理单元33提交至服务器的指令返回的执行结果;用于释放退出登录连接后的用户的指令缓存区和结果缓存区。
单元33:PID管理单元,用于建立代理服务器与服务器之间基于PID的连接,用于管理PID的状态、以及用于把缓存管理单元32的指令提交至服务器,并把服务器的返回结果交缓存管理单元32存储至相应用户的结果缓存区。
参照图4,示出了本发明一种解除客户服务器系统中指令间依赖关系的系统实施例结构框图,具体包括:
单元41:客户端,安装有专用的客户端软件,用于数据的输入、运算和输出;用户从客户端单元41与代理服务器单元43建立连接。
单元42:服务器,安装有数据库系统,用于共享数据的存放和数据检索;用于为客户端分配区别于其他客户端的PID;代理服务器43基于所述PID与服务器单元42建立连接。
单元43:代理服务器,用于基于PID建立与服务器单元42的连接,用于接收客户端单元41的指令,解除指令间的依赖关系,向服务器单元42提交客户端的指令,然后把指令的执行结果返回客户端单元41。代理服务器单元43包括指令处理子单元431、缓存管理子单元432和PID管理子单元433。
本系统实施例的工作流程如下:
代理服务器单元43的PID管理子单元433基于PID建立与服务器单元42的连接;
用户从客户端单元41发送指令到代理服务器单元43;
指令处理子单元431判断所述指令的类型,若为独立指令,则交缓存管理子单元432存储至所述用户的指令缓存区;
若为关联指令,指令处理子单元431则依据所述指令按照预置规则生成新的独立指令,然后交缓存管理子单元432将所述新生成的指令存储至所述用户的指令缓存区;
PID管理子单元433判断PID资源的状态,如果PID未被占用,则占用该PID,顺序从缓存管理子单元432提取相应用户指令缓存区中的指令,提交至服务器单元42,以及,接收服务器单元42返回的指令执行结果,交缓存管理子单元432存储至相应用户的结果缓存区,然后释放所述PID资源;
指令处理子单元431从缓存管理子单元432中相应用户的结果缓存区,取出所述指令的执行结果,返回客户端单元41。
优选的,本系统实施例工作流程还包括:
所述指令处理子单元431收到用户提交的指令后,首先判断缓存管理子单元432是否存有所述用户提交指令的执行结果,若是,则直接读取所述指令的执行结果返回给客户端单元41。
优选的,本系统实施例工作流程还包括:
所述用户从客户端单元41退出与代理服务器单元43的连接后,所述缓存管理子单元432释放该用户的指令缓存区和结果缓存区。
优选的,当所述关联指令为解析指令时,预置规则为:
代理服务器单元43的指令处理子单元431从缓存管理子单元432读取与所述关联指令相关的数据,创建一条或多条新的指令,然后,缓存管理子单元432将所述新生成的指令,顺序存储至所述用户的指令缓存区。
优选的,当所述关联指令为前置指令时,预置规则为:
代理服务器单元43的指令处理子单元431判断缓存管理子单元432是否存储有所述关联指令的前置指令,如果有,则交缓存管理子单元432按所述关联指令的前置指令、所述关联指令的顺序存储至所述用户的指令缓存区。
优选的,当所述关联指令为后续指令时,预置规则为:
代理服务器单元43的指令处理子单元431生成所述关联指令的后续指令,然后缓存管理子单元432按所述关联指令、所述新生成的后续指令的顺序存储至所述用户的指令缓存区。
优选的,缓存管理子单元432按用户的名称或代码标识暂时保存该用户发出的指令和服务器单元42返回的指令的执行结果。
本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于本发明的系统和代理服务器装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上对本发明所提供的一种解除客户服务器系统中指令间依赖关系的方法、代理服务器和系统,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。