首页> 中国专利> 计算机网络环境下的连接管理

计算机网络环境下的连接管理

摘要

本发明主体披露了一种用于管理网络(106)中客户端(102)与服务器(104)内应用程序(214)之间连接的系统(104)和方法。在一种实施方式中,所述方法包括从所述客户端(102)接收连接请求。所述方法进一步包括将唯一地标识所接收到的连接请求的唯一标识符(UID)与工作线程(228)关联。另外,所述方法包括通过所述工作线程(228)传输报文给所述应用程序(214),其中所述报文包括与所述连接请求关联的客户端数据(216)。所述方法还包括通过逆向工作线程(230)从所述应用程序(214)获取与所述UID关联的应答报文(218)。所述逆向工作线程(230)被配置以传输所述应答报文(218)给所述客户端(102)。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-04-03

    授权

    授权

  • 2015-03-11

    实质审查的生效 IPC(主分类):H04L29/08 申请日:20130131

    实质审查的生效

  • 2013-08-14

    公开

    公开

说明书

技术领域

本文所述主题总体上涉及计算机网络环境下的连接管理,具体地,涉及用于计算机网络环境下基于线程的连接管理的方法和系统。

背景技术

计算机应用程序(application)被设计成允许用户有效地并更易地实施某些任务。 现今有各种已知的计算机应用程序。这些计算机应用程序例如包括企业应用程序、会计应用程序、交易应用程序、办公套件、媒体应用程序、图形模拟应用程序等等。这些应用程序通常被封装在计算机内或者通过基于计算的网络被实施,并且能配置(deploy)在一个或多个服务器被。另外,这些应用程序也用于给大量的可同时访问应用程序的客户端提供服务。例如,在银行环境下,上百万的用户可在特定的时间点操作。另外,特定的银行服务可在相同的时间点被多个用户利用。这种情况下,管理客户端和服务器上的应用程序之间的连接是重要的。

传统的系统通过连接管理器建立和管理客户端与应用程序之间的连接。连接管理器基于从一个或多个客户端接收到的请求访问应用程序。根据接收到的客户端请求的数量,连接管理器建立多连接,因此使得多个用户能访问具体的应用程序。典型地,这些连接管理器可能只针对特定的应用程序,即能够处理用于具体应用程序的请求。

发明内容

本发明内容用于介绍有关管理网络中多个实体之间连接的系统和方法的构思,并且该构思在下文中详细的说明书中被进一步描述。本发明内容既不是要确定所要求保护主题的基本特征,也不是要用于确定或限定所要求保护主题的范围。

在一种实施方式中,提供了一种管理网络中客户端和服务器内应用程序之间连接的方法。所述方法包括从客户端接收连接请求。所述方法进一步包括将唯一地标识所接收到的连接请求的唯一标识符和工作线程关联。进一步,所述方法包括通过工作线程传输报文(message)给应用程序。所述报文包括与连接请求关联的客户端数据。所述方法还包括通过逆向工作线程从应用程序获得与唯一标识符关联的应答报文。逆向工作线程被配置以传输应答报文给客户端。

附图说明

参考附图记叙了详细的说明书。在附图中,标记数字的最左位标识了标记数字第一次出现的附图。在整个附图中相同的数字用于标记类似的特征和组件。

图1显示了依据本发明主题的一种实施方式实施多个实体之间连接管理的通信网络环境。

图2显示了依据本发明主题的一种实施方式用于多个实体之间连接管理的系统。

图3显示了依据本发明主题的一种实施方式主线程、工作线程和逆向工作线程的集成的说明性展示。

图4显示了依据本发明主题的一种实施方式初始化主线程的方法。

图5显示了依据本发明主题的一种实施方式初始化工作线程的方法。

图6显示了依据本发明主题的一种实施方式通过主线程处理连接请求的方法。

图7显示了依据本发明主题的一种实施方式通过工作线程处理连接请求的方法。

图8显示了依据本发明主题的一种实施方式通过工作线程处理呼入连接请求和为中央服务器准备报文的方法。

图9A显示了依据本发明主题的一种实施方式通过逆向工作线程处理报文的方法。

图9B显示了依据本发明主题的一种实施方式通过逆向工作线程执行用户写入事件的方法。

图10显示了依据本发明主题的一种实施方式经过连接管理器的多个实体之间的数据和报文流。

具体实施方式

本文描述了用于管理在基于计算的网络中请求一个或多个服务的多个客户端之间连接的系统和方法。在一种实施方式中,所述系统和方法能在各种计算环境中被实施,例如服务器、客户端、台式计算机、笔记本电脑以及类似智能手机和个人数字助理(PDA)的移动计算环境。

近来,分布式计算环境被广泛用于提供一个或多个功能。这些功能能被提供给一个或多个可访问服务器的用户,所述服务器进而通过一个或多个托管应用程序提供所述功能。所提供的功能对来自用户的一个或多个请求响应。例如,基于计算的设备目前被广泛用于执行各种银行相关业务,在所述交易中客户端或用户可访问由金融机构(例如银行)管理的中央门户网站。

一个或多个客户端所需求的功能通常通过分布式计算环境提供。在这种情况下,在中央服务器上可部署一个或多个应用程序。根据需求,一个或多个客户端能通过基于计算的网络(例如因特网)访问所述应用程序。客户端通过它们各自的客户端设备能相应地与服务器通信并且访问应用程序。

对于本说明书,涉及客户端的引语也会包括关联的客户端设备。传统的系统包括一个或多个的用于帮助建立和维护一个或多个客户端与部署有一个或多个应用程序的服务器之间连接的模块更多。这些模块(也被称为连接管理器)监控呼入请求,并且相应地帮助建立和维护与服务器之间的连接。一旦呼入请求被接收,连接管理可调配用于实施所述请求的资源。正如本领域技术人所认识到的,文档服务器(word server)能指示在一个或多个基于计算的设备上可被实施的硬件或软件组件。

在这些传统的系统中,连接管理器可与具体的应用程序关联。与该应用程序关联的连接管理器在运行前能被初始化。一旦被初始化,连接管理器就与该应用程序建立连接。随后,连接管理器核对或监听呼入请求。但是对于其他应用程序的请求可通过与所述其他应用程序关联的其他连接管理器被分开地管理。因此,与一个应用程序关联的连接管理器不能帮助建立和维护与其他应用程序的连接。同样,不同的连接管理器需提供给不同的应用程序。

本文描述了用于管理多个客户端与一个或多个应用程序之间连接的系统和方法。如上文所述,应用程序在基于计算的设备(例如服务器)上被实施。有关建立与应用程序的连接的引语同样在其范围内也可包括建立与在其上执行应用程序的服务器的连接。服务器可被理解为提供有大量应用程序和服务的硬件或软件。在一种实施方式中,所述系统和方法能提供任一应用程序之间的连接层以建立、维护和终止客户端和服务器之间的通信。

在一种实施方式中,一个或多个客户端与(如服务器上的)应用程序之间的连接能通过连接管理器被管理。连接管理器进而能在一个或多个应用程序被实施的服务器上被执行。

连接管理器能被基于多线程程序,当多线程程序执行一个或多个进程单元时,会导致执行一个或多个并发运行任务(也称为线程)。线程可被看作运行程序的子进程。由于本文所述的构思同样地适用于(单或多)程序和线程,因此本文所述使用的术语线程涉及单线程程序或多线程程序中的单线程。

如上文所述,连接管理器实施主线程以及多个工作线程和逆向工作线程。在一种实施方式中,每个工作线程与相应的且唯一的逆向工作线程关联。主线程管理工作线程和逆向工作线程。主线程然后监听(即监控)来自客户端的呼入连接请求。呼入连接请求是用于访问在服务器上可被实施的一个或多个应用程序的请求。

一旦接收到呼入连接请求,主线程为呼入连接请求生成唯一标识符(UID)。UID唯一地标识一个和每个连接请求。一旦用于呼入连接请求的UID被确定,主线程从多个工作线程中标识最小负载(least loaded)工作线程。作为一个实施方式,最小负载工作线程能基于与所述工作线程关联的客户端的数量被标识。因此,与工作线程关联的客户端数量越少,负载就越小。

一旦被标识,呼入连接请求就与最小负载工作线程关联。主线程发送连接相关信息给工作线程。在一种实施方式中,连接相关信息可包括UID。在其他的实施方式中,连接类信息包含用来建立连接的套接字(socket) ID。

随后工作线程在从客户端接收数据后为部署在服务器上的应用程序准备报文。在一种实施方式中,报文包括客户端数据以及与特定连接请求关联的UID。除此之外,客户端数据能包括指明有关客户端请求的各方面的信息,例如请求访问的应用程序、请求服务的类型(如资金转移请求)等等。一旦报文被准备,工作线程就标识基于报文所要传输的目标(destination)。在一种实施方式中,工作线程标识基于头信息的目标,这些头信息包含在接收到的客户端数据中。

报文随后被传输到目标,即目标应用程序。如上文所述,工作线程基于包含在报文中的客户端数据标识目标应用程序。报文在被接收时通过目标应用程序被处理。目标应用程序在接收报文时运行以产生应答报文。所产生的应答报文会与从客户端接收到的呼入报文内所指定的客户端数据一致。在一种实施方式中,应答报文进一步包括UID。应答报文当被生成时就发送给连接管理器以传输回给呼入报文所来自的客户端。

同时,工作线程能进一步将连接相关信息与通过主线程生成的UID关联。在一种实施方式中,连接相关信息与UID之间的关联能使用散列表来实施。在这种情况下,工作线程对应相关的UID将连接相关信息存储在散列表中。

如上文所述,应答报文通过连接管理器被传输给相关的客户端。来自服务器的应答报文由连接管理器接收。在一种实施方式中,逆向工作线程接收应答报文。如上文所述,每个工作线程与逆向工作线程关联。

逆向工作线程在从目标应用程序(如服务器上的应用程序)接收到包含UID的应答报文时基于连接相关信息与唯一标识符之间的关联获取连接相关信息。在一种实施方式中,逆向工作线程基于应答报文中存在的UID从散列表中检索连接相关信息。一旦有关的连接相关信息被检索,逆向工作线程就发送报文给基于检索到的连接相关信息所标识的相应客户端。

正如本领域技术人员认识的,本文所描述的系统和方法旨在于通过适当地平衡负载增加系统的效率,这种负载的平衡是通过将呼入连接和最小负载工作线程关联实现的。另外,所述的系统和方法提供了其他的优点,其包括但不限于增强吞吐量、时延(latency)和可扩容性。本发明主题也提供了能独立于应用程序类型而被配置的连接管理器。

结合下文中的附图进一步描述上述方法和系统。应当理解的是,说明书和附图仅用于图示本发明主题的原理。因此应当认为,本领域技术人员能设计出体现本发明主题的原理并且包含在本发明主题的构思和范围内的各种组合。另外,本文中所有的列举本发明主题的原理、方面和实施方式及其具体实施例的陈述都包含其等同物。

图1显示了依据本发明主题的一种实施方式管理一个或多个客户端设备和服务器之间连接的基于计算的网络环境100。在一种实施方式中,实施基于计算的网络环境100以使得多个客户端之间的连接能连接至多个应用程序。

在一种实施方式中,基于计算的网络环境100包括多个连接至中央服务器104(下文中可互换地称为服务器104)的客户端102-1, 102-2, 102-3,...102-N (下文中统一地称为客户端102并且单独地称为客户端102)。客户端102通过网络106与中央服务器104连接。中央服务器104进一步包括一个或多个应用程序(未图示),该应用程序是客户端102试图访问以获得一个或多个服务的应用程序。所述应用程序的例子包括但不限于银行应用程序、交易应用程序等等。中央服务器104进一步包括连接管理器108。连接管理器108帮助建立和维护一个或多个客户端102与中央服务器104之间的连接,并且进而建立和维护一个或多个客户端102与中央服务器104内应用程序之间的连接。

每个客户端102和中央服务器104可由传统计算设备的任何一种来实施,所述传统计算设备例如包括服务器、台式个人电脑、笔记本或手提电脑、工作站、大型计算机和网络设备。

计算网络106可以是无线网络、有线网络或两者的结合。计算网络106也可以是单独的网络或者多个单独网络的结合,这些单独的网络相互连接并且作为单个的大型网络(例如Internet或者内部网)起作用。网络106可由不同类型的网络来实现,例如内部网、局域网(LAN)、宽带网(WAN)、因特网等。网络106可以是专用网或者共享网,专用网或者共享网代表了不同网络类型的协会,这些不同网络类型使用多种协议相互通信,上述协议例如是超文本传输协议(HTTP)、传输控制/互联网络协议(TCP/IP)等。另外,网络106可包括提供客户端102和服务器104之间链接的网络设备,例如网络交换机、集线器、路由器、主机总线适配器(HBA)。网络106中的网络设备可通过通信链接与客户端102和服务器104互动。用户可通过客户端102与服务器104互动。

在一种实施例中,基于计算的网络环境100可包括网络106(例如包括上千个客户端102(例如办公个人电脑、笔记本)的公司网络)、服务器104(例如刀片式服务器)以及其他通过网络106被连接的计算设备。在另一实施方式中,网络106可以是具有有限数量的客户端102(例如个人计算器和笔记本电脑)的企业网络,所述客户端102通过网络106连接至服务器104。

如上文所述,一个或多个客户端102与(如服务器104上的)应用程序之间的连接能由连接管理器108管理。连接管理器108能由软件或硬件逻辑来实施,这并不超出本发明主题的范围。在一种实施方式中,连接管理器108至少使用主线程、一个或多个工作线程以及一个或多个逆向工作线程管理一个或多个客户端设备102之间的连接。参考附图2-3进一步描述图1所述连接管理器108以及系统和设备的工作过程。

图2显示了根据本发明主题的一种实施方式的中央服务器104的方块图。在所述实施方式中,中央服务器104包括一个或多个处理器202、与处理器202连接的存储器204以及系统接口206。

处理器202可以由一个或多个微处理器、微型计算机、微控制器、数字信号处理器、中央处理单元、状态机、逻辑电路和/或任何的基于运行指令处理信号的设备来实现。除此之外,处理器202被配置以提取和执行存储在存储器204中的计算机可读形式的指令和数据。

接口206可包括各种软件和硬件接口,例如外围设备接口,如键盘、鼠标、外部存储器、打印机等。另外,接口206可使客户端102和中央服务器104与其他计算设备(例如网络服务器和外部数据库)通信。接口206可有助于多种协议和网络内的多路通信,网络例如包括有线网络(如LAN、电缆等)和无线网络(如WLAN)等。接口206可包括一个或多个允许客户端102和中央服务器104之间通信的端口。

存储器204可包括任何的现有技术中已知的计算机可读介质,包括例如易失性存储器(如静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM))和/或非易失性存储器(如只读存储器(ROM)、可擦除可编程ROM、闪存、硬盘、光盘和磁带)。存储器204进一步包括模块208、数据210和连接管理器进程212。连接管理器进程212被指定存放在中央服务器104的存储器204内。连接管理器进程212能被看作包括一个或多个用于管理一个或多个客户端102和服务器104之间连接的线程。当然,连接管理器进程212当运行时也会驻留在处理器202上。

模块208包括执行特定任务或实现特定的具体数据类型的例行程序(routine)、程序、对象、组件、数据结构等。在一种实施方式中,模块208包括连接管理器108和其他应用程序214。其他应用程序214可包括增补应用程序和功能的程序或代码指令,例如基于计算网络环境100、客户端102和服务器104的操作系统中的程序。

此外,数据210作为存储由一个或多个的模块208处理、接收并生成的数据的仓库。数据210包括客户端数据216、应答报文218、散列表220、报文222和其他数据224。其他数据224包括作为执行其他应用程序214中的一个或多个模块的结果而生成的数据。

每个连接管理器进程212由连接管理器108实施。在一种实施方式中,每个连接管理器进程212能由连接管理器108初始化。后续将在说明书中更加详细地描述连接管理器进程212被初始化的方式。连接管理器进程212作为模块208的执行子进程。连接管理器进程212包括主线程226、一个或多个工作线程228以及一个或多个连接至所述一个或多个工作线程228的逆向工作线程230。连接管理器进程212、数据210和模块208能被看作相互之间连接从而使得当从一个客户端102接收连接请求时,一个模块208就执行至少一个连接管理器进程212以处理通过网络106从客户端105传输至服务器104的数据210。在一种实施方式中,连接管理器进程212能在一个或多个处理器202中被执行。

连接管理器108被配置以通过网络106帮助建立和管理一个或多个客户端102与中央服务器104之间的连接。在一种实施方式中,客户端102与中央服务器104之间的连接基于一个或多个连接管理器进程212的执行而被建立。

连接管理器中的报文流

在运行时,连接管理器108监控或监听呼入连接请求。在一种实施方式中,连接管理器108使用TCP监听器套接字监听呼入连接请求。呼入连接请求由一个或多个客户端102初始化。连接请求用于建立与目标应用程序(如其他应用程序214中的一个)的连接。为了举例说明本发明主题,目标应用程序被称为应用程序214。

应用程序214的连接请求由连接管理器108接收。当连接请求被接收时,由连接管理器108初始化主线程226。后续将在说明书中更加详细地介绍主线程226的初始化以及工作线程228的后续初始化的各方面。主线程226生成UID并且将所述连接请求所来自的一个客户端102(如客户端102-1)与UID关联。主线程226在生成UID时将UID与呼入连接请求关联。UID作为用于唯一地标识所述连接请求所来自的客户端(例如客户端102的一个)的标识符。

主线226随后从多个工作线程228中标识最小负载工作线程228。连接管理器108进一步根据每个工作线程228所管理的连接的数量确定最小负载工作线程228。在一种实施方式中,主线程226分配连接,并且通过UNIX域套接字将连接相关信息和UID传递给工作线程228。

每个工作线程228与相应的逆向工作线程230关联。在一种实施方式中,逆向工作线程230能由工作线程228生成。后续在说明书中将详细地解释逆向工作线程230被初始化的方式。

在获取连接相关信息时,工作线程228将其与由主线程生成的UID关联。在一种实施方式中,工作线程228对应UID将连接相关信息存储在散列表220中。

一旦连接相关信息与UID关联并且被存储在散列表220中,工作线程可为应用程序(如应用程序214)准备报文222。报文222在一种实施方式中包括客户端数据216和UID。

如上文所述,客户端数据216可包括例如初始化客户端请求而要访问的应用程序的名称、请求类型、请求时间等信息。在一种实施方式中,报文222包括作为头信息的一部分的客户端数据216。工作线程228随后标识目标应用程序(如应用程序214),并且生成要被传输给应用程序214的报文222,报文222的生成基于从客户端数据216获取的头信息。

报文222随后被传输给目标应用程序(即应用程序214)。如上文所述,工作线程228基于包含在客户端数据216中的头信息标识应用程序214。报文222然后能由应用程序214处理。由应用程序214处理的报文222可产生与应用程序214关联的具体功能的特性。例如,对于作为银行应用程序的应用程序214,根据客户端请求将资金转移到另一用户账户的相应,对报文222的处理可导致用户账户余额的变化。

应用程序214在处理报文222时可生成响应或应答报文。当应答报文被采集时,应答报文能对一个或多个的基于报文222的处理而被执行的功能进行响应。应答报文进一步包括UID。应答报文当被生成时由连接管理器108接收以被传输回给报文所来自的客户端,如客户端102的一个。

连接管理器108在接收应答报文时确定用于处理应答报文的相关逆向工作线程230。此时,基于包含在应答报文中的关联UID,逆向工作线程230从散列表220中检索连接信息。一旦从散列表220中检索到相关的连接相关信息,逆向工作线程230能传输给被标识的客户端102。

在一种实施方式中,一旦从散列表220中未检索到所述连接相关信息,逆向工作线程230丢弃从应用程序214所接收的应答报文。在另一实施方式中,从所检索的连接相关信息可进一步确定,是否为用户写入事件注册关于被标识的客户端的连接。在注册有效的情况下,应答报文被发送给用户队列。在无注册的情况下,应答报文被发送给各自的客户端102。

在另一实施方式中,当发送应答报文时一旦检测到错误,应答报文由逆向工作线程230保留。也可能出现由于客户端102可利用的带宽低会发生错误的情况。在这种情况下,应答报文能被缓冲。一旦检测到另外的错误,为该客户端(即客户端102)注册用户写入事件(write event)功能。当执行用户写入事件时,逆向工作线程230发送应答报文的剩余部分。当发送应答报文的剩余部分时,检查任何错误的出现。在有错误的情况下,剩余部分再次被更新以随后被发送。在无错误的情况下,部分报文被检索并且被发送给相应的客户端102。在用户队列中未发现报文的情况下,即不存在积压(backlog)报文的情况下,相应的客户端102被从用户写入事件撤销注册。

如上文所述,连接管理器108实施主线程226、工作线程228和逆向工作线程230。在一种实施方式中,主线程226、工作线程228和逆向工作线程230由连接管理器108初始化。

主线程的初始化

在一种实施方式中,如上文所述的,整个进程可始于主线程226的初始化。主线程226的初始化可包括配置主线程226。配置主线程226的信息能从配置文件中收集。配置文件也能指定(specify)工作线程的总数量,即处理与应用程序214的连接所需的工作线程228的数量。在另一实施方式中,主线程226也从服务文件中获取服务相关信息。能使用可扩展标记语言(XML)指定服务文件并且通过系统管理器指定服务文件。

在执行连接管理器进程212的过程中,可发生多个事件。另外,针对所述事件的发生,也应当实施一个或多个动作。在一种实施方式中,连接管理器108定义事件管理器302。一旦事件管理器302被定义,连接管理器108将所有的可能作为主线程226的执行而发生的可能事件与事件管理器302关联(即注册)。在一种实施方式中,连接管理器108也指定 一个或多个的在一个或多个注册事件发生时需要被执行的动作。在其他实施方式中,事件管理器302能出现在其他的应用程序214中。

一旦事件管理器被生成,主线程226开始沿配置文件中所指定的路径监听来自一个或多个客户端102的呼入连接请求。在一种实施方式中,主线程226在TCP 监听器套接字中监听连接请求。在该阶段,主线程226能生成多个工作线程228。在一种实施方式中,能生成的工作线程228的数量能在配置文件中被指定。参考附图4进一步详细地提供主线程226的初始化。

工作线程的初始化

在一种实施方式中,能生成与工作线程228关联的事件管理器(例如事件管理器304),在这种情况下,向与工作线程228关联的事件管理器304注册一个或多个事件以及在相关事件出现时需要被执行的一个或多个相应的动作。

通过UNIX域套接字向主线程226注册工作线程228。在一种实施方式中,一旦向主线程226注册工作线程228,工作线程228就打开服务器队列以发送来自客户端102的客户端数据216。在另一种实施方式中,为了建立连接管理器108与应用程序214之间的通信,通过初始化与POSIX队列的连接打开服务器队列。POSIX队列允许进程以报文的形式通信和传递数据。另外,工作线程228通过呼入队列从中央服务器104接收响应。

在另一种实施方式中,工作线程228进一步生成呼入队列以从应用程序214接收应答报文。随后,工作线程228生成相应的逆向工作线程230。在一种实施方式中,每个工作线程228能进一步与分配给每个工作线程228的工作者ID关联,所述工作线程228向主线程226注册。

错误纠正

在一种实施方式中,工作线程228能确定与客户端102建立的连接是否有错误。如果检测到错误,工作线程228发送请求给主线程226以关闭连接。一旦未检测到错误,工作线程228就解码客户端数据216中接收到的头信息并且寻找合适的目标应用程序(如应用程序214)。一旦目标程序214被标识,则准备包含客户端数据216和UID的报文222。

在从客户端102接收部分数据的情况下,工作线程228将部分数据保存在散列表220中,并且一旦从客户端102接收到完整的数据则发送数据给服务器队列。在一种实施方式中,连接管理器108可检查在与客户端102建立的连接中是否有错误。在连接中有错误的情况下,请求被发送给主线程226以终止与客户端102的连接。

一旦未检测到错误,包含在报文222中的头信息被解码以确定目标应用程序214。随后报文22被准备并且发送给与应用程序214关联的服务器队列。

具体实施方式

让我们考虑一个实施例,当客户端102已经发送连接请求,主线程226为来自客户端102的连接请求生成唯一标识符或UID,如‘X1’。在散列表中,对应‘X1’,工作线程228存储连接相关信息(如套接字ID)和来自客户端102的其他连接相关信息,通过所述连接相关信息所述连接管理器从客户端102接收连接请求。在一个实施例中,该数据可等于5字节。

进一步地,工作线程228从客户端102接收客户端数据216,客户端数据216包含(如100字节)的相关信息和头信息(关于应用程序214的信息)。工作线程228解码该头信息并且将服务信息(100字节)和UID(X1)放入合适的服务器队列。服务器处理请求并且发送应答报文给通过逆向工作线程230获取的呼入队列。应答报文包含UID(X1)。在接收应答报文时,逆向工作线程230在散列表检索用于对应UID(X1)并且从散列表220检索连接相关数据(5字节)。连接相关数据能涉及用户类型、用户名、套接字ID等。

在一种实施方式中,逆向工作线程230确定检索结果。如果检索未发现数据,则应答报文被丢弃。一旦所述检索返回任何数据,所述连接就被检查是否为用户写入事件注册所述连接。在有任何预注册的用户写入事件的情况下,应答报文就被发送给用户队列。在没有预注册用户写入事件的情况下,应答报文被直接发送给相应的客户端102。在前一种情况下,即如果为用户写入事件注册所述连接被确定,应答报文(例如应答报文218)被放入用于寄存所有的积压报文的用户队列中。这也许会出现另一报文可在上一报文还未完成传输之前开始呼入。在这种情况下,应答报文首先被完整地接收、存储在队列中。一旦实施,应答报文218能被一个接一个地传递。这确保没有报文丢失。

图4显示了依据本发明主题的一种实施方式用于初始化主线程(如主线程226)的方法400。具体的方法可在计算机可执行指令的广义语境中被描述。通常计算机可执行指令能包括执行特定功能或实现特定的具体数据类型的例行程序、程序、对象、组件、数据结构、过程、模块、功能等等。

主线程的初始化始于方块402。在方块402中,错误的日志(log)文件被初始化。例如,主线程226初始化错误的日志文件。错误的日志文件进而被存储在其他数据224中。错误的日志文件在被生成时作为参数(argument)被传递并且用于指示在运行连接管理器108过程中可能出现的一个或多个错误。

在方块404,用于连接管理器的一个或多个配置设置能被确定。例如,基于配置设置文件能确定连接管理器108的配置设置。基于包含在配置设置文件中的信息,连接管理器108能进一步确定一个或多个配置参数,例如工作线程的数量、应用连接管理器108的服务名称、连接管理器标识符(ID)、工作者监听路径、队列中报文的数量等等。在方块406中一旦配置设置被确定,主线程226基于服务名称解析(parse)服务文件以确定一个或多个服务相关参数,例如IP地址、端口地址、用于服务器(如服务器104)的uxd基路径(base path)、最大报文大小等。在一种实施方式中,包含多个服务参数的服务文件能被存储在其他数据224中。

在方块408中一旦配置设置被确定,用于主线程的事件管理器就被生成。例如,事件管理器302被定义并且连接管理器108将所有的可能作为主线程226的执行结果而出现的可能事件与用于主线程226的事件管理器302关联(即注册)。在一种实施方式中,连接管理器108也指定一个或多个需要在一个或多个被注册事件发生时被执行的动作。在其他的实施方式中,事件管理器302能出现在其他应用程序214中。在其他实施方式中,事件管理器302处理用于主线程226的工作者_回调(callback)事件 和tcp _监听器_回调 事件。

在方块410中,主线程开始监听工作线程。例如,能与工作线程(如一个或多个工作线程228)通信的主线程226产生套接字以在端口监听。在一种实施方式中,端口地址能被在配置设置文件中指定。所述套接字的一个例子可以是unix域套接字。正如已解释的,工作线程通过提供的路径将它们的注册请求提供给主线程226。

在方块412中,连接管理器可进一步开始监听呼入客户端请求。例如,连接管理器108可基于配置设置文件中指定的参数开始监听呼入客户端请求。在一种实施方式中,为读取事件向与用于事件工作者_回调tcp_监听器_回调的主线程226关联的事件管理器302注册套接字,在所述套接字上连接管理器108监听来自一个或多个客户端设备102的呼入连接请求。

在方块414中,一个或多个工作线程被生成。在一种实施方式中,主线程226生成一个或多个工作线程228。在一种实施方式中,能被生成的工作线程228的数量能在配置设置文件中被指定。

图5显示了依据本发明主题的一种实施方式用于初始化一个或多个工作线程的方法。具体的方法可在计算机可执行指令的广义语境中被描述。通常计算机可执行指令能包括执行特定功能或实现特定的具体数据类型的例行程序、程序、对象、组件、数据结构、过程、模块、功能等等。

如上文所述的,主线程(如主线程226)生成一个或多个工作线程。另外,必须被生成的工作线程228的数量在配置文件中被指定。

在方块502中,生成与工作线程关联的事件管理器。也如上文所述的,向事件管理器304注册所有的能作为工作线程228的执行结果而发生的事件。

在方块504中,工作线程被注册。例如,向主线程226注册工作线程228。在一种实施方式中,通过配置文件中指定的路径向主线程226注册每个工作线程228。

在方块506中,服务器队列被打开。例如,一个或多个的工作线程能沿指定路径(如unix域套接字路径)发送请求以获取队列的名称。一旦队列的名称被获取,工作线程228打开用于发送报文给服务器(例如服务器104)的服务器队列。

在方块508中,通过工作线程生成呼入队列。例如,工作线程生成一个或多个用于从服务器104回收报文的队列。另外,每个工作线程228能与用于从服务器104接收应答的队列关联。在一种实施方式中,队列能通过队列名称被标识。队列名称进而能包括连接管理器ID、工作线程ID等。

在方块510中,一个或多个逆向工作线程被生成。例如,主线程226为每个工作线程228生成一个或多个逆向工作线程230。在一种实施方式中,逆向工作线程230的数量与工作线程228的数量完全相同。另外,每个逆向工作线程230唯一地对应其各自的工作线程228。

图6显示了依据本发明主题的一种实施方式显示主线程工作过程的方法600。具体的方法可在计算机可执行指令的广义语境被描述。通常计算机可执行指令可包括执行特定功能或实现特定的具体数据类型的例行程序、程序、对象、组件、数据结构、过程、模块、功能等。

在方块602中,主线程监听呼入连接请求。例如,主线程226在配置文件中指定的端口上监听呼入连接请求。如上文详细所述的,呼入连接请求能被看作包括用于访问可在服务器上被实施的一个或多个应用程序的请求。

在方块604中,与呼入连接请求关联的唯一标识符被生成。例如,主线226生成用于呼入连接请求的唯一标识符或UID。通过主线程226生成的UID对于每个呼入连接请求是唯一的,并且因此唯一地标识每个呼入连接请求。在一种实施方式中,主线程226可执行tcp_监听器_回调  例行程序以生成UID。

在方块606中,最小负载工作线程被选择。例如,主线程226从工作线程228中确定最小负载工作线程(例如工作线程228-1)。在一种实施方式中,基于与每个相应的工作线程228关联的客户端的数量标识最小负载工作线程228-1。

在方块608中,与呼入连接请求关联的连接详情被传输给工作线程。例如,主线程226传输连接详情给所选择的最小负载工作线程(即工作线程228-1)。在一种实施方式中,连接详情包括UID、套接字描述符(descriptor)等。另外,例如,一旦连接详情被传输给所选择的工作线程228-1,如果需要,在某些情况下UID可被更新(方块610)。

在一种实施方式中,无论何时通过任一工作线程228(例如工作线程228-1)将任一请求发送给主线程226,主线程226都能执行工作者_回调例行程序。基于来自工作线程228-1的请求的类型,主线程226可处理请求。一旦被处理,主线程226然后就更新与工作线程228-1关联的数据。

图7显示了依据本发明主题的一种实施方式通过工作线程处理连接请求的方法700。具体的方法可在计算机可执行指令的广义语境中被描述。通常计算机可执行指令可包括执行特定功能或实现特定的具体数据类型的例行程序、程序、对象、组件、数据结构、过程、模块、功能等等。

在方块702中,连接相关信息被接收。例如,一个工作线程228(如工作线程228-1)从主线程226接收连接相关信息。在一种实施方式中,连接相关信息能包括UID、用于连接的套接字描述符等。在一种实施方式中,对应例行程序uxd_工作者_回调的执行的响应接收连接信息。

在方块704中,为所接收的连接相关信息分配存储器。例如,工作线程228-1基于所接收到的连接相关信息分配存储器。

在方块706中,连接相关信息被存储在所分配的存储器中。例如,工作者进程228-1存储所述被分配的存储器中存储的连接相关信息。在一种实施方式中,工作线程228-1将连接相关信息存储在散列表中。存储在散列表中的连接相关信息对应与呼入连接请求关联的UID被存储。

在方块708中,为写入事件注册连接相关信息。例如,工作线程228-1为写入事件向与工作线程228-1关联的事件管理器304注册连接相关信息。在其他的实施方式中,向usr_回调 功能注册连接相关信息。

图8显示了依据本发明主题的一种实施方式处理来自一个或多个客户端设备的客户端数据216以及通过工作线程准备报文的方法800。具体的方法可在计算机可执行指令的广义语境中被描述。通常计算机可执行指令可包括执行特定功能或实现特定的具体数据类型的例行程序、程序、对象、组件、数据结构、过程、模块、功能等。

在方块802中,来自一个或多个客户端或用户的数据被接收。例如,一个工作线程228(即工作线程228-1)接收来自一个客户端设备102(如客户端设备102-1)的数据。在一种实施方式中,从客户端设备102-1接收数据所在的套接字当要被写入时被分类。在另一种实施方式中,工作线程228-1执行用户_回调  功能。在一种实施方式中,来自客户端设备102-1的数据被存储在缓冲区中。

在方块804中,需确定在接收来自一个客户端设备的数据时是否会发生错误。一旦确定在接收来自客户端设备102-1的数据时出现错误(方块804的‘是’路径),连接关闭请求被发送给用于关闭连接的主线程226(方块806)。

一旦确定未出现错误(方块804的‘否’路径),则通过解码来自一个客户端设备的数据来确定合适的服务器(方块808),所述合适的服务器是从客户端设备102-1所接收的数据须发送给的服务器。在一种实施方式中,缓冲区和来自客户端设备102-1的数据可被解析以确定服务器所需的标识符。在另一种实施方式中,相关服务器(如服务器104)的标识符可基于转码信息被确定。此外,转码信息标识数据须被传输至的服务器。

在方块810,为被标识的服务器准备报文并且将报文存放在由工作线程打开的队列中。如上所述,工作线程(如工作线程228-1)在其初始化时刻打开服务器队列。在一种实施方式中,工作线程228-1为配置在服务器104上的应用程序生成报文。在一种实施方式中,报文包括客户端数据216和与特定连接请求关联的UID。除此之外,客户端数据216能包括指明涉及客户端请求的各方面的信息,例如,请求访问的应用程序、请求服务的类型(例如资金转移请求)等。一旦报文被准备,则通过工作线程228-1将报文传输至被标识的服务器。

在方块812中,一旦来自客户端设备的数据是部分的,则所接收数据的剩余字节能被复制。例如,工作线程228-1能复制部分的接收数据至连接缓冲区。在这种情况下,剩余字节当被接收时也能被存储在连接缓冲区中,并且数据此时以其完整形式能被传递给服务器104。

图9A显示了依据本发明主题的一种实施方式指明逆向工作线程准备并发送数据给各自的客户端所用方式的方法900。具体的方法可在计算机可执行指令的广义语境中被描述。通常计算机可执行指令可包括执行特定功能或实现特定的具体数据类型的例行程序、程序、对象、组件、数据结构、过程、模块、功能等等。

在方块902中,从呼入队列中获取应答报文。例如,从与逆向工作线程230关联的呼入队列中获取应答报文218。如上所示,由中央服务器104生成的应答报文218通过中央服务器104被存放在呼入队列中。逆向工作线程230读取呼入队列中的应答报文218以进一步处理应答报文218。

在方块904中,与UID对应的连接相关信息被检索。例如,基于应答报文中接收的UID,逆向工作线程230在散列表220中检索客户端信息(即连接相关信息)。针对特定UID存储在散列表中的连接相关信息包含涉及标识相应客户端102的信息,所述UID是逆向工作线程230检索所基于的线程,所述相应客户端102是来自中央服务器104的应答报文218被发送至的客户端。

在方块906中,需确定是否存在对应所述UID的连接相关信息。例如,逆向工作线程230确定在散列表220的特定检索位置是否有可利用的涉及客户端的相应信息。如果所需的信息无用(方块906的‘否’路径),则逆向工作线程230丢弃来自中央服务器104的应答报文218(方块908)。

如果连接相关信息存在(方块906的‘是’路径),逆向工作线程230确定散列表220中的相应的连接相关信息,并且标识应答报文须发送至的客户端102。逆向工作线程230基于标识信息准备应答报文218(方块910)。

在方块912中,须确定是否为用户写入事件预注册与连接相关信息关联的连接。例如,基于检索的连接相关信息,逆向工作线程230确定是否为用户写入事件注册与客户端102的连接。在一种实施方式中,用户写入事件可在至少两种环境下被注册。在第一种情况下,来自中央服务器104的应答报文218是部分的。第二种情况下,当逆向工作线程230遇到错误,同时发送应答报文218给相应的客户端102。

如果为用户写入事件已预注册所述连接(方块912的‘是’路径),逆向工作线程230发送应答报文218给用户队列(方块914)。在一种实施方式中,积压的应答报文能被列入(enqueue)用户队列。另外,逆向工作线程230能检查用户队列中的应答报文218。

但是如果确定所述连接未被预注册(方块912的‘否’路径),逆向工作线程230直接发送应答报文218给相应的客户端102。在一种实施方式中,逆向工作线程230基于从散列表220中检索到的连接相关信息标识客户端102(方块916)。

在方块918中,在出现错误的情况下,为用户写入事件注册连接。在用户队列中未发现报文的情况下,这种情况的发生主要由于客户端102和连接管理器108之间的连接丢失,相应的客户端102被从用户写入事件中撤销注册。

图9B显示了依据本发明主题的一种实施方式通过逆向工作线程执行用户写入事件的方法。具体的方法可在计算机可执行指令的广义语境中被描述。通常计算机可执行指令可包括执行特定功能或实现特定的具体数据类型的例行程序、程序、对象、组件、数据结构、过程、模块、功能等。

在方块920中,用户写入事件被执行。例如,当与至少一个客户端设备的连接准备接收从缓冲区中检索的剩余数据时,逆向工作线程230执行用户写入回调功能。所述缓冲区存储由逆向工作线程230接收的部分报文,当报文的剩余部分准备被发送给客户端设备时部分报文被检索。

在方块922中,剩余数据被发送给客户端设备。例如,从缓存区中检索的剩余数据被排队以作为应答报文218通过逆向工作线程230被发送给相应的客户端102。逆向工作线程230以类似的方式通过确定散列表220中的相应的连接相关信息来准备应答报文218,并且标识应答报文218须被发送至的客户端102。

在方块924中,需确定在发送所检索到的剩余数据至客户端设备时是否有错误。例如,逆向工作线程230确定所检索到的剩余数据是否被无误地发送给相应的客户端102。如果在发送时有错误(方块924的‘是’路径),逆向工作线程230在缓存区中升级被发送给客户端102的剩余数据并且返回(方块932)。

如果逆向工作线程230确定所检索到的剩余数据被无误地发送给客户端102(方块924的‘否’路径),逆向工作线程230然后检查用户队列中的任一报文。在一种实施方式中,逆向工作线程230检查积压的应答报文218,该应答报文218被加入要被检索的用户队列中并且被发送给客户端102。

在方块928中,需确定是否在用户队列中发现积压的应答报文218。例如,如果在用户队列中未发现积压的应答报文218(方块928的‘否’路径),客户端102被从用户写入事件中撤销注册。在一种实施方式中,当确定在用户队列中不存在应答报文218时,逆向工作线程230从其他的用户写入事件中撤销客户端102(方块928)。

如果逆向工作线程230确定用户队列中存在应答报文218(方块928的‘是’路径),逆向工作线程230更新要被发送给客户端的剩余数据。例如,当逆向工作线程230在用户队列中发现积压的应答报文218时,逆向工作线程更新存储在缓冲区中的剩余数据,当通过逆向工作线程230执行用户写入回调功能时剩余数据随后被发送给客户端102。

图10显示了依据本发明主题的一种实施方式经过连接管理器的多个实体之间数据和报文流。连接管理器108管理多个实体(例如客户端102和服务器104)之间的连接并且控制多个实体之间的数据转移。为了管理客户端102和服务器104之间的连接并且控制客户端102和服务器104之间的数据传递,连接管理器108包括执行多个连接管理器进程(例如主线程226、工作线程228和逆向工作线程230)。连接管理器108也包括间歇地存储在散列表220中的数据,所述散列表220在执行工作线程228时被分配。

在一种实施方式中,通过TCP套接字层从客户端102接收连接请求(步骤1002)。主线程226通过TCP套接字层接收连接请求(步骤1004)。主线程226在接收连接请求时生成UID并且将UID与来自客户端102的连接请求关联。主线程226接收连接相关信息,在一种实施方式中所述连接相关请求是堆栈级(stack level)信息,例如通过其接收连接请求的套接字ID。主线程226将连接相关信息与所生成的UID关联并且将连接相关信息发送给工作线程228(步骤1006)。

在一种实施方式中,工作线程228在散列表中分配存储器,所述散列表用于对应UID存储来自主线程226的连接相关信息。一旦被分配,来自主线程226的对应UID的连接相关信息被存储在散列表220中(步骤1008)。平行地,工作线程228从客户端102接收客户端数据216(步骤1010),在一种实施方式中,客户端数据216包括头信息,所述头信息包含客户端数据216将被发送至的中央服务器104的详情。

工作线程228准备报文222并且通过将报文222存放在服务器队列中来将报文222发送给目标中央服务器104 (步骤1012)。在一种实施方式中,工作线程228通过包含连同客户端数据216的UID准备报文222并且将报文222存放在用于中央服务器104中的目标应用程序214的服务器队列中。服务器队列中的报文222被发送给中央服务器104中的目标应用程序214(步骤1014)。一旦中央服务器104接收报文222,中央服务器就处理报文以生成应答报文218。当应答报文218被采集时,应答报文218能对一个或多个的基于报文22的处理而被执行的功能进行响应。随后,通过将应答报文218存放在输入队列中应答报文218被传输给逆向工作线程230(步骤1016)。

应答报文218包含有助于逆向工作线程230检索散列表220的UID。逆向工作线程230从输入队列中读取应答报文218(步骤1018)。在接收应答报文218时,基于应答报文中接收的UID,逆向工作线程230在散列表中检索客户端信息,即检索对应于UID存储在散列表220中的连接相关信息。

如果逆向工作线程230不能检索到有关在应答报文218中接收的UID的任何信息,则逆向工作线程230丢弃报文(步骤1019)。如果逆向工作线程230确定了散列表220中相应的连接相关信息,逆向工作线程230则从散列表中检索信息并且基于所检索到的连接相关信息准备报文218(步骤1020)。

基于从散列表220中检索的连接相关信息,逆向工作线程230将所准备的应答报文218发送给相应的客户端102(步骤1022)。当发送应答报文218时与客户端102的连接中出现错误,逆向工作线程230则复制散列表220中的剩余字节并且注册用户写入事件。在注册用户写入事件时,逆向工作线程230将报文存放在用户队列中(步骤1024)。在一种实施方式中,在从应用程序服务器104接收到部分应答报文218的情况下,用户写入事件也被注册。在接收被存储从而用于发送的剩余字节时,逆向工作线程230检查存放在用户队列中的报文并且更新所述字节以发送给相应的客户端102(步骤1026)。

正如本领域技术人员所认识的,只要集成具有共同架构的任何应用程序,本发明主题的实施方式都是可实施的。因此,使用UMC发展的任何系统能与连接管理器108集成。另外,实施方式也允许在服务器和客户端之间多路复用(multiplexing)和去多路复用(demultiplexing)以实现更好地处理和管理客户端(如一个或多个的客户端设备102)与服务器104之间的连接。另外,作为本发明主题的一种实施方式,为了有效管理呼入连接,连接管理器108负载均衡(load balance)呼入连接请求。同样,连接管理器108被配置从而处理不同类型的负载,例如开环负载、闭环负载等。

如上所述,连接管理器108包括工作线程228和相应的逆向工作线程230。这允许连接管理器108在没有关于应用程序架构的信息可利用的情况下处理任何的通用架构。另外,本发明主题仅参考一个服务器104而被描述。但是,相同架构的设置能被容易地延伸至多个服务器104。

连接管理器108也能实现对服务器104以及一个或多个客户端设备102的有效管理。另外,每个报文能与最小时延关联从而增加报文处理和报文管理的效率。另外,本发明主题提供了独立于被配置在任何一种架构中的连接管理器的架构。另外,当连接管理器负载管理一个或多个服务器之间的负载均衡时,本发明主题的连接管理器可与任何配置的应用程序一起使用。另外,本发明主题的连接管理器能集中地处理被配置在一个或多个服务器中的多个应用程序。

虽然本发明主题的实施方式已使用语言具体到结构特征和/或方法被描述,但是应当认为本发明主题并不是必须限定至所述特定的特征和/或方法。然而,特定的特征和方法作为本发明具体实施方式被披露。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号