CN113204437B - 应用程序实例与客户端设备的连接 - Google Patents

应用程序实例与客户端设备的连接 Download PDF

Info

Publication number
CN113204437B
CN113204437B CN202110117397.2A CN202110117397A CN113204437B CN 113204437 B CN113204437 B CN 113204437B CN 202110117397 A CN202110117397 A CN 202110117397A CN 113204437 B CN113204437 B CN 113204437B
Authority
CN
China
Prior art keywords
client device
cookie
application
client
application instance
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110117397.2A
Other languages
English (en)
Other versions
CN113204437A (zh
Inventor
T·帕斯科
T·莫思尔
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hewlett Packard Enterprise Development LP
Original Assignee
Hewlett Packard Enterprise Development LP
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Hewlett Packard Enterprise Development LP filed Critical Hewlett Packard Enterprise Development LP
Publication of CN113204437A publication Critical patent/CN113204437A/zh
Application granted granted Critical
Publication of CN113204437B publication Critical patent/CN113204437B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/1066Session management
    • H04L65/1069Session establishment or de-establishment
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/14Session management
    • H04L67/146Markers for unambiguous identification of a particular session, e.g. session cookie or URL-encoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/541Client-server
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/53Network services using third party service providers

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Multimedia (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • General Business, Economics & Management (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本公开提供一种应用程序实例与客户端设备的连接。示例实施方式涉及在客户端设备之间传递cookie,使得基于该cookie将从客户端设备到应用程序的连接映射到给定应用程序实例。可以向应用程序实例连接器传输请求以连接到应用程序。该应用程序可以由多个应用程序实例实施。可以从应用程序实例连接器接收与该多个应用程序实例中的给定应用程序实例相关联的cookie。cookie可以使从具有该cookie的客户端设备到应用程序的连接映射到给定应用程序实例。可以将cookie从第一客户端设备传递给第二客户端设备,使得基于该cookie将从第二客户端设备到应用程序的连接路由到给定应用程序实例。

Description

应用程序实例与客户端设备的连接
技术领域
本公开总体上涉及应用程序实例与客户端设备的连接。
背景技术
计算设备可以远程接收任意数量的服务。例如,应用程序服务提供商可以通过因特网提供任意数量的服务。这些服务可以包括对特定远程软件应用程序的访问。因为应用程序服务可以传送给任意数量的位置处的任意数量的计算设备,因此应用程序可以采用多个实例的形式。
发明内容
根据第一方面,本公开提供一种客户端设备组中的第一客户端设备,包括:
处理器;以及
存储器,所述存储器包括指令,所述指令当由所述处理器执行时使所述处理器:
向应用程序实例连接器传输请求以连接到云中的远程计算系统的仲裁见证应用程序,所述仲裁见证应用程序由所述仲裁见证应用程序在所述远程计算系统上的多个应用程序实例实施;
从所述应用程序实例连接器接收与所述多个应用程序实例中的给定应用程序实例相关联的cookie,其中,所述cookie使得从具有所述cookie的客户端设备到所述仲裁见证应用程序的连接映射到同一所述给定应用程序实例;并且
将所述cookie从所述第一客户端设备直接传递给所述客户端设备组中的第二客户端设备,使得基于所述cookie而将从所述第一客户端设备和所述第二客户端设备两者到所述仲裁见证应用程序的连接映射到同一所述给定应用程序实例,
其中,所述第一客户端设备和所述第二客户端设备都是具有所述cookie的客户端设备,所述第一客户端设备和所述第二客户端设备属于所述客户端设备组并且参与所述客户端设备组的联合集群操作,
所述给定应用程序实例维护具有所述cookie的客户端设备的状态信息,并且
所述仲裁见证应用程序的给定应用程序实例通过从所述状态信息确定所述第一客户端设备和所述第二客户端设备中的哪个将扮演维护所述客户端设备组的权限记录的组长角色来解决所述客户端设备组的脑裂场景。
根据第二方面,本公开提供一种将应用程序实例连接至客户端设备的方法,包括:
由客户端设备组中的第一客户端设备经由网络向负载均衡器传输请求以连接到仲裁见证应用程序,所述仲裁见证应用程序由所述仲裁见证应用程序在云中的至少一个远程计算系统上的多个应用程序实例实施;
由所述第一客户端设备从所述负载均衡器接收与所述多个应用程序实例中的给定应用程序实例相关联的cookie,其中,所述cookie使得从具有所述cookie的客户端设备到所述仲裁见证应用程序的连接映射到所述给定应用程序实例;
由所述第一客户端设备将所述cookie从所述第一客户端设备直接传递给所述客户端设备组中的第二客户端设备,使得基于所述cookie而将从所述第一客户端两者和所述第二客户端设备两者到所述仲裁见证应用程序的连接路由到同一所述给定应用程序实例,
其中,所述第一客户端设备和所述第二客户端设备都是具有所述cookie的客户端设备,所述第一客户端设备和所述第二客户端设备属于所述客户端设备组并且参与所述客户端设备组的联合集群操作,
所述给定应用程序实例维护具有所述cookie的客户端设备的状态信息,并且
所述仲裁见证应用程序的给定应用程序实例通过从所述状态信息确定所述第一客户端设备和所述第二客户端设备中的哪个将扮演维护所述客户端设备组的权限记录的组长角色来解决所述客户端设备组的脑裂场景。
根据第三方面,本公开提供一种非暂态计算机可读介质,包括指令,所述指令当由客户端设备组中的第一客户端设备的处理器执行时使所述处理器:
通过网络向应用程序实例连接器传输请求以连接到云中的仲裁见证应用程序,其中,所述仲裁见证应用程序由所述仲裁见证应用程序的多个应用程序实例实施;
由所述第一客户端设备从所述应用程序实例连接器接收与所述多个应用程序实例中的给定应用程序实例相关联的第一cookie,其中,所述第一cookie使得从持有所述第一cookie的客户端设备到所述仲裁见证应用程序的连接映射到同一所述给定应用程序实例;并且
将所述第一cookie从所述第一客户端设备直接传递给所述客户端设备组中的第二客户端设备,使得基于所述第一cookie而将从所述第一客户端设备和所述第二客户端设备两者到所述仲裁见证应用程序的连接映射到同一所述给定应用程序实例,
其中,所述第一客户端设备和所述第二客户端设备都是持有所述第一cookie的客户端设备,所述第一客户端设备和所述第二客户端设备属于所述客户端设备组并且参与所述客户端设备组的联合集群操作,
所述给定应用程序实例维护持有所述第一cookie的客户端设备的状态信息,并且
所述仲裁见证应用程序的给定应用程序实例通过从所述状态信息确定所述第一客户端设备和所述第二客户端设备中的哪个将扮演维护所述客户端设备组的权限记录的组长角色来解决所述客户端设备组的脑裂场景。
附图说明
在以下详细描述中参照附图描述了某些示例,在附图中:
图1是图示了用于将一组客户端设备连接到相同的应用程序实例的系统的框图。
图2是图示了具有指令的客户端设备的框图,这些指令用于将cookie传递给另一个客户端设备,使得两个客户端设备都被映射到相同的应用程序实例。
图3是图示了包括处理器可执行指令的非暂态计算机可读介质的框图,这些处理器可执行指令用于在客户端设备之间传递cookie,使得两个客户端设备都被映射到相同的应用程序实例。
图4是图示了用于确定将在客户端设备组中的客户端设备之间共享哪个cookie的系统的框图。
图5是图示了用于在客户端设备之间传递cookie,使得基于该cookie而将从接收客户端设备到应用程序的连接路由到特定应用程序实例的方法的流程图。
具体实施方式
基于云的计算是通过网络远程传送计算服务。云计算通常涉及第三方通过因特网向计算设备提供远程资源(例如,对应用程序的访问;计算资源、存储资源或联网资源;和/或平台)“即服务(as-a-service)”。资源、应用程序或服务可以被认为是“基于云的”,其中该资源、应用程序或服务位于一个或多个远程服务器上,并通过网络传送。这些资源可以分布在多个设备和/或多个位置。
如上所述,这些资源可以包括对基于云的应用程序的访问。基于云的应用程序可以由可在远程计算系统上同时运行的一个或多个应用程序实例来实施。这些应用程序实例可以独立运行,也就是说,这些应用程序实例不直接相互通信。应用程序可以是在硬件上运行并提供或以其他方式实现服务的软件实体,并且应用程序实例可以是该实体的特定事件。
客户端设备可以是计算设备,其包括对服务(比如,基于云的服务)进行访问的计算机硬件或硬件和软件的组合。客户端设备的组(本文中也称为集群)可以执行联合集群操作。具体地,客户端设备可以是环境中的对等方,并且可以共享状态信息以执行联合操作。例如,一组客户端设备可以包括主存储阵列和辅助存储阵列,以执行将存储在主存储阵列处的数据复制到辅助存储阵列。主存储阵列和辅助存储阵列可以共享状态信息,使得如果主存储阵列变得不可用,则辅助存储阵列可以接管。
执行联合集群操作的客户端设备的另一个示例可以包括天气统计数据端点或可以跨不同位置共享状态信息以获得深入了解的其他硬件。作为另一个示例,多个客户端设备可以连接到相同的浏览器客户端。来自一个或多个客户端的一组多个连接可以被称为“客户端会话”。例如,第一连接可以包括浏览器客户端向电子商务网站上的虚拟购物车添加第一商品,而第二连接可以包括第二浏览器客户端向该虚拟购物车添加第二商品。为了确保第一商品和第二商品中的每一个都被添加到相同的虚拟购物车,可以将第一客户端连接和第二客户端连接的状态信息与浏览器客户端共享。
执行集群类型操作的一组客户端设备可以利用基于云的应用程序。然而,为了确保该组客户端设备共享状态信息,该组客户端设备可以连接到相同的应用程序实例,或者分别连接到该组客户端设备的不同应用程序实例可以共享状态信息。
因为如上所述,应用程序实例彼此之间可能不直接通信,所以应用程序实例可以经由可由应用程序的每个运行中实例访问的后端数据库服务来同步和/或协调状态信息。像应用程序实例一样,后端数据库服务可以是基于云的服务。例如,后端数据库服务可以存储该组客户端设备中的每一个客户端设备的状态信息,并且可以将状态信息传递给连接到该组客户端设备中的至少一个客户端设备的每个运行中应用程序实例。
为了确保安全性,可以在应用程序处实施锁定机制和控制机制,以防止对后端数据库服务的共享访问。此外,提供锁定机制和控制机制即服务或后端数据库即服务的第三方可能会向终端用户收取这些服务的消费的费用或者收取用于访问这些服务的许可的费用。通过确保执行基于集群的操作的客户端组中的客户端连接到应用程序的同一实例,可以避免依赖于后端数据库服务的成本和复杂性。
图1是图示了用于将一组客户端设备连接到相同的应用程序实例的系统的框图。该图示的示例包括客户端组101,该客户端组101包括两个示例客户端设备(分别为102和104)。尽管为了清楚和简明的目的而在客户端设备组101中图示了两个示例客户端设备,但是客户端设备组101可以包括任意数量的客户端设备。
客户端设备102和/或客户端设备104可以包括计算机硬件或硬件和软件的组合。在示例中,客户端设备102和/或客户端设备104可以是包括任意数量的节点(分别为112至116和120至124)的存储阵列,以便于数据的存储。客户端设备102可以包括用于连接106到网络的硬件(未示出)。客户端设备104可以类似地包括用于连接108到网络的硬件(未示出)。在示例实施方式中,客户端设备102、104可以分别经由连接106和/或连接108具体访问在云180处图示的基于云的资源。
在该图示的示例中,云180的基于云的资源可以包括由实例172至176实施的基于云的应用程序170。尽管为了清楚和简明的目的而图示了单个应用程序170和三个示例实例172至176,但是云180可以包括由任意数量的应用程序实例实施的任意数量的应用程序。此外,应用程序170的应用程序实例的数量可以是动态的,并且可以根据对应用程序170的服务的请求数量而按比例增加或减少。
客户端设备102可以包括存储指令132至136的存储器130以及用于执行存储器130中的指令的处理器140。处理器140可以表示能够执行存储在存储器130处的指令的任意数量的物理处理器。此外,处理器140(以及本文所述的任何其他处理器)可以由任意数量的处理资源(例如,(一个或多个)处理器、(一个或多个)处理器核心等)来实施。尽管处理器140被图示为是客户端设备102的本地处理器,但是处理器140可以远程执行存储器130中的指令,并且可以分布在任意数量的设备中。
客户端设备102可以包括用于请求服务的指令132。具体地,指令132可以使客户端设备102例如经由连接106向云180传输请求以用于连接到应用程序服务。在本文所述的示例中,从客户端设备到应用程序的连接可以是由应用程序实例连接器160促进的间接连接。例如,指令170可以具体地使客户端设备102连接到应用程序实例连接器160以连接到应用程序。
响应于客户端设备102连接到应用程序170的请求,应用程序实例连接器160可以选择客户端设备102所要连接到的、应用程序170的应用程序实例,例如应用程序实例172。如该示例所图示的,应用程序实例连接器160可以在远程位置并且可以通过网络进行访问。在另一示例实施方式中,实例连接器160可以是客户端组101或客户端设备102的本地实例连接器。例如,应用程序实例连接器可以是实施任意数量的负载均衡策略和/或协议的负载均衡器,用于在运行中应用程序实例之间分配客户端连接。
应用程序实例连接器160可以选择客户端设备102要连接的应用程序实例,并且可以响应于该选择向客户端设备102传输cookie(小型文本文件)150。Cookie 150可以将持有cookie 150的客户端设备引导或以其他方式映射到与cookie 150相关联的应用程序实例。在该图示的示例中,cookie 150可以将客户端设备102引导或以其他方式映射到应用程序实例172。在示例中,当客户端设备102持有cookie 150时由客户端设备102传输到应用程序的任意数据被路由到应用程序实例172。在示例实施方式中,cookie 150可以包括名称152和/或值154。Cookie名称152可以标识cookie,而值154可以是标识一组相关客户端连接的全局唯一的数字或字符串。
例如,当持有cookie 150时,客户端设备102可以向应用程序实例连接器160传输请求以连接到应用程序170。响应于该请求,应用程序实例连接器160可以扫描cookie 150的存在。例如,应用程序实例连接器160可以检查客户端会话(未示出)的HTTP报头中cookie150的存在。在另一个示例中,应用程序实例连接器160可以搜索由客户端设备102持有的并由应用程序实例连接器160提供的和/或与应用程序170相关联的cookie。例如,应用程序实例连接器160可以经由名称152从客户端设备102和应用程序实例连接器160之间的先前连接中搜索先前由应用程序实例连接器160提供的cookie。
在另一个示例中,应用程序实例连接器160可以搜索与应用程序170的实例相关联的cookie。在该示例中,与cookie 150相关联的应用程序实例可以由应用程序实例连接器160根据值154来确定。响应于确定客户端设备102持有与应用程序170相关联的cookie,应用程序实例连接器160可以将客户端设备102连接到应用程序实例172至176中的任意一个。在该图示的示例中,cookie 150可以与应用程序实例172相关联,使得应用程序实例连接器160可以响应于确定客户端设备102持有cookie 150来引导客户端设备102连接到应用程序实例172。因此,持有cookie 150的客户端设备102可以响应于指令132而映射或以其他方式路由到特定的应用程序实例,例如应用程序实例172。
客户端设备102的存储器130可以进一步包括用于将cookie 150传递给客户端设备104的指令。在示例实施方式中,响应于从应用程序实例连接器160接收到cookie 150,客户端设备102可以将cookie 150传递给客户端设备104和/或客户端组101中的与客户端设备102一起执行基于集群的操作的任何其他客户端。在示例实施方式中,客户端设备102可以经由与用于在客户端设备102和应用程序实例连接器160之间建立连接的路径不同的替代路径将cookie 150传递给客户端设备104。
例如,客户端设备102可以通过所述替代路径(例如,专用通信链路192)将cookie150传递给客户端设备104。该替代通信路径可以是独立于云180和/或以其他方式不可被云访问的通信信道。在其他示例中,cookie 150可以由客户端设备102通过客户端设备102与客户端设备104之间的安全可信的信道来传输。例如,通信链路192可以是远程复制数据链路,比如客户端设备102与客户端设备104之间的光纤信道链路或以太网链路、远程直接存储器存取(RDMA)结构、和/或用于共享cookie的任何其他客户端到客户端通信路径。
客户端设备104可以从客户端设备102接收cookie 150。因为cookie 150可以将cookie 150的持有者映射到特定的应用程序实例,所以客户端设备104在请求与应用程序170的连接时,也可以经由应用程序实例连接器160连接到应用程序实例172。这样,客户端设备102和客户端设备104可以被映射到相同的应用程序实例。在示例中,客户端设备102和客户端设备104到应用程序实例172的映射使得应用程序实例172能够维护客户端设备102和客户端设备104两者的状态信息。因此,客户端组101中的客户端设备(即,进行联合集群操作的客户端设备)可以被映射到相同的应用程序实例,以确保与这些联合集群操作相关的状态信息被同步和/或以其他方式被协调。
可以对多个客户端设备的状态信息进行同步和以其他方式进行协调的应用程序170的示例可以是提供仲裁见证(quorum witness)服务的应用程序。仲裁见证可以是这样的协议和/或配置,其用于确保与其他客户端设备一起起作用以执行联合集群操作的客户端设备的角色和/或功能被正确指派。如上所述,经由网络彼此通信的多个客户端设备可以彼此交互以执行联合集群操作。例如,这些操作可以包括数据复制。
参照图1,客户端设备102可以被指派或以其他方式被配置为担任“组长”的角色。具有该角色的客户端设备可以为组执行各种功能(在本文中可以称为“组服务”),比如管理服务,像例如表述性状态转移(REST)应用程序编程接口(API)端点、命令行接口(CLI)端点等。
在一些示例中,具有组长角色的客户端设备也可以维护组或集群的元数据的权限记录(例如,数据库中)。例如,当客户端设备包括处于复制关系的存储阵列以相互复制不同卷的内容时,具有组长角色的客户端设备可以维护组中的客户端设备(例如,存储阵列)的权限记录、关于那些客户端设备的信息(例如,因特网协议(IP)地址等)、以及关于组中的复制关系的信息(比如,由存储阵列存储的每个卷的信息和阵列的卷之间的复制关系)。例如,这个信息可以为每个卷指定哪个存储阵列拥有所述卷的上游(或源)版本、哪个存储阵列存储所述卷的下游(或终点)版本(用于接收来自上游版本的数据复制)、每个卷被指派至什么复制池等。
在这样的示例中,可能希望将组中的另一个客户端设备提升为组的“备用组长”角色,使得如果具有组长角色的当前客户端设备(在本文中可以称为“组长”)遇到可能妨碍其成功履行组长角色的(一个或多个)问题(比如,故障、与(一个或多个)其他客户端设备的通信丢失、重启、关机等),则具有备用组长角色的客户端设备(在本文中可以称为“备用组长”)可以接管组长角色。在该示例中,客户端设备104可以被指派或以其他方式被配置为担任“备用组长”的角色。
在这样的示例中,作为备用组长的客户端设备104在其检测到客户端设备102的问题(例如,客户端设备102的明显故障)时,可以承担客户端设备102的组长角色。然而,例如,如果客户端设备102实际上没有发生故障或者如果客户端设备102在临时出现的问题解决之后恢复了正常,则可能存在所谓的“脑裂”场景,在该场景中,多个客户端设备可能声称是组长。例如,当“组长”客户端设备102(其没有发生故障或者已经从先前的问题中恢复正常)声称是组长并且现有的备用组长客户端设备104(其在认为客户端设备102已经发生故障的情况下尝试承担组长角色)也声称是组长时,就可能发生这种脑裂情况。这种脑裂场景可能是不利的,因为两个不同的客户端设备可以宣称具有对关于组101的信息的权限意见(例如,关于客户端设备和复制关系等),这可能随时间推移产生分歧,并且两者都可能尝试向组101提供上述组服务。
在一些示例中,组状态信息可以存储在客户端设备组的一个客户端设备上,并由仲裁见证使用。在这样的示例中,决胜局(tiebreaker)信息可以包括关于组的信息,比如组中的哪个客户端设备将具有组长角色的标识。在这样的示例中,该决胜局信息可以用于避免脑裂情况,其中现有的组长和备用组长否则都可能尝试通过向两者表明它们当中的哪个客户端设备当前被允许作为组长来承担组长角色。
然而,在作为组成员的客户端设备上存储这种决胜局信息可能具有显著的缺点,因为存储决胜局信息的计算设备的不可用性(例如,故障)也会导致决胜局信息的不可用性。
为了避免这个缺点,组状态信息的存储以及仲裁见证可以远离客户端设备组(例如,组101)中的客户端设备,并且可以通过网络与客户端设备组101进行通信。例如,仲裁见证可以被包括在云180的应用程序170中,并且可以作为即服务(as-a-service)提供给客户端设备组101。例如,云提供商可以向执行联合集群操作的客户端设备提供仲裁见证应用程序即服务。为了支持跨多个终端用户的多个独立的客户端设备组,可以加速或以其他方式配置仲裁见证应用程序的多个实例。此外,例如可以由应用程序实例连接器160采用网络层负载均衡技术来向应用程序170的运行中实例(例如,实例172至176)分配新的客户端连接。
在执行联合集群操作的客户端设备之间直接传递cookie(例如,cookie 150)可以确保这些客户端设备连接到相同的应用程序实例(例如,应用程序实例172)。相同的应用程序实例可以从这些客户端设备中的每一个收集状态信息,以执行如上所述的仲裁见证公断。
图2是图示了客户端设备202的框图200,该客户端设备具有用于将cookie传递给客户端设备组中的另一个客户端设备的指令212至216。如上所述,客户端设备202可以是包括对服务(比如,基于云的服务)进行访问的计算机硬件或硬件和软件的组合的计算设备。客户端设备202可以是可执行联合集群操作的一组客户端设备中的一个客户端设备。客户端设备202可以进一步包括与以上在图1中描述的部件类似的部件,包括存储器130和处理器140。
客户端设备202的存储器130可以包括可由处理器140执行的指令212至216。例如,存储器130可以包括指令212,以用于向应用程序实例连接器传输请求以连接到远程计算系统上的应用程序。例如,参照图1,客户端设备202可以传输用于连接到应用程序实例连接器160的请求,以连接到云180的应用程序170。
存储器130可以进一步包括指令214,以用于从应用程序实例连接器接收与给定应用程序实例相关联的cookie。例如,客户端设备202可以从应用程序实例连接器160接收用于连接到任意运行中应用程序实例172至176的cookie。具体地,接收到的cookie可以将从客户端设备202到应用程序170的连接映射到与该cookie相关联的应用程序实例。
例如,响应于客户端设备202的连接到应用程序170的请求,应用程序实例连接器160可以确定客户端设备202是否持有与应用程序170的运行中应用程序实例相关联的cookie。肯定的确定结果可以使应用程序实例连接器160将客户端设备202连接到与客户端设备202所持有的cookie相关联的应用程序实例。相反,否定的确定结果可以使应用程序实例连接器160选择客户端设备102要连接到的、应用程序170的应用程序实例,并且可以将cookie传输给客户端设备202。
存储器136还可以包括指令216,以用于将cookie从客户端设备202传递给与客户端设备202共享联合操作(具体地,是与由应用程序170提供的服务相关联的联合操作)的另一个客户端设备。将cookie从客户端设备202传递给另一个客户端设备可以使这两个客户端设备映射到与这些客户端设备的联合操作相关联的相同应用程序实例。
例如,指令216可以使客户端设备202通过预先建立的专用通信链路将cookie传递给另一个客户端设备。专用通信链路可以是独立于公共网络或外部网络的通信信道。换句话说,cookie可以由客户端设备202通过客户端设备202与接收cookie的客户端设备之间的安全可信的信道来传输。
图3是图示了包括处理器可执行指令312至316的非暂态计算机可读介质310的框图300,这些处理器可执行指令312至316用于将cookie从第一客户端设备传递给第二客户端设备,使得两个客户端设备都被映射到相同的给定应用程序实例。非暂态计算机可读介质310可以在单个设备中实施,或是分布在多个设备上。同样地,处理器340可以表示能够执行由计算机可读介质310存储的指令的任意数量的物理处理器。
如本文所使用的,“计算机可读介质”可以是用于包含或存储如可执行指令、数据等信息的任何电子、磁性、光学或其他物理存储装置。例如,本文所述的任何计算机可读介质可以是RAM、EEPROM、易失性存储器、非易失性存储器、闪速存储器、存储驱动器(例如,HDD、SSD)、任何类型的存储盘(例如,压缩盘、DVD等)等中的任何一者或其组合。进一步地,本文所述的任何计算机可读介质可以是非暂态的。在本文所述的示例中,一个或多个计算机可读介质可以是物品(或制品)的一部分。物品或制品可以指代任何制造的单个部件或多个部件。
处理器340可以是中央处理单元(CPU)、图形处理单元(GPU)、微处理器和/或适于取得并执行存储在计算机可读介质310中的指令的其他硬件设备。处理器340可以获取、解码和执行程序指令312至316和/或其他指令。类似地,处理器340可以获取、解码和执行程序指令312至316。作为取得并执行指令的替代或补充,处理器340可以包括至少一个电子电路,该至少一个电子电路包括用于执行指令312至316和/或其他指令的功能的多个电子部件。类似地,处理器340可以包括至少一个电子电路,该至少一个电子电路包括用于执行指令312至316和/或其他指令的功能的多个电子部件。
计算机可读介质310可以包括指令312至316,这些指令可由处理器340执行。例如,计算机可读介质310可以包括指令312,以用于通过网络向应用程序实例连接器传输请求以连接到由多个应用程序实例实施的仲裁见证应用程序。
计算机可读介质310可以进一步包括指令314,以用于从应用程序实例连接器接收cookie。例如,接收到的cookie可以与仲裁见证应用程序的给定应用程序实例相关联。在一些示例实例中,接收到的cookie可以将从持有该cookie的客户端设备到仲裁见证应用程序的连接映射到与该cookie相关联的应用程序实例。
计算机可读介质310还可以包括指令316,以用于将cookie从持有接收自应用程序实例连接器的该cookie的客户端设备传递给与持有该cookie的客户端设备共享联合操作的另一个客户端设备。将cookie从持有该cookie的客户端设备传递给另一个客户端设备可以使这两个客户端设备映射到与这些客户端设备的联合操作相关联的相同应用程序实例。
在一些示例场景中,共享联合操作的客户端设备都可以从云的应用程序实例连接器接收cookie,并且可以试图将它们各自的cookie传递给另一个客户端设备。然而,因为由每个客户端设备持有的cookie可能与不同的应用程序实例相关联,所以由单个客户端设备持有给定应用程序的多个cookie可能会导致客户端设备到应用程序实例的错误映射。换句话说,在这种场景中,每个客户端设备可能不会将其各自的状态信息传输给相同的应用程序实例。
图4是图示了系统400的框图,该系统400用于在客户端设备接收到与给定应用程序的不同应用程序实例相关联的多个不同cookie的情况下,确定将在客户端设备组中的客户端设备之间共享哪个cookie。图4可以包括与图1中描述的架构类似的架构,包括具有应用程序实例连接器160的云180以及客户端设备组101。图4可以进一步包括图1的客户端设备102和104,客户端设备具有如图1中描述的存储器130、处理器140和cookie 150。具体地,并且如以上参照图1所描述的,客户端设备102可以从云180的应用程序实例连接器160接收cookie 150。
在示例实施方式中,客户端设备104可以包括与以上关于图1的客户端设备102描述的指令类似的指令,并且可以向云180的应用程序实例连接器160传输请求以连接到远程应用程序。响应于该请求,客户端设备104可以从应用程序实例连接器160接收cookie(例如,cookie 151)。
客户端设备104可以进一步包括与以上关于图1的客户端设备102描述的指令类似的指令,以用于将cookie 151传递给客户端设备102。在该图示的示例中,客户端设备102可能已经从应用程序实例连接器160接收到如以上关于图1所描述的cookie 150。客户端设备102可以根据指令412从客户端设备104接收cookie 151,并且可以根据指令414确定要持有cookie 150和cookie 151中的哪个cookie。
在示例实施方式中,客户端设备102可以通过分别比较cookies 150和151的值154和155来评估要持有哪个cookie。在示例中,客户端设备102可以确定要持有具有值154和值155中的最低规范值(canonical value)的cookie。在另一个示例中,cookie 150和151中的每一个可以与时间戳相关联,该时间戳指示cookie何时从应用程序实例连接器分别传输到客户端设备102或客户端设备104。在一些示例中,客户端设备102可以确定要持有cookie 150和cookie 151中具有最早时间戳的cookie。
响应于确定要持有cookie 150和cookie 151中的哪个cookie,客户端设备102可以包括指令416以用于指示客户端设备104丢弃不被确定为要持有的cookie,并且可以另外将cookie 150传递给客户端设备104以代替cookie 151进行持有。客户端设备102可以进一步以包括指令418,以用于丢弃不被确定为要持有的cookie。因此,尽管客户端设备102和客户端设备104各自从应用程序实例连接器160接收不同的cookie,但是这些客户端设备可以协调以持有相同的cookie。
图5是图示了用于在客户端设备之间传递cookie,使得基于该cookie而将从接收客户端设备到应用程序的连接路由到特定应用程序实例的方法的流程图500。尽管下面参照图1的系统100描述了对方法500的执行,但是这是为了说明的目的,并且可以利用用于执行方法500的其他合适的部件。方法500可以以存储在机器可读存储介质上的可执行指令的形式和/或以电子电路(例如,硬件)的形式来实施。在一些示例中,可以基本上同时或者以与图5所示的不同的顺序执行方法500的步骤。在一些示例中,方法500可以包括比图5所示的更多或更少的步骤。在一些示例中,方法500的一些步骤可以在特定时间进行和/或可以重复。
在框502处,可以通过网络向应用程序实例连接器(例如,负载均衡器)传输请求以连接到由多个实例实施的应用程序。从客户端设备到应用程序的连接可以是由应用程序实例连接器促成的间接连接。在示例实施方式中,应用程序的多个实例可以在远程计算系统上,并且任意数量的多个实例可以分布在远程设备、物理和/或虚拟位置、数据中心等上。
在框504处,负载均衡器可以接收与多个实例中的给定应用程序实例相关联的cookie。例如,cookie可以使从具有该cookie的客户端设备到应用程序的连接映射到给定应用程序实例。例如,响应于连接到应用程序的请求,负载均衡器可以确定请求者是否持有与应用程序的多个实例之一相关联的cookie。肯定的确定结果可以使应用程序实例连接器将cookie持有者连接到与该cookie相关联的应用程序实例。相反,否定的确定结果可以使应用程序实例连接器创建多个实例中的应用程序实例以及与该实例相关联的cookie。然后,应用程序实例连接器可以将创建的cookie传输给请求者。
在框516处,可以将cookie从接收设备传递给第二设备。例如,客户端设备102可以将cookie 150传递给客户端设备104。在一些示例中,cookie可以通过专用通信链路(例如,图1的通信链路192)被传递,该专用通信链路与第一客户端设备和最初从其接收cookie的应用程序实例连接器之间的通信链路分开。在示例实施方式中,响应于从应用程序实例连接器(例如,应用程序实例连接器160)接收到cookie,可以将该cookie传递给第二设备。
在前述描述中,阐述了许多细节以使得理解本文中所公开的主题。然而,可以在没有这些细节中的一些或全部细节的情况下实践实施方式。其他实施方式可以包括上文所讨论的细节的修改和变化。所附权利要求旨在覆盖这样的修改和变化。

Claims (18)

1.一种客户端设备组中的第一客户端设备,包括:
处理器;以及
存储器,所述存储器包括指令,所述指令当由所述处理器执行时使所述处理器:
向应用程序实例连接器传输请求以连接到云中的远程计算系统的仲裁见证应用程序,所述仲裁见证应用程序由所述仲裁见证应用程序在所述远程计算系统上的多个应用程序实例实施;
从所述应用程序实例连接器接收与所述多个应用程序实例中的给定应用程序实例相关联的cookie,其中,所述cookie使得从具有所述cookie的客户端设备到所述仲裁见证应用程序的连接映射到同一所述给定应用程序实例;并且
将所述cookie从所述第一客户端设备直接传递给所述客户端设备组中的第二客户端设备,使得基于所述cookie而将从所述第一客户端设备和所述第二客户端设备两者到所述仲裁见证应用程序的连接映射到同一所述给定应用程序实例,
其中,所述第一客户端设备和所述第二客户端设备都是具有所述cookie的客户端设备,所述第一客户端设备和所述第二客户端设备属于所述客户端设备组并且参与所述客户端设备组的联合集群操作,
所述给定应用程序实例维护具有所述cookie的客户端设备的状态信息,并且
所述仲裁见证应用程序的给定应用程序实例通过从所述状态信息确定所述第一客户端设备和所述第二客户端设备中的哪个将扮演维护所述客户端设备组的权限记录的组长角色来解决所述客户端设备组的脑裂场景。
2.如权利要求1所述的第一客户端设备,其中,所述第一客户端设备是存储数据的主存储阵列,而所述第二客户端设备是存储所述数据的复本的存储阵列。
3.如权利要求1所述的第一客户端设备,其中,所述cookie通过与所述第一客户端设备和所述应用程序实例连接器之间的连接不同且分开的客户端到客户端的通信链路从所述第一客户端设备被传递给所述第二客户端设备。
4.如权利要求3所述的第一客户端设备,其中,所述cookie在其上从所述第一客户端设备被传递给所述第二客户端设备的所述通信链路是远程复制数据链路。
5.如权利要求1所述的第一客户端设备,其中,响应于所述第一客户端设备从所述应用程序实例连接器接收到所述cookie,将所述cookie从所述第一客户端设备传递给所述第二客户端设备。
6.如权利要求1所述的第一客户端设备,其中,将所述客户端设备组中持有所述cookie的客户端设备映射到所述给定应用程序实例,使得由持有所述cookie的客户端设备传输到所述仲裁见证应用程序的任何数据被路由到同一所述给定应用程序实例。
7.如权利要求1所述的第一客户端设备,其中,
所述状态信息与所述联合集群操作有关。
8.一种将应用程序实例连接至客户端设备的方法,包括:
由客户端设备组中的第一客户端设备经由网络向负载均衡器传输请求以连接到仲裁见证应用程序,所述仲裁见证应用程序由所述仲裁见证应用程序在云中的至少一个远程计算系统上的多个应用程序实例实施;
由所述第一客户端设备从所述负载均衡器接收与所述多个应用程序实例中的给定应用程序实例相关联的cookie,其中,所述cookie使得从具有所述cookie的客户端设备到所述仲裁见证应用程序的连接映射到所述给定应用程序实例;
由所述第一客户端设备将所述cookie从所述第一客户端设备直接传递给所述客户端设备组中的第二客户端设备,使得基于所述cookie而将从所述第一客户端和所述第二客户端设备两者到所述仲裁见证应用程序的连接路由到同一所述给定应用程序实例,
其中,所述第一客户端设备和所述第二客户端设备都是具有所述cookie的客户端设备,所述第一客户端设备和所述第二客户端设备属于所述客户端设备组并且参与所述客户端设备组的联合集群操作,
所述给定应用程序实例维护具有所述cookie的客户端设备的状态信息,并且
所述仲裁见证应用程序的给定应用程序实例通过从所述状态信息确定所述第一客户端设备和所述第二客户端设备中的哪个将扮演维护所述客户端设备组的权限记录的组长角色来解决所述客户端设备组的脑裂场景。
9.如权利要求8所述的方法,其中,响应于接收到所述请求,所述负载均衡器创建所述给定应用程序实例和所述cookie。
10.如权利要求8所述的方法,其中,响应于所述第一客户端设备从所述负载均衡器接收到所述cookie,将所述cookie从所述第一客户端设备传递给所述第二客户端设备。
11.如权利要求8所述的方法,其中,所述cookie通过与所述第一客户端设备和所述负载均衡器之间的连接不同且分开的客户端到客户端的通信链路从所述第一客户端设备被传递给所述第二客户端设备。
12.如权利要求8所述的方法,其中,所述仲裁见证应用程序是分布式的,使得所述多个应用程序实例分布在多个物理设备上。
13.一种非暂态计算机可读介质,包括指令,所述指令当由客户端设备组中的第一客户端设备的处理器执行时使所述处理器:
通过网络向应用程序实例连接器传输请求以连接到云中的仲裁见证应用程序,其中,所述仲裁见证应用程序由所述仲裁见证应用程序的多个应用程序实例实施;
由所述第一客户端设备从所述应用程序实例连接器接收与所述多个应用程序实例中的给定应用程序实例相关联的第一cookie,其中,所述第一cookie使得从持有所述第一cookie的客户端设备到所述仲裁见证应用程序的连接映射到同一所述给定应用程序实例;并且
将所述第一cookie从所述第一客户端设备直接传递给所述客户端设备组中的第二客户端设备,使得基于所述第一cookie而将从所述第一客户端设备和所述第二客户端设备两者到所述仲裁见证应用程序的连接映射到同一所述给定应用程序实例,
其中,所述第一客户端设备和所述第二客户端设备都是持有所述第一cookie的客户端设备,所述第一客户端设备和所述第二客户端设备属于所述客户端设备组并且参与所述客户端设备组的联合集群操作,
所述给定应用程序实例维护持有所述第一cookie的客户端设备的状态信息,并且
所述仲裁见证应用程序的给定应用程序实例通过从所述状态信息确定所述第一客户端设备和所述第二客户端设备中的哪个将扮演维护所述客户端设备组的权限记录的组长角色来解决所述客户端设备组的脑裂场景。
14.如权利要求13所述的非暂态计算机可读介质,其中,持有所述第一cookie的客户端设备属于所述集群设备组并基于所述第一cookie映射到所述给定应用程序实例,使得由持有所述第一cookie的客户端设备传输到所述仲裁见证应用程序的任何数据被路由到同一所述给定应用程序实例。
15.如权利要求13所述的非暂态计算机可读介质,还包括用于以下操作的指令:
由所述第一客户端设备从所述第二客户端设备接收第二cookie,其中,所述第二cookie使得从持有所述第二cookie的客户端设备到所述仲裁见证应用程序的连接映射到所述多个应用程序实例中不同于所述给定应用程序实例的另一个应用程序实例;
响应于所述第一客户端设备在接收到所述第二cookie时已经持有所述第一cookie,确定所述第一客户端设备和所述第二客户端设备要持有所述第一cookie和所述第二cookie中的哪一个;并且
由所述第一客户端设备丢弃所述第一cookie和所述第二cookie中的不是要持有的cookie的无论哪个。
16.如权利要求15所述的非暂态计算机可读介质,其中,所述要持有的cookie被确定为所述第一cookie和所述第二cookie中的具有最低规范值的无论哪个。
17.如权利要求15所述的非暂态计算机可读介质,进一步包括用于以下操作的指令:响应于确定所述第一cookie是要持有的cookie,指示所述第二客户端设备丢弃所述第二cookie。
18.如权利要求13所述的非暂态计算机可读介质,其中,响应于所述第一客户端设备接收到所述第一cookie,将所述第一cookie传递给所述第二客户端设备。
CN202110117397.2A 2020-01-31 2021-01-28 应用程序实例与客户端设备的连接 Active CN113204437B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/778,054 US11153391B2 (en) 2020-01-31 2020-01-31 Connecting application instances to client devices
US16/778,054 2020-01-31

Publications (2)

Publication Number Publication Date
CN113204437A CN113204437A (zh) 2021-08-03
CN113204437B true CN113204437B (zh) 2022-10-14

Family

ID=76853557

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110117397.2A Active CN113204437B (zh) 2020-01-31 2021-01-28 应用程序实例与客户端设备的连接

Country Status (3)

Country Link
US (2) US11153391B2 (zh)
CN (1) CN113204437B (zh)
DE (1) DE102021101346B4 (zh)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101685391A (zh) * 2002-01-04 2010-03-31 微软公司 管理计算系统中协处理器的计算资源的方法和系统

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020143953A1 (en) * 2001-04-03 2002-10-03 International Business Machines Corporation Automatic affinity within networks performing workload balancing
US20060155857A1 (en) * 2005-01-06 2006-07-13 Oracle International Corporation Deterministic session state management within a global cache array
US8521860B2 (en) * 2011-03-29 2013-08-27 Microsoft Corporation Providing a witness service
US10430217B2 (en) 2013-09-16 2019-10-01 Vmware, Inc. High availability using dynamic quorum-based arbitration
US9866640B2 (en) * 2013-09-20 2018-01-09 Oracle International Corporation Cookie based session management
US10425492B2 (en) * 2015-07-07 2019-09-24 Bitly, Inc. Systems and methods for web to mobile app correlation
US10051046B1 (en) * 2017-11-08 2018-08-14 Engine Media, Llc Individualized connectivity based request handling
US10715564B2 (en) * 2018-01-29 2020-07-14 Oracle International Corporation Dynamic client registration for an identity cloud service
CN108984320A (zh) * 2018-06-27 2018-12-11 郑州云海信息技术有限公司 一种消息队列集群防脑裂方法及装置
US11159625B1 (en) * 2020-09-04 2021-10-26 Salesforce.Com, Inc. Efficiently distributing connections to service instances that stream multi-tenant data

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101685391A (zh) * 2002-01-04 2010-03-31 微软公司 管理计算系统中协处理器的计算资源的方法和系统

Also Published As

Publication number Publication date
DE102021101346A1 (de) 2021-08-05
US11824947B2 (en) 2023-11-21
CN113204437A (zh) 2021-08-03
US20220030072A1 (en) 2022-01-27
DE102021101346B4 (de) 2023-01-12
US20210243261A1 (en) 2021-08-05
US11153391B2 (en) 2021-10-19

Similar Documents

Publication Publication Date Title
US9971823B2 (en) Dynamic replica failure detection and healing
US8930316B2 (en) System and method for providing partition persistent state consistency in a distributed data grid
US9817703B1 (en) Distributed lock management using conditional updates to a distributed key value data store
US8914502B2 (en) System and method for dynamic discovery of origin servers in a traffic director environment
US10025673B1 (en) Restoring partitioned database tables from backup
US9633051B1 (en) Backup of partitioned database tables
US11943291B2 (en) Hosted file sync with stateless sync nodes
US20200142788A1 (en) Fault tolerant distributed system to monitor, recover and scale load balancers
CN109547512B (zh) 一种基于NoSQL的分布式Session管理的方法及装置
US9367261B2 (en) Computer system, data management method and data management program
CN104011701A (zh) 内容传送网络
US7844710B2 (en) Proxy caching for directory services
US10826812B2 (en) Multiple quorum witness
US10708379B1 (en) Dynamic proxy for databases
US20190325155A1 (en) Decentralized data protection system for multi-cloud computing environment
US10545667B1 (en) Dynamic data partitioning for stateless request routing
CN109451069B (zh) 基于分布式存储的网络数据文件库存储及查询方法
GB2500348B (en) Validation of access to a shared data record subject to read and write access by multiple requesters
CN113204437B (zh) 应用程序实例与客户端设备的连接
US11256440B2 (en) Method and distributed storage system for aggregating statistics
US10481963B1 (en) Load-balancing for achieving transaction fault tolerance
US11514079B1 (en) Peer-based access to distributed database
US9841929B1 (en) Distributed system software infrastructure
US11157454B2 (en) Event-based synchronization in a file sharing environment
EP3961419A1 (en) Computer-implemented method for storing a dataset and computer network

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant