WO2017070368A1 - Système et procédé de fourniture de notifications mssq dans un environnement de traitement transactionnel - Google Patents

Système et procédé de fourniture de notifications mssq dans un environnement de traitement transactionnel Download PDF

Info

Publication number
WO2017070368A1
WO2017070368A1 PCT/US2016/057947 US2016057947W WO2017070368A1 WO 2017070368 A1 WO2017070368 A1 WO 2017070368A1 US 2016057947 W US2016057947 W US 2016057947W WO 2017070368 A1 WO2017070368 A1 WO 2017070368A1
Authority
WO
WIPO (PCT)
Prior art keywords
server
queue
unanimous
service
request queue
Prior art date
Application number
PCT/US2016/057947
Other languages
English (en)
Inventor
Todd Little
Qingsheng Zhang
Jim Yongshun JIN
Original Assignee
Oracle International Corporation
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
Priority claimed from PCT/CN2015/092573 external-priority patent/WO2017066966A1/fr
Application filed by Oracle International Corporation filed Critical Oracle International Corporation
Priority to JP2017555334A priority Critical patent/JP6883521B2/ja
Priority to CN201680025005.7A priority patent/CN107533488B/zh
Priority to EP16858231.0A priority patent/EP3365782B1/fr
Publication of WO2017070368A1 publication Critical patent/WO2017070368A1/fr

Links

Classifications

    • 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/546Message passing systems or structures, e.g. queues
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/54Indexing scheme relating to G06F9/54
    • G06F2209/548Queue

Definitions

  • Embodiments of the invention are generally related to application servers, and are particularly related to a system and method for providing multiple servers, single queue (MSSQ) notifications in a transactional processing environment.
  • MSSQ single queue
  • a request queue can be shared by multiple servers for load balancing.
  • MSSQ single queue
  • each server typically needs to support the exact same set of services. Otherwise, if a server supports a particular service that one or more other servers do not support, one of the servers not supporting the particular service may dequeue a request message for the particular service from the request queue. As such, it would be very challenging to make requests or send notifications, to specific servers in a transactional processing environment with an MSSQ configuration.
  • a main request queue in the transactional processing environment can be shared by a plurality of servers, and can advertise one or more unanimous services supported by each server.
  • a secondary request queue can be provided for each server, and can advertise one or more non-unanimous services not supported by at least one server.
  • Each server can include a main thread, a secondary thread, and an internal memory queue.
  • a request message for a unanimous service can be placed on the main request queue, and be dequeued by the main thread of any server in the MSSQ set.
  • a request message for a non-unanimous service can be placed on the secondary request queue of a server supporting the non-unanimous service, and can be dequeued by the secondary thread of the server.
  • the dequeued request message can be stored in the server's internal memory queue to be retrieved for processing by the main thread of the server.
  • an application programming interface [0007] In accordance with an embodiment, an application programming interface
  • API can be provided to advertise the one or more non-unanimous services.
  • One or more server parameters in a domain configuration file can be used to enable the features described above.
  • Figure 1 illustrates a system for making requests to specific servers in a transactional processing environment with an MSSQ configuration, in accordance with an embodiment.
  • Figure 2 further illustrates a system for making requests to specific servers in a transactional processing environment with an MSSQ configuration, in accordance with an embodiment.
  • Figure 3 illustrates relationships between a queue table entry and each of a singleton service, a unanimous service on a server in an MSSQ set, and a server in the MSSQ set, in accordance with an embodiment.
  • Figure 4 illustrates a method for making requests to specific servers in a transactional processing environment with an MSSQ configuration, in accordance with an embodiment.
  • requests messages are placed on a main request queue, and can be dequeued by each server in an MSSQ set.
  • Such a configuration can improve system performance by load- balancing client requests among multiple servers.
  • the MSSQ configuration requires that each server in the MSSQ set to support and advertise identical services, which makes it difficult to make requests to a specific server.
  • This drawback of the MSSQ configuration can have a plurality of performance hindering impacts. For example, because the transactional processing environment cannot confirm if a request message has been dequeued by a specific server, the transactional processing environment would not be able to support XA-affinity for performance enhancement.
  • a main request queue in the transactional processing environment can be shared by a plurality of servers, and can advertise one or more unanimous services supported by each server.
  • a secondary request queue can be provided for each server, and can advertise one or more non-unanimous services not supported by at least one server.
  • Each server can include a main thread, a secondary thread, and an internal memory queue.
  • the non- unanimous service when a non-unanimous service is supported by a single server instance either in a MSSQ set or in a domain, the non- unanimous service can be considered a singleton service.
  • a request message for a unanimous service can be placed on the main request queue, and be dequeued by the main thread of any server in the MSSQ set.
  • a request message for a non-unanimous service can be placed on the secondary request queue of a server supporting the non-unanimous service, and can be dequeued by the secondary thread of the server.
  • the dequeued request message can be stored in the server's internal memory queue to be retrieved for processing by the main thread of the server.
  • an application programming interface can be provided to advertise the one or more non-unanimous services.
  • the API can additionally be used to advertise non-unanimous services or singleton services on a secondary request queue of a server, for example, a Tuxedo server.
  • a client application would be able to make a service request to a specific server through a non- unanimous service, even if the specific server is in an MSSQ set.
  • the above-described feature can be enabled through a server parameter in a server configuration file.
  • an application server can create a secondary request queue, and a secondary thread to receive messages from the secondary request queue.
  • the messages received from the secondary request queue can be stored into a memory queue, to be exchanged with the main thread of the server.
  • XA affinity can be supported in the transactional processing environment, as a service request can be sent to a specific server instance in an MSSQ set, as well as to all servers in the MSSQ set.
  • Figure 1 illustrates a system for making requests to specific servers in a transactional processing environment with an MSSQ configuration, in accordance with an embodiment.
  • a transactional processing environment 100 for example a Tuxedo domain, can include a main request queue 102 shared by a plurality of servers (for example, server A 105, server B 107, and server N 109).
  • servers for example, server A 105, server B 107, and server N 109.
  • each server can include a main thread (for example, main thread A 1 11 , main thread B 113, or main thread N 115), a secondary thread (for example, secondary thread A 117, secondary thread B 1 19, or secondary thread N 121), and an internal memory queue (for example, internal memory buffer A 123, internal memory buffer B 125, or internal memory buffer N 127).
  • Each server can additionally be associated with a secondary request queue (for example, secondary request queue A 131 , secondary request queue B 133, or secondary request queue N 135).
  • each of the main request queue and the secondary request queues can be an inter-process communication (IPC) queue, wherein the main thread of each server can listen on the main request queue for messages, and the secondary thread of each server can listen on the secondary request queue associated with that server.
  • IPC inter-process communication
  • each server can support one or more unanimous services, and one or more non-unanimous services.
  • a unanimous service is a service that is supported by each of the plurality of servers that share the main request queue; and a non-unanimous service is a service that is not supported by at least one server that shares the main request queue, or a singleton service.
  • service A and B are unanimous services that are supported by each server, as shown by services A 155 and B 157 on server A, services A 161 and B 163 om server B, and services A 167 and B 168 on server N.
  • Services D and E are non-unanimous services, each of which is not supported by at least one server.
  • service D is supported only by servers A and B, as shown by service D 159 and service D 165; and service E 169 is supported only by server N.
  • each server can advertise the unanimous service on the main request queue using an API, and advertise the non-unanimous service on the secondary request queue associated with that server.
  • a request message directed to a unanimous service can be placed on the main request queue, and can be dequeued by the main thread of any server that shares the main request queue.
  • all the main threads in the servers that are part of an MSSQ set are operating to dequeue request messages from the main request queue simultaneously if they are idle.
  • a request message is placed in the main request queue
  • all of the servers waiting on that main request queue are woken up and try to retrieve the request message. However, only one of them can succeed, and the rest can go back to a waiting state.
  • a request message directed to a unanimous service can be dequeued by the main thread of any server if that server is idle.
  • a request message directed to a non-unanimous service if placed on the main request, may be dequeued by the main thread of a server that does not support that non-unanimous service.
  • the secondary thread in the server can dequeue the request message, and store the dequeued message in the server's internal memory queue or an internal memory buffer, so that the main thread, before making itself available to dequeue messages from the main request queue, can check the secondary request queue for any available message for processing.
  • Figure 2 illustrates a system for making requests to specific servers in a transactional processing environment with an MSSQ configuration, in accordance with an embodiment.
  • one of the plurality of servers in the MSSQ set can advertise 256 a plurality of unanimous services (for example, services A and B) on the main request queue; and can advertise 258 one or more non-unanimous services (for example, service D) on the secondary request queue.
  • a plurality of unanimous services for example, services A and B
  • non-unanimous services for example, service D
  • a client 201 can place 204 a request message for a unanimous service on the main request queue. If the main thread of server A is idle, the main thread can operate to dequeue the request message from the main request queue for dispatching.
  • server A is a single threaded server from the perspective of the client
  • the main thread after retrieving the request message from the main request queue, can call a service routine associated with the unanimous service.
  • server A is a multi-threaded server
  • the main thread can hand the request message to a dispatch thread which calls the service routine associated with the unanimous service.
  • the client can place 203 a request message on the secondary request queue of the specific server.
  • the secondary thread of server A can dequeue the request message and store the dequeued request message in the internal memory queue of the specific server.
  • the internal memory can be used to move messages from the secondary request queue to the main thread of the specific server for dispatching.
  • the main thread can either directly calls a service routine associated with the non- unanimous service, or hand the request message to a dispatch thread which calls the service routine associated with the non-unanimous service.
  • the main thread can check the internal memory queue for any available messages for processing, before making itself available to dequeue messages from the main request queue.
  • each MSSQ server instance can be associated with a secondary request queue, in addition to being associated with a single main request queue.
  • a user can enable this feature through a server parameter in a server configuration section in a UBBCONFIG file.
  • An example UBBCONFIG file can be a configuration file that defines installation-dependent parameters for an application.
  • the following steps can be performed to receive notifications from a secondary request queue.
  • an advertising application programming interface can be provided to advertise non-unanimous or singleton services on secondary request queues.
  • the advertising API can be illustrated as below: tpadvertisex(char *svcname, void (*func)(TPSVCINFO *), long flags) [00040]
  • a valid flag can be one of the following: 1). TPSINGLETON, which indicates that the specified service can only be advertised by one server at a time in the current domain or in an MSSQ set; 2). TPSECONDARYRQ, which indicates that the specified service can be advertised on a secondary request queue. If this flag is not set and the secondary request queue is set in the UBBCONFIG configuration file, the service can be advertised on both the main request queue and the secondary request queue.
  • tperrno indicators error indicators
  • TPENOSINGLETON which indicates that the svcname is already advertised on another server instance in the current domain
  • TPENOSECONDARYRQ which indicates that the svcname is advertised on the secondary request queue of the associated server, but SECONDARYRQ was not set, and the secondary request queue does not exist.
  • Figure 4 illustrates a method for making requests to specific servers in a transactional processing environment with an MSSQ configuration, in accordance with an embodiment.
  • a transactional processing environment can be provided to execute on a computer including one or more microprocessors, wherein the transactional processing environment can include a domain with a plurality of servers, wherein the plurality of servers share a main request queue, wherein each server is additionally associated with a secondary request queue, and includes a main thread, a secondary thread, and an internal memory queue.
  • an application programming interface can be provided, for use by each server to advertise one or more unanimous services on the main request queue, wherein each unanimous service is supported by each of the plurality of servers.
  • the API can additionally be used by each server to advertise one or more non-unanimous services on the secondary request queue associated with a particular server, wherein each non- unanimous service is supported by the particular server, but not supported by at least one other server in the MSSQ set.
  • the secondary thread in a particular server dequeues a request message for a non-unanimous service from the secondary request queue associated with the particular server, and stores the dequeued request message in the particular server's memory queue.
  • the main thread of the particular server can check the internal memory queue before making itself available for dequeueing messages from the main request queue for messages to process.
  • the main thread can either directly calls a service routine associated with the non-unanimous service, or hand the request message to a dispatch thread which calls the service routine associated with the non-unanimous service, depending whether the particular server is single-threaded or multi-threaded.
  • the present invention may be conveniently implemented using one or more conventional general purpose or specialized digital computer, computing device, machine, or microprocessor, including one or more processors, memory and/or computer readable storage media programmed according to the teachings of the present disclosure.
  • Appropriate software coding can readily be prepared by skilled programmers based on the teachings of the present disclosure, as will be apparent to those skilled in the software art.
  • the present invention includes a computer program product which is a non-transitory storage medium or computer readable medium (media) having instructions stored thereon/in which can be used to program a computer to perform any of the processes of the present invention.
  • the storage medium can include, but is not limited to, any type of disk including floppy disks, optical discs, DVD, CD-ROMs, microdrive, and magneto-optical disks, ROMs, RAMs, EPROMs, EEPROMs, DRAMs, VRAMs, flash memory devices, magnetic or optical cards, nanosystems (including molecular memory ICs), or any type of media or device suitable for storing instructions and/or data.

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Hardware Redundancy (AREA)

Abstract

Un mode de réalisation de la présente invention a trait à un système et à un procédé pour faire des requêtes à un serveur spécifique dans un environnement de traitement transactionnel ayant une configuration MSSQ (multiples serveurs, une seule file d'attente). Chaque serveur dans un ensemble MSSQ peut être associé à une file d'attente secondaire de requêtes et peut comprendre un fil principal, un fil secondaire et une file d'attente de mémoire interne. Chaque serveur peut utiliser une interface de programmation d'application (API) pour annoncer un ou plusieurs services non unanimes sur une file d'attente secondaire de requêtes associée à ce serveur. Le fil secondaire d'un serveur particulier est configuré sortir de la file d'attente secondaire de requêtes associée au serveur particulier, un message de requête pour un service non unanime, et stocke le message sorti de la file d'attente dans la file d'attente de mémoire interne. Le fil principal du serveur particulier vérifie la file d'attente de mémoire interne avant de vérifier si la file d'attente principale de requêtes pour des messages à traiter.
PCT/US2016/057947 2015-10-22 2016-10-20 Système et procédé de fourniture de notifications mssq dans un environnement de traitement transactionnel WO2017070368A1 (fr)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2017555334A JP6883521B2 (ja) 2015-10-22 2016-10-20 トランザクション処理環境においてmssq通知を提供するためのシステムおよび方法
CN201680025005.7A CN107533488B (zh) 2015-10-22 2016-10-20 用于在交易处理环境中提供mssq通知的系统和方法
EP16858231.0A EP3365782B1 (fr) 2015-10-22 2016-10-20 Système et procédé de fourniture de notifications mssq dans un environnement de traitement transactionnel

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
CNPCT/CN2015/092573 2015-10-22
PCT/CN2015/092573 WO2017066966A1 (fr) 2015-10-22 2015-10-22 Système et procédé permettant de fournir des notifications mssq dans un environnement de traitement transactionnel
US14/997,358 US10394598B2 (en) 2015-10-22 2016-01-15 System and method for providing MSSQ notifications in a transactional processing environment
US14/997,358 2016-01-15

Publications (1)

Publication Number Publication Date
WO2017070368A1 true WO2017070368A1 (fr) 2017-04-27

Family

ID=58557759

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/US2016/057947 WO2017070368A1 (fr) 2015-10-22 2016-10-20 Système et procédé de fourniture de notifications mssq dans un environnement de traitement transactionnel

Country Status (1)

Country Link
WO (1) WO2017070368A1 (fr)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20030185227A1 (en) * 2002-03-29 2003-10-02 International Business Machines Corporation Secondary queue for sequential processing of related queue elements
US20040039777A1 (en) * 2002-08-26 2004-02-26 International Business Machines Corporation System and method for processing transactions in a multisystem database environment
US20070237082A1 (en) * 2006-03-31 2007-10-11 Woojong Han Techniques for sharing connection queues and performing congestion management
US20080109452A1 (en) * 2002-02-15 2008-05-08 Cognos Incorporated Queuing model for a plurality of servers
WO2009014868A2 (fr) 2007-07-24 2009-01-29 Microsoft Corporation Programmation de fils dans des systèmes multicœurs
US20100229025A1 (en) * 2005-06-02 2010-09-09 Avaya Inc. Fault Recovery in Concurrent Queue Management Systems

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080109452A1 (en) * 2002-02-15 2008-05-08 Cognos Incorporated Queuing model for a plurality of servers
US20030185227A1 (en) * 2002-03-29 2003-10-02 International Business Machines Corporation Secondary queue for sequential processing of related queue elements
US20040039777A1 (en) * 2002-08-26 2004-02-26 International Business Machines Corporation System and method for processing transactions in a multisystem database environment
US20100229025A1 (en) * 2005-06-02 2010-09-09 Avaya Inc. Fault Recovery in Concurrent Queue Management Systems
US20070237082A1 (en) * 2006-03-31 2007-10-11 Woojong Han Techniques for sharing connection queues and performing congestion management
WO2009014868A2 (fr) 2007-07-24 2009-01-29 Microsoft Corporation Programmation de fils dans des systèmes multicœurs

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
See also references of EP3365782A4 *

Similar Documents

Publication Publication Date Title
US9588733B2 (en) System and method for supporting a lazy sorting priority queue in a computing environment
US8707323B2 (en) Load balancing algorithm for servicing client requests
US7945677B2 (en) Connection manager capable of supporting both distributed computing sessions and non distributed computing sessions
US8930584B2 (en) System and method for providing a linearizable request manager
US9231995B2 (en) System and method for providing asynchrony in web services
US20060248283A1 (en) System and method for monitoring threads in a clustered server architecture
US20070150586A1 (en) Withdrawing requests in a shared memory system
CN101547212B (zh) 一种分布式对象的调度方法和系统
US20150309834A1 (en) System and method for supporting common transaction identifier (xid) optimization based on resource manager (rm) instance awareness in a transactional environment
US20060143328A1 (en) Failover protection from a failed worker node in a shared memory system
US10095562B2 (en) System and method for transforming a queue from non-blocking to blocking
EP2962200B1 (fr) Système et procédé d'utilisation d'un séquenceur dans une file d'attente à priorités concurrentes
JP2013054451A (ja) 情報処理装置、情報処理方法及び情報処理プログラム
US10127122B2 (en) System and method for supporting transaction affinity based request handling in a middleware environment
EP3365782B1 (fr) Système et procédé de fourniture de notifications mssq dans un environnement de traitement transactionnel
WO2014120304A1 (fr) Système et procédé pour prendre en charge un multiplexage de partage de travail dans une grappe
US10671430B2 (en) Execution priority management for inter-process communication
WO2017070368A1 (fr) Système et procédé de fourniture de notifications mssq dans un environnement de traitement transactionnel
CN111290842A (zh) 一种任务执行方法和装置
JP2018531438A6 (ja) トランザクション処理環境においてmssq通知を提供するためのシステムおよび方法
EP2962199B1 (fr) Système et procédé de prise en charge de simultanéité coopérative dans un environnement de machines avec logiciel médiateur
JP2018531438A5 (fr)

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 16858231

Country of ref document: EP

Kind code of ref document: A1

WWE Wipo information: entry into national phase

Ref document number: 2017555334

Country of ref document: JP

NENP Non-entry into the national phase

Ref country code: DE

WWE Wipo information: entry into national phase

Ref document number: 2016858231

Country of ref document: EP