Low communication distributed system
By using stateless idempotent injective functions in a distributed system to determine the status of other nodes on a node, communication between nodes is reduced, communication overhead and coordination efficiency issues are solved, and a more efficient distributed system design is achieved.
Patent Information
- Application Number
- CN202380091732.3
- Authority / Receiving Office
- CN · China
- Patent Type
- Applications(China)
- Current Assignee / Owner
- Filing Date
- 2023-02-20
- Publication Date
- 2025-09-12
AI Technical Summary
In distributed systems, the communication requirements between nodes lead to high computing costs and network delays, which limits the scalability and geographical distribution of the system. Existing technologies find it difficult to effectively reduce communication overhead and coordination efficiency.
A stateless idempotent single-shot function is used on each node to determine the state of other nodes. The direct communication between nodes is reduced through the correlation function. The correlation function is used to generate mutually exclusive outputs to identify service nodes, avoiding state sharing and message transmission.
It reduces the communication overhead of distributed systems, improves communication and coordination efficiency, allows nodes to be distributed geographically independently, and reduces computing and network costs.
Smart Images

Figure CN120642313A_ABST
Abstract
Description
Technical Field
[0001] The present disclosure relates to minimizing communication between and within nodes and clusters in a distributed cluster system that can be used in various networks, including payment processing networks and enterprise networks. Specifically, the present disclosure provides techniques related to efficient communication via architectures, systems, and methods for low-communication distributed systems. Summary of the Invention
[0002] In many aspects, a method for reducing communication between nodes in a distributed system comprises: receiving, by each node in the distributed system, a correlation function having multiple inputs, the multiple inputs including at least an identifier; receiving, at a node in the distributed system, a request including the identifier; identifying, by the node, a service node for servicing the request based on the correlation function, the identification comprising determining, by the node, the states of other nodes in the distributed system based on the state of the node; determining a local state based on at least one of the state of the node, the states of the other nodes, or the number of nodes in the distributed system; and calculating a target response identifying the service node based on the local state and the multiple inputs; and processing the request by the service node.
[0003] In various aspects, the method further includes transmitting, by the node, the request to the serving node.
[0004] In various aspects, the method further includes receiving, by the serving node, the request transmitted from the node.
[0005] In various aspects, the method further includes receiving, by the node, the transmitted request from another node in the distributed system for processing, wherein the other node identifies the node as the serving node; and processing, by the node, the transmitted request.
[0006] In various aspects of the method, the node is the serving node.
[0007] In various aspects of the method, the correlation function is configured to generate mutually exclusive outputs based on the plurality of inputs.
[0008] In various aspects of the method, the correlation function produces mutually exclusive outputs to allow each node in the distributed system of nodes to determine a serving node for the request.
[0009] In various aspects of the method, the determination of a local state is based on the state of the node, the states of the other nodes, and a number of nodes in the distributed system.
[0010] In many aspects, a real-time financial transaction interface and processing system is disclosed; wherein the system includes a distributed cluster connected to multiple payment interfaces, the distributed cluster including multiple node groups for processing transaction requests, each of the multiple node groups including at least one node; a transaction gateway, the transaction gateway is capable of interfacing with multiple client devices, the transaction gateway is configured to receive transaction requests from the client devices; and direct the transaction requests to a payment interface among the multiple payment interfaces; the multiple payment interfaces are connected to the transaction gateway, wherein the payment interface among the multiple payment interfaces is configured to receive the transaction requests from the transaction gateway; based on a related function, a node group among the multiple node groups is identified for servicing the transaction request; and the transaction request is transmitted to a group-designated node of the node group; the group-designated node is configured to identify at least one service node among the node group for servicing the transaction request based on a related function; and the transaction request is transmitted to the at least one service node to process the transaction request.
[0011] In various aspects, the at least one service node stores a result of processing the transaction request in a local storage device.
[0012] In various aspects, the stored results are transferred to a data storage repository.
[0013] In various aspects, the at least one service node is configured to: receive a replacement transaction request for a processed transaction stored in its local storage; and process the replacement transaction request to modify the processed transaction.
[0014] In various aspects, the transaction gateway is further configured to select the payment interface based on at least one of latency, network traffic status, or geographic proximity of the payment interface.
[0015] In various aspects, the identifying of the node group by the payment interface includes: determining, by the payment interface, the status of the multiple node groups in the distributed cluster based on the status of the payment interface; determining a local status based on at least one of the status of the payment interface, the status of the multiple node groups, the number of nodes in the distributed cluster, or the total number of nodes in the real-time financial transaction interface and processing system; and calculating a target response to identify at least one of the multiple node groups based on the local status and multiple inputs.
[0016] In various aspects, each node group in the plurality of node groups includes an exposed endpoint configured to receive the transaction request to be processed by the at least one node in the node group; and to perform the identification of the at least one service node of the node group.
[0017] In various aspects, the identifying of the at least one service node by the group-designated node includes: determining the status of other nodes in the node group based on the status of the group-designated node; determining a local status based on at least one of the status of the group-designated node, the status of the other nodes, the number of nodes in the node group, the total number of nodes in the distributed cluster, or the total number of nodes in the real-time financial transaction interface and processing system; and calculating a target response for identifying the at least one service node based on the local status and multiple inputs.
[0018] In various aspects, the transaction request is at least one of a payment request or a payment reversal request.
[0019] In many aspects, a non-transitory machine-readable medium storing code, the code when executed by a processor is configured to: receive a correlation function having multiple inputs, the multiple inputs including at least an identifier; receive a request including the identifier; identify a service node for servicing the request based on the correlation function, the identification including determining the state of other nodes in a distributed system based on the state of one node; determine a local state based on at least one of the state of the node, the state of the other nodes, or the number of nodes in the distributed system; and calculate a target response identifying the service node based on the local state and the multiple inputs.
[0020] In various aspects, a non-transitory machine-readable medium stores code that, when executed by a processor, is further configured to transmit the request to the service node.
[0021] In various aspects of the non-transitory machine-readable medium, the determination of the local state is based on at least one of the state of the node, the states of the other nodes, or a number of nodes in a distributed system. BRIEF DESCRIPTION OF THE DRAWINGS
[0022] In the description, for purposes of explanation rather than limitation, specific details are set forth, such as particular aspects, procedures, techniques, etc., to provide a thorough understanding of the technology of the present invention. However, it will be apparent to one skilled in the art that the technology of the present invention can be practiced in other aspects that differ from these specific details.
[0023] The accompanying drawings, together with the detailed description below, are incorporated into and form a part of the specification and serve to further illustrate aspects of the concepts comprising the claimed disclosure and to explain various principles and advantages of those aspects. In the accompanying drawings, like reference numerals refer to the same or functionally similar elements throughout the different views.
[0024] The systems and methods disclosed herein have been represented by conventional symbols in the drawings, where appropriate, showing only those specific details relevant to understanding the various aspects of the disclosure so as not to obscure the disclosure with details that would be apparent to one of ordinary skill in the art having the benefit of the description herein.
[0025] Figure 1 A traditional distributed setup in a cluster is shown, where nodes communicating with each other generate a large number of messages sent and received.
[0026] Figure 2 An alternative traditional cluster configuration is shown that aims to reduce communication between nodes by utilizing a broadcast controller node.
[0027] Figure 3 Simplified aspects of a node programmed to generate mutually exclusive idempotent outputs to queries based on a correlation function are shown in accordance with at least one aspect of the present disclosure.
[0028] Figure 4 A low-communication node cluster architecture according to at least one aspect of the present disclosure is shown.
[0029] Figures 5A to 5B illustrating subsequent requests processed by a low-communication node cluster at different time periods in accordance with at least one aspect of the present disclosure.
[0030] Figure 6 A flow chart illustrating a method for processing requests by a low-communication node cluster in accordance with at least one aspect of the present disclosure.
[0031] Figure 7 A flow chart illustrating one aspect of a method for identifying a serving node for a service request via a correlation function in accordance with at least one aspect of the present disclosure.
[0032] Figures 8A to 8B Subsequent transaction requests processed by a transaction processing and interfacing system running a low-communication node cluster according to at least one aspect of the present disclosure are illustrated.
[0033] Figure 9 Nodes that may be used in a low-communication node cluster in a distributed system in accordance with at least one aspect of the present disclosure are shown.
[0034] Figure 10 A block diagram illustrating a computer device in accordance with at least aspects of the present disclosure is shown.
[0035] Figure 11 A diagrammatic representation of an example system including a host machine within which a set of instructions for performing any one or more of the methodologies discussed herein may be executed is shown. DETAILED DESCRIPTION
[0036] The following disclosure provides exemplary systems, devices, and methods for conducting financial transactions and related activities. While reference may be made to such financial transactions in the examples provided below, the aspects are not limited thereto. That is, the systems, methods, and devices may be used for any suitable purpose.
[0037] Before discussing specific embodiments, aspects, or examples, some description of the terms used herein is provided below.
[0038] An "application" may include any software module that is configured to perform one or more specific functions when executed by a processor of a computer. For example, a "mobile application" may include a software module that is configured to be operated by a mobile device. An application may be configured to perform many different functions. For example, a "payment application" may include a software module that is configured to store and provide account credentials for transactions. A "wallet application" may include a software module with similar functionality to a payment application that has multiple accounts that are pre-configured or registered so that they can be used through the wallet application. In addition, an "application" or "application program interface" (API) refers to computer code or other data classified on a computer-readable medium that can be executed by a processor to facilitate interaction between software components, such as interaction between a client-side front end and / or a server-side back end for receiving data from a client. An "interface" refers to a generated display, such as one or more graphical user interfaces (GUIs) with which a user can interact directly or indirectly (e.g., via a keyboard, mouse, touch screen, etc.).
[0039] The terms "client," "client device," and "user device" refer to any electronic device configured to communicate with one or more servers or remote devices and / or systems. Client devices or user devices may include mobile devices, network-enabled appliances (e.g., network-enabled televisions, refrigerators, thermostats, etc.), computers, POS systems, and / or any other device or system capable of communicating with a network. Client devices may further include desktop computers, laptop computers, mobile computers (e.g., smartphones), wearable computers (e.g., watches, glasses, lenses, clothing, etc.), cellular phones, network-enabled appliances (e.g., network-enabled televisions, refrigerators, thermostats, etc.), point-of-sale (POS) systems, and / or any other device, system, and / or software application configured to communicate with a remote device or system. In addition, the terms "client" and "client device" may refer to one or more client devices or systems (e.g., remote from a transaction service provider) used to initiate or facilitate a transaction (e.g., a payment transaction). In addition, "client" may also refer to an entity (e.g., a merchant, an acquirer, etc.) that owns, utilizes, and / or operates a client device for initiating a transaction (e.g., for initiating a transaction with a transaction service provider).
[0040] As used herein, the terms "communication" and "transmission" may refer to the acceptance, reception, transmission, transfer, provisioning, etc. of information (e.g., data, signals, messages, instructions, calls, commands, etc.). Communication may use direct or indirect connections and may be wired and / or wireless in nature. As an example, a unit (e.g., a device, a system, a component of a device or system, a combination thereof, etc.) communicating with another unit means that the unit is able to directly or indirectly receive information from the other unit and / or transmit information to the other unit. Even if the information may be modified, processed, forwarded and / or routed between one unit and another unit, the unit may communicate with the other unit. In one example, even if the first unit receives information and does not convey the information to the second unit, the first unit may communicate with the second unit. For example, although the first unit passively receives data and does not actively transmit data to the second unit, the first unit may also communicate with the second unit. As another example, a first unit may communicate with a second unit if an intermediate unit (e.g., a third unit located between the first unit and the second unit) receives information from the first unit, processes the information received from the first unit to generate processed information, and transmits the processed information to the second unit. In some non-limiting embodiments or aspects, a message may refer to a packet containing data (e.g., a data packet, a network packet, etc.). It should be understood that many other arrangements are possible.
[0041] A "communication channel" may refer to any suitable path for communication between two or more entities. A suitable communication channel may exist directly between two entities (such as a payment processing network and a merchant or issuer computer), or may involve multiple different entities. Any suitable communication protocol may be used to generate a communication channel. In some cases, the communication channel may include a "secure communication channel" or "tunnel" that can be established in any known manner, including the use of mutual authentication and session keys and the establishment of a secure communication session. However, any method of creating a secure communication channel may be used, and the communication channel may be wired or wireless, and long-range, short-range or medium-range. By establishing a secure channel, sensitive information associated with the payment device (such as account number, CVV value, expiration date, etc.) can be securely transmitted between the two entities to facilitate the transaction.
[0042] As used herein, the term "computing device" or "computer device" may refer to one or more electronic devices configured to communicate directly or indirectly with or on one or more networks. The computing device may be a mobile device, a desktop computer, or the like. As examples, a mobile device may include a cellular phone (e.g., a smartphone or a standard cellular phone), a portable computer, a wearable device (e.g., a watch, glasses, lenses, clothing, etc.), a personal digital assistant (PDA), and / or other similar devices. A computing device may not be a mobile device, such as a desktop computer. In addition, the term "computer" may refer to any computing device that includes the necessary components for sending, receiving, processing, and / or outputting data and typically includes a display device, a processor, a memory, an input device, a network interface, and / or the like.
[0043] The terms "gateway," "transaction gateway," or "payment gateway" may refer to a specialized processor that serves the unique needs of a merchant or a specific vertical group of merchants. A gateway can connect merchants to payment or transaction processing networks, acquirer networks, or issuer networks. For example, an e-commerce gateway can allow online merchants to connect to the proprietary formats and systems of an acquiring processor. Due to the risk of online fraud, a gateway may also provide risk management capabilities and anti-fraud measures. Any gateway format can provide card acquiring services to merchants.
[0044] An "interface," "payment interface," or "transaction interface" may include any software module configured to handle communications. For example, an interface may be configured to receive, process, and respond to a specific entity in a specific communication format. Furthermore, a computer, device, and / or system may include any number of interfaces, depending on the functionality and capabilities of the computer, device, and / or system. In some embodiments or aspects, an interface may include an application programming interface (API) or other communication format or protocol that may be provided to a third party or specific entity to allow communication with the device. Additionally, an interface may be designed based on functionality, a specified entity with which it is configured to communicate, or any other variable. For example, an interface may be configured to allow the system to respond to a specific request or may be configured to allow a specific entity to communicate with the system.
[0045] The terms "issuer institution," "portable financial device issuer," "issuer," or "issuer bank" may refer to one or more entities that provide one or more accounts (e.g., credit accounts, debit accounts, credit card accounts, debit card accounts, etc.) to a user (e.g., a customer, consumer, etc.) for conducting transactions (e.g., payment transactions), such as initiating credit and / or debit payments. For example, an issuer may provide a user with an account identifier, such as a personal account number (PAN), that uniquely identifies one or more accounts associated with the user. The account identifier may be used by the user to conduct payment transactions. The account identifier may be embodied on a portable financial device, such as a physical financial instrument (e.g., a payment card), and / or may be electronic and used for electronic payments. In some non-limiting embodiments or aspects, the issuer may be associated with a bank identification number (BIN) that uniquely identifies the issuer. As used herein, an "issuer system" or "issuer institution system" may refer to one or more systems operated by or on behalf of an issuer. For example, an issuer system may refer to a server that executes one or more software applications associated with the issuer. In some non-limiting embodiments or aspects, the issuer system may include one or more servers (eg, one or more authorization servers) for authorizing payment transactions.
[0046] A "payment network" may refer to an electronic payment system used to accept, transmit, or process transactions made by payment devices for funds, goods, or services. A payment network may transfer information and funds between issuers, acquirers, merchants, and payment device users. An illustrative, non-limiting example of a payment network is VisaNet, which is operated by Visa, Inc.
[0047] A "payment processing network" may refer to a system that receives accumulated transaction information from a gateway processing service, typically at a fixed time each day, and performs a settlement process. Settlement may involve posting transactions to an account associated with the payment device used for the transaction and calculating the net debit or credit for each user of the payment device. An exemplary payment processing network is
[0048] As used herein, the term "server" may include one or more computing devices, which may be individual stand-alone machines located in the same or different locations, owned or operated by the same or different entities, and may further be one or more clusters of distributed computers or "virtual" machines housed in a data center. Those skilled in the art will appreciate and understand that the functions performed by a "server" may be spread across multiple different computing devices for various reasons. As used herein, "server" is intended to refer to all such scenarios and should not be interpreted as or limited to a specific configuration. In addition, the server as described herein may, but need not, reside at (or be operated by) an agent of any of a merchant, payment network, financial institution, medical provider, social media provider, government agency, or the aforementioned entities. The term "server" may also refer to or include one or more processors or computers, storage devices, or similar computer arrangements that operate or facilitate communication and processing by multiple parties in a network environment such as the Internet, but it should be understood that communication can be facilitated by one or more public or private network environments, and various other arrangements are possible. In addition, multiple computers (e.g., servers) or other computerized devices (e.g., point-of-sale devices) communicating directly or indirectly in a network environment may constitute a "system" (e.g., a merchant's point-of-sale system). As used herein, reference to a "server" or "processor" may refer to a previously stated server and / or processor stated as performing a previous step or function, a different server and / or processor, and / or a combination of servers and / or processors. For example, as used in the specification and claims, a first server and / or first processor stated as performing a first step or function may refer to the same or a different server and / or processor stated as performing a second step or function.
[0049] A "server computer" may generally be a single powerful computer or cluster of computers. For example, a server computer may be a mainframe, a cluster of small computers, or a group of servers functioning as a unit. A server computer may be associated with an entity such as a payment processing network, a wallet provider, a merchant, an authentication cloud, an acquirer, or an issuer. In one example, a server computer may be a database server coupled to a web server. The server computer may be coupled to a database and may include any hardware, software, other logic, or combination of the foregoing for servicing requests from one or more client computers. The server computer may include one or more computing devices and may use any of a variety of computing structures, arrangements, and compilations for servicing requests from one or more client computers. In some embodiments or aspects, the server computer may provide and / or support payment network cloud services.
[0050] A "replacement" transaction can be any transaction that is associated with and occurs after the original transaction, including duplicates, refunds, reversals, or exceptions (chargebacks, re-issues, etc.).
[0051] As used herein, the term "system" may refer to one or more computing devices or a combination of computing devices (eg, processors, servers, client devices, software applications, components of such computing devices, etc.).
[0052] "Transaction amount" can be the price assessed to the consumer for a transaction. The transaction amount condition can be a threshold (e.g., all transactions with an amount exceeding $100) or a range (e.g., all transactions within the range of $25-$50). For example, a user may wish to use a first routing priority list for transactions with an amount within the range of $0.01-$100, and a second routing priority list for transactions with an amount exceeding $100.
[0053] The term "transaction data" may include any data associated with one or more transactions. In some embodiments or aspects, transaction data may include only an account identifier (e.g., PAN) or a payment token. Alternatively, in other embodiments or aspects, transaction data may include any information generated, stored, or associated with a merchant, a consumer, an account, or any other transaction-related information. For example, transaction data may include data in an authorization request message generated in response to a payment transaction initiated by a consumer with a merchant. Alternatively, transaction data may include information associated with one or more transactions that have been previously processed and the transaction information has been stored in a merchant database or other merchant computer. Transaction data may include an account identifier associated with the payment instrument used to initiate the transaction, consumer personal information, the products or services purchased, or any other information that may be relevant or suitable for transaction processing. In addition, transaction information may include a payment token or other tokenized or masked account identifier substitute that can be used to complete the transaction and protect the consumer's underlying account information.
[0054] As used herein, references to "device," "server," "processor," and the like may refer to the previously stated device, server, or processor recited as performing the previously stated step or function, different servers or processors, and / or combinations of servers and / or processors. For example, as used in the specification and claims, a first server or first processor recited as performing a first step or a first function may refer to the same or different server or the same or different processor recited as performing a second step or a second function.
[0055] Distributed systems are commonly used to solve a variety of large-scale problems in systems and architectures used to provide services to large-scale networks and enterprises. Distributed systems allow individual nodes to work together from various geographic locations and in modular clusters to process extremely large amounts of data and produce results for very complex and computationally intensive problems. Each node is capable of processing a portion of the problem or a specific dataset, while the nodes combined are able to generate a complete result that would otherwise be too difficult and time-consuming for a single node to perform. Another advantage offered by these distributed systems is the lack of single points of failure, where one node can take over the tasks of another node if the previous node has failed, gone offline, or is inactive.
[0056] However, efficient communication between and within nodes and / or clusters in distributed systems is an ongoing problem in this technology space. Various communication challenges are inherently coupled to the architecture of distributed systems, encompassing fault tolerance, high availability, consistency, and efficiency of communication and coordination between nodes.
[0057] Communication patterns in distributed algorithms, systems, or clusters can generally be categorized into three main groups. The first group can be described as state communication, or state communication, which describes or communicates the state between all participating nodes in a distributed setting to reach consensus. The second group can be described as data communication, which describes the transfer of actual data, for example, copying or moving files between nodes. Finally, the third type of communication can be described as state communication, which describes the results of the data transfer that occurred and the actions taken or to be taken based on the results.
[0058] There are two main problems associated with communication that arise in distributed systems. The first is that the need for coordination and communication between nodes can hinder the scalability of a cluster of nodes. This limitation hits the heart of distributed computing, which is based on the principle of horizontal scaling. This states that to improve performance, we can add computing power to a distributed setup. However, as we increase the number of nodes in a distributed system, we also incur high costs for network communication, which ultimately becomes a limiting factor in the number of nodes we can have in the distributed system.
[0059] This is because as the number of nodes increases, the amount of communication between nodes becomes more and more numerous in order to increase the power and size of the cluster to solve larger or more complex problems. As the number of nodes increases, the need for coordination also increases, necessitating increased communication, typically in the form of a greater number of messages being transmitted between a greater number of nodes. This need for more coordination and communication is a limiting factor in how large a distributed cluster can scale, with diminishing returns on larger cluster sizes acting as an upper limit on system size.
[0060] A second major problem that arises in distributed systems is that in most cases, it is not feasible to have nodes in different geographical locations communicating at scale. In most current systems, nodes are typically housed together or co-located in the same physical location, typically in the form of data centers. This is because the overhead cost of communication is already one of the most computationally expensive operations in a cluster, and the more resource-intensive it is for nodes to send and receive messages between each other and within the cluster, the slower the transmission or communication between nodes becomes. Therefore, network latency often drives distributed systems to have all nodes of the system co-located to improve latency and reduce computational costs by reducing geographical distance. This push towards co-locating nodes eliminates one of the advantages of distributed systems, which is to have nodes in geographically separated locations, thereby hindering any decentralization benefits that a truly geographically distributed system could accrue.
[0061] The present disclosure provides techniques, systems and methods for reducing the number of interactions required in a distributed system to reduce the computational costs introduced by communications, and to eliminate lags introduced by network communication delays and make communications / coordination in distributed systems more efficient. The present disclosure reduces the communication overhead of a distributed system by providing each node with the ability to determine the state of each other participating node in the cluster via a stateless idempotent injective function, thereby hindering the need to transmit messages / communications to and from other nodes. This reduces the communication overhead attributable to stateful communications. Because the state can be deterministically calculated by all participating nodes without the need to repeat any explicit information sharing. Therefore, the techniques described herein not only reduce communications in the system and their associated computational and network costs, but also allow nodes to be in geographically independent and separate locations because they do not have to conduct the various communications they would normally rely on.
[0062] Figure 1 105 )*number of nodes.
[0063] Figure 2 Shows an alternative to traditional cluster configurations that aims to reduce communication between nodes by utilizing a broadcast controller node. Figure 2 as well as Figure 1 , a distributed system or cluster 200 provides Figure 1This is a traditional alternative to the architecture of cluster 100. In this architecture implemented by cluster 200, the responsibility for broadcasting messages is delegated to only one node, namely controller 250. Therefore, in this aspect, node 240 can initiate request 201 and must transmit the request as message 205 to controller 250, where controller 250 broadcasts message 205 to any or all nodes 210-240 in the cluster. Controller 250 also receives confirmation messages 205 back from the nodes 210-240 to which it broadcast message 205. Controller 250 can also transmit confirmation messages 205 to node 240 confirming receipt of request 201. This means that in this configuration, the load on node 240 is much lower because it does not have to broadcast its message across the cluster, but the load on controller 250 is much higher because it must be the only node responsible for broadcasting messages. Furthermore, in this configuration, other messages only send messages 205 confirming receipt or status back to controller 250, and not to other nodes 210-240.
[0064] Continue to main reference Figure 2 as well as Figure 1 , while this configuration is a relative improvement in terms of the total number of messages sent within the system or cluster 200, it is Figure 1 By reducing this number, system 200 has its disadvantages compared to cluster 100. The total number of messages 205 is reduced because each of nodes 210-240 only communicates directly with controller 250, so this controller 250 is a single point of failure in the distributed system or cluster 200. Distributed system architectures are deployed by the network and are effective because they do not rely on a single node that can act as a single point of failure. The single point of failure introduced by controller 250 provides a significant disadvantage to cluster 200, which makes it more efficient than Figure 1 The cluster 100 is less reliable. If the controller 250 is inactive or down for any reason, the entire cluster 200 will also be down or disabled. Single points of failure are considered design flaws to be avoided in distributed system settings.
[0065] Figure 3 A simplified aspect of a node programmed to generate mutually exclusive idempotent outputs for queries based on a correlation function is shown. According to at least one aspect of the present disclosure, the correlation function is loaded onto each node, thereby reducing the need for communication between them. In this example, nodes 310 and 320 are standard nodes that do not have a correlation function. Nodes 310, 320 need to communicate with each other via transmitted messages, for example, to pass knowledge about the state of each node to another node. In contrast, nodes 330 and 340 have already received the correlation function and have loaded or installed the correlation function. Node 330 has a correlation function that runs an even counter, while node 340 has the same correlation function, but it runs an odd counter.
[0066] The relevant function can be for example transferred to each node by a controller or a function generator node (not shown). Once nodes 330, 340 receive the function, they can load and / or install the function locally, for example, in a local storage device. Based on the parameter received together with the function, the state of the node or the request for executing the function, the function on each node 330, 340 performs an even or odd counter with a specific frequency. In one example, each counter performed adds +1 per second. In another example, the starting point is set by each function on each node, and the node running the odd counter can start at 5, and the node running the even counter can start at 6. Other examples can depend on the state of nodes 330, 340 to determine whether the starting count, counting frequency and each node are odd counters or even counters.
[0067] In an example aspect, node 330 may be at count '10' while node 340 will be at '11' (or '9', depending on which node is configured to be in front). Thus, based on their own internal states, each of node 330 and node 340 is able to determine the count or state of the other node 330, 340. For example, node 330 knows that when it is at '10', the state of node 340 is '11'. This is because node 330 knows that they both have a starting point and a similar counting frequency, so if it is currently at '10', then based on its internal state and the parameters of the function (e.g., "counting frequency"), it can determine that node 340 is at '11'. The parameters and states that node 330 can use to make this determination may include the knowledge that node 340 is an even counter and that even counters start at a certain number in addition to the counting frequency of node 340.
[0068] Therefore, nodes 330, 340 do not need to communicate with each other to notify or share knowledge about their own state with each other. Each of these nodes 330, 340 can determine the state of another node 330, 340 based on its own state (and in some aspects, local system state) via a related function. This can be extended to multiple nodes in a cluster, where the function can consider the local state of a node such as an even or odd counter to determine the state of other nodes in the system. The function will also use a request identifier to identify the function, as well as the parameters that should be used in the instance where a request or trigger occurs to run the function. Various types of functions can be implemented in a distributed system to perform functions and solve complex problems of various domain spaces and applications.
[0069] Figure 4 A low-communication node cluster architecture according to at least one aspect of the present disclosure is shown. Figure 4 as well as Figure 3, the technology disclosed herein may include a system or system architecture 400, which may include a correlation function generator 420. In a distributed system, a cluster includes multiple individual nodes that are responsible for processing a small subset of the actual problem or calculation (e.g., creating an aggregation on a data set), and these individual nodes return the results of the subset. The results of the subset can then be collated for all participating nodes in the cluster and combined to form a final answer, result, or final result.
[0070] Generator 420 may be created, activated, or allowed to run after system 400 is started, or executed by algorithm startup 410. Cluster 435 may be composed of nodes 430 1-i In some aspects, the cluster 435 may also include a generator node 420. The algorithm launcher 410 may be a software module, a hardware module, an application, an instruction, an applet, a virtual machine, or a node, and may be part of the cluster 435 or may be separate from the cluster 435, depending on the aspects and configuration of the cluster 435. Typically, when the cluster 435 appears or is generated, the relevant function is transmitted / delivered 425 by the generator 420 to the different nodes 430 in the cluster 435. 1-i In many aspects, the correlation function is a stateless idempotent injective function. In some aspects, the generator 420 may transmit 425 the correlation function to the node 430 only after being activated or executed. 1-i In various aspects, each node will be assigned an identifier 's' which will be from a set of predefined numbers 'S'.
[0071] Then, node 430 1-i Each of the nodes 430 can install or load related functions. Related functions have specific characteristics, which will enable each individual node 430 1-i Find each other individual node 430 by executing the function with the parameters / inputs 1-i In some aspects, the relevant function can be executed immediately after loading or installation, and in alternative aspects, the function can be executed after receiving a request or instruction from a different node or request source, or by another system event or trigger.
[0072] In many aspects, the function will be a special function that, when given the correct input, will have the ability to generate mutually exclusive idempotent outputs. In various aspects, the output can be a decision or selection of a service node that will serve or process the request. The output of the function will always be related to some hidden (to the node) relationship or parameter that will allow all nodes 430 to 1-i Determine each other node 430 independently 1-iThe state of the request, which will be guaranteed to be consistent. In several aspects, the function can be of the form F(local_state, request_id, ..., ...) = target_response. By node 430 running the relevant function 1-i The selected target_response may be dynamic, for example, and may be based on or take into account dynamic factors such as network traffic or load factors stored as part of the local state.
[0073] Parameters for calculating the local state (e.g., local_state) may determine the local state of the cluster 435. The local state of the cluster 435 may also be composed of one or more parameters, including but not limited to the nodes 430 participating in the cluster 435. 1-i The number of nodes 430 1-i The number becomes the target result set of the function where the response should be located, as it determines the set of service nodes from which to choose to process the request.
[0074] Another parameter that may be part of determining the local state of the cluster is the number of nodes 430 in the cluster 435. 1-i Status of node 430 1-i The state of node 430 can be determined 1-i Is it ready to accept requests. This is to avoid redirecting requests to nodes 430 that do not accept requests and / or are no longer part of the cluster 435 1-i .
[0075] In some aspects, when a need arises, all nodes 430 1-i When participating in the decision-making, the trigger event (which can be defined by the relevant function) will make all nodes (with the relevant function) 430 1-i Compute itself and other nodes 430 1-i Based on a predefined set of rules, node 4301- i Compare their calculations with those rules to reach a deterministic consensus decision, such as whether to process the request, transmit the request to another node 430 1-i , or do nothing. Each node 4301-i can receive multiple related functions, each of which can be related to the same or different programs or applications. Therefore, in architecture 400, node 430 1-i There is no need to communicate with each other or transmit messages to each other to inform each other of each other's status, because each node can discover the status of each other node and / or the local state of the cluster by using correlation functions.
[0076] Figures 5A to 5Billustrating subsequent requests processed by a low-communication node cluster at different time periods in accordance with at least one aspect of the present disclosure. Figure 5A The state of cluster 500 at time = t is presented. Figure 5B Presents the state of cluster 500 at time = t+x. Figure 5A as well as Figure 4 At time t, a request 501 (including, for example, a write request), which may include any type of request, data transfer, or query, is transmitted 502 to a receiving node 504 ("receiving node" is used herein to refer to a node that receives a request). Request 501 may be generated from a client, device, gateway, user device, node, or any other source inside or outside the cluster. Request 501 will include certain attributes, such as parameters, metadata, or data elements. These attributes may identify and provide information about or related to the request, including the content required by the request, the associated functions associated with the request, and any specific applications connected to the request.
[0077] The nodes in the cluster 500 have all received the relevant function, which may have been obtained from Figure 4 The correlation function generator 420 receives 425 ( Figure 4 ). Thus, when the receiving node 504 receives the transmitted request 501 and identifies the request 501 as requiring execution of a particular correlation function that it has received, loaded, and / or installed, the receiving node can use the correlation function present on the node 504 to run one iteration of the function to identify which node (depending on the request attributes) should service the request 501 (the term "serving node" is used herein to refer to a node selected or designated by the correlation function, or by the receiving node that executes the correlation function to service the request (e.g., request 501)). In many aspects, once the correlation function is run on the node 504, and the node 504 determines, based on the correlation function, that a particular node will service the request 501, e.g., it determines that the node 506 is the serving node, it can transmit 507 the request 501 to the node 506 so that the node 506 can process or service the request 501.
[0078] Turning to Figure 5A Continue Figure 5B , and at time = t + x, that is, at Figure 5A At some point in the future, a new request 510, which may be a read request, is transmitted 511 to a receiving node, which may be a node connected to Figure 5A The receiving node 503 then uses a correlation function (which is usually Figure 5AThe same function is used in , but different dependent related functions can be deployed to determine the node status of different tasks, such as one function for write requests and another function for read requests) to determine which node services request 501 at time = t. Node 503 can receive read request 510 to obtain node 506 to service write request 501 ( Figure 5A ) the final result or result. In a traditional architecture, node 503 must transmit a message, such as a broadcast message, to all other nodes in cluster 500 to determine which node services the initial write request 501. In some of these traditional systems, the system will have to maintain a cache or some memory or storage at a central entity, which will introduce a single point of failure, such as similar to Figure 2 Controller 250. Conventional systems may also have to perform a broadcast, requiring each node to reply if they have already serviced an earlier request 501, which would result in a total of n messages (n-1 broadcasts + 1 reply).
[0079] Compared to traditional architectures, the architecture of cluster 500 allows it to avoid sending messages to transfer state between nodes. In this example, communication is reduced by a factor of n, where n is the number of nodes participating in cluster 500. In addition, the architecture of cluster 500 demonstrates that the present disclosure overcomes one of the main constraints of scaling distributed systems, which is that all hardware nodes must be co-located in the same data center that is geographically close to each other. Because Figure 4 and 5A The presented architecture to 5B significantly reduces communication overhead, so scaling clusters across large geographically separated data centers will no longer incur prohibitive latency or computational costs.
[0080] In cluster 500, due to the correlation function, node 503 does not need to send any messages to any other node in cluster 500. Instead, it determines the state of cluster 500 at time = t based on the correlation function using parameters known to node 503 (including the local state of cluster 500) and determines which node to service request 501. Because the correlation function is an idempotent injective function, when it executes the same correlation function, it will reach the same result as node 504 at time = t. Node 503 at time = t + x is able to determine that node 506 serviced the original write request 501 and therefore has the data to service the subsequent and related read request 510. This allows node 503 to transmit 512 request 510 to node 506 to service the request. Therefore, this method allows nodes to determine the state of each node in the cluster based on the same function to achieve the same end result.
[0081] Figure 6Flowchart showing one aspect of a method for processing requests by a low communication node cluster according to at least one aspect of the present disclosure. Method 600 includes processing requests by each node in a distributed system, such as nodes 4301-430 in cluster architecture 400. i Receive 605 a correlation function having a plurality of inputs, the plurality of inputs including at least an identifier. The correlation function may be performed by a controller, a node, Figure 4 The relevant function generator 420 or another source transmits the relevant function. Receiving 605 allows or causes each receiving node to deploy, install or load the function so that the function can be executed when necessary. In several aspects, the relevant function is configured to generate a mutually exclusive output based on multiple inputs. In various aspects, this mutually exclusive output allows each node to determine a service node to process or service the request. The multiple inputs including identifiers transmitted with the relevant function can include various information, which can include but is not limited to related applications, instructions when to use the function, tagged metadata, parameters, identifiers that can be triggered when received with the instructions, etc.
[0082] The method 600 also includes receiving 610 a request including an identifier at a node of the distributed system. This may be related to Figures 5A to 5B 6. The request includes an identifier associated with a relevant function and received 605 by multiple nodes along with the function. Once a request with an identifier known to a node is received, the receiving node can execute the associated function using parameters known to it. In various cases, this execution of the associated relevant function is performed so that the node can identify 615 a service node for servicing the request based on the relevant function. In some aspects, a triggering event can trigger the execution of the relevant function in multiple or all nodes in the cluster. For example, a triggering event, such as a request, transmission, message, or any other trigger, may require all nodes to each determine or calculate a portion of the problem, each portion or calculation being based on and determined by the relevant function.
[0083] The associated function may identify the service node, or it may be designed to perform, complete, or compute another function. When the cluster is computing a multi-node problem, the associated function may, for example, allow each node to compute its role. The associated function may be configured to perform multiple functions depending on the design of the function, the application to which it relates, what the cluster is designed or configured to do, etc. Method 600 may also include processing 620 the request by the service node. In some aspects, this processing is performed after the receiving node identifies the service node and after the receiving node transmits the request to the service node. In other aspects, the receiving node may determine that it is the service node and process the request locally.
[0084] Figure 7A flow chart illustrating one aspect of a method for identifying a service node for a service request via a correlation function according to at least one aspect of the present disclosure is shown. Figure 7 as well as Figure 6 , method 700 may describe how a node receiving a request may identify a serving node 615 ( Figure 6 ) is an aspect of the invention. The method 700 may begin by determining 705 the status of other nodes in the distributed system based on the status of the node. In several aspects, the node is a receiving node that performs a related function after receiving a request, such as Figure 5A Node 504.
[0085] Once the states of the other nodes are determined 705, the receiving node determines 710 a local state based on at least one of the state of the node, the states of the other nodes, or the number of nodes in the distributed system. The local state describes the state of the system and may include parameters such as the total number of nodes, the number of active nodes, the state of each node in the system, and the like. Figure 3 Detailed description is provided in
[0065] . After determining the state of the node, the states of other nodes, and the local state, the receiving node may calculate 715 a target response identifying the serving node based on the local state and a plurality of inputs. The calculation 715 may be performed as part of or exclusively by a correlation function loaded in the node. The plurality of inputs may include parameters including identifiers of the function and / or request, as well as other programmable parameters that may vary based on the correlation function and what it is designed to determine or do.
[0086] Figures 8A to 8B Subsequent transaction requests processed by a transaction processing and interfacing system running a low-communication node cluster according to at least one aspect of the present disclosure are illustrated. Figure 8A Describes transactions or payment transactions conducted by a system 800, which may be owned by an issuer or payment acquirer or other payment service provider or processing service. Figures 5A to 5B , in various cases, Figure 8A describes the transaction process that occurs at time = t, and Figure 8B Describes an alternative transaction process that occurs at time = t + x. System 800 includes a distributed cluster 801. Distributed cluster 810 can be similar in its architecture and functionality to Figure 4 Cluster 400 or Figures 5A to 5B The cluster 500. The system 800 may include a payment network or payment processing network, an issuer network, an acquirer network, or any other transaction processing network that forms at least part of a transaction process.
[0087] A financial transaction request 801, such as a payment request, may be generated by a client through a transaction or payment gateway 802 that is capable of interfacing with multiple client devices. The system 800 may include various payment interfaces or payment interface nodes 804. 1-i The distributed cluster 810 can be connected to multiple transaction interfaces 804 1-i , the distributed cluster includes multiple node groups 807 for processing transaction requests 1-i , multiple node groups 807 1-i Each contains at least one node.
[0088] The gateway 802 may receive transaction requests from client devices and direct the transaction requests to multiple interfaces 804. 1-i For example, the gateway 802 can transmit 803 the transaction request to the receiving payment interface node 804. 1-i Typically, payment is redirected to the interface 8041-804 closest to the payment gateway 802. i In some aspects, the gateway 802 selects a payment interface based on at least one of latency, network traffic status, or geographic proximity of the payment interface. For example, VISA TM The payment interface node 8041 , once selected by the payment gateway 802 based on at least one selection factor, receives the transmitted 803 request 801 from the payment gateway.
[0089] Typically, the payment interface 804 1-i Send the received transaction for processing by the node or node group. However, instead of randomly sending this transaction request 801 to any node group for processing, the payment interface node 8041 calls the relevant function it has received, such as Figure 4 , and through the correlation function, the node or group that should process this transaction can be identified or determined. The payment interface node can identify multiple node groups based on the correlation function 807 1-i Node group 807 used to service transaction requests i .
[0090] The payment interface node 8041 can identify the node or group that should process this transaction by executing relevant functions. Similar to method 700, the functions can be executed to determine multiple node groups 807 in the distributed cluster 810 based on the state of the payment interface 8041 by the payment interface, for example, the interface 8041. 1-i The payment interface node 8041 may then determine the local state based on at least one of the following: the state of the payment interface 8041, the plurality of node groups 807 1-ithe state of the distributed cluster 810, the number of nodes in the real-time payment interface system 800 (hereafter a group may, for example, include any or all nodes in the system, including any payment interface node 804). 1-i Finally, once the payment interface node 8041 determines the local state, it can then compute a target response based on the local state and multiple inputs, the target response identifying at least one node group 807 for servicing the request. 1-i , such as node group 8072. Once the interface 8041 determines the node or group to receive the request, it can then pass / redirect the request to the specified node 806 of the group 8072.
[0091] Nodes in the distributed cluster 810 can be organized into groups 807 1-i Group 807 1-i Each of the may contain a node as a group designation. A group designation may include exposed endpoints that receive requests for processing by nodes that are part of its group. For example, group 8072 includes group designation 806 (also referred to as a "group designation node") and includes nodes 8091-8093 for processing request 801. Instead of randomly sending request 801 to any node 809 in its group 8072, 1-3 After receiving the request 801, the group designation 806 calls a related function on behalf of the group to find out which node 8091-8093 in the 8072 should act as a service node and process the transaction. For example, the group designation 806 may identify the node 8091 as a service node and transmit 808 the request 801 to it for processing.
[0092] In several aspects, the identification by group designation 806 can be based on Figure 7 The method 700 includes determining other nodes 809 in the node group 8072 based on the status of the group-specified node 806. 1-3 Then, the group-specified node can be based on the status of the group-specified node 806, other nodes 809 1-3 The local state may be determined based on at least one of the state of the node group 8072, the number of nodes in the node group 8072, the total number of nodes in the distributed cluster 810, or the total number of nodes in the real-time payment interface system 800. Finally, the group designation 806 may calculate a target response based on the local state and a plurality of inputs, the target response identifying at least one service node in the node group 8072, such as the node 8091.
[0093] In several aspects, the service node 8091 services or processes the request 801 and stores the transaction result in its local storage, cache, or another storage device of the node 8091. In many aspects, all 809 in the group 8072 are read. 1-3 of storage and feeds processing details to the data warehouse for further use and synchronization with other repositories, databases or records.
[0094] Figure 8B Describes a replacement transaction, reversal, or substitution payment transaction performed by system 800, thereby changing, replacing, or reversing Figure 8A A payment reversal can be described as a scenario where, after a transaction has already taken place, a request to reverse the transaction is received from the cardholder or the issuing bank. In traditional systems, the settlement of a reversal request may take several days because the original processed transaction request (e.g., request 801) would first have to be reflected in the central data repository, and only then could a reversal or replacement request be initiated.
[0095] However, the technology described herein provides methods and systems for near-instant and / or near-real-time replacement or reversal of transactions. This is because the service node that processes a request can be quickly identified by using a correlation function, without having to flood the entire system 800 or distributed cluster 810 with broadcast messages. In traditional systems, at least two broadcasts are required within the system to quickly reverse a processed transaction: one broadcast message from an interface node that transmits the request to a node group, such as payment interface node 8041, and a second broadcast message from a group designation, such as group designation 806, to identify which node in which group processed the original transaction. This flooding of the network with broadcast messages can cause significant latency and network congestion, and is therefore not feasible at a scalable level in traditional systems.
[0096] Figure 8B An example of a faster and less expensive transaction replacement technique is provided. In this example, once a payment is made and processed by system 800, a request 811 for a replacement transaction, such as a payment reversal, refund, or change, is received. Once service node 8091 completes processing request 801, it stores the request in its local storage or memory. Before system 800 receives the request for the replacement transaction, the transaction has not yet been synchronized with the central database or repository. In order to successfully replace or reverse processed transaction 801, node 8091 must be identified as the service node for transaction 801. This allows system 800 to reverse the transaction locally on the local storage of the service node (in this case, node 8091) (or on the local group storage of the service node's group, if the transaction is stored there).
[0097] Similar to Figure 8AHowever, in contrast to the method in which a node is identified as processing a request, the system 800 must identify a specific node. Figure 8A In the initial process, in this case, the system 800 identifies at time = t+1 the node that processes the request 801 at time = t. Figures 5A to 5B The systems and methods discussed in System 500 may be used Figures 8A to 8B Once the alternative transaction request 811 is initiated by a bank, acquirer, issuer, merchant or client, the payment gateway 802 receives the alternative transaction request. The gateway 802 directs the transaction request 811 to multiple interfaces 804. 1-i For example, the gateway 802 may transmit 812 a transaction request 811 to a receiving payment interface node 804. 1-i Typically, payment is redirected to the interface 804 closest to the payment gateway 802. 1-i In some aspects, the gateway 802 selects a payment interface based on at least one of latency, network traffic conditions, or geographic proximity of the payment interface. In this example, once the gateway 802 selects a payment interface based on one or more selection factors, the payment interface node 8042 receives the transmitted 803 request 811 from the payment gateway 802.
[0098] Typically, the payment interface 804 1-i The received transaction is sent for processing by a node or group of nodes. However, rather than randomly sending this transaction request 811 to any node group for processing, the payment interface node 8042 calls a related function and, via the related function, can identify or determine the node or group that should process this transaction. In this case, the node or node group that services the transaction 801 and has the data for the transaction is determined in order to replace, reverse, or modify the transaction. Similar to Figure 8A The payment interface 8041 in the embodiment determines the group-specified node or node group for processing or servicing the request 801, and the payment interface node 8042 can identify multiple node groups 807. 1-i The node group 807 previously selected by the system 800 at time = t to service the transaction request based on the same correlation function i The identification by the payment interface node 8042 is performed by using a correlation function to Figure 8A The identification performed by the payment interface node 8041 in is performed in a similar manner, but parameters are used to calculate what the payment interface node 8041 will select at time = t.
[0099] Once the payment interface 8042 determines the node or group that has previously received the transaction request 801 for processing, it passes / redirects the replacement request 811 request to the designated node 806 of the identified group 8072. In this example, the relevant function performed by the payment interface 8042 may consist of the following: function (transaction_reference_id, card_acceptor_id, retrieval_reference_number, card_number, amount, mcc, num_nodes, status_nodes) -> target response, where transaction_reference_id Is an ID used to uniquely identify the transaction. It can be, for example, the unique identifier of the point-of-sale terminal where the card was swiped. The retrieval_reference_number can be a unique identifier for transactions at a specific POS terminal. card_number It can be the ID of the card being swiped. amount Can be related to the transaction amount. mcc Can include merchant category codes (e.g., airline, hotel, retail, etc.)
[0100] Once the group designation 806 receives the request 811, it proceeds to identify the nodes 809 in its group 8072. 1-3 The node in the group 8072 that served the last request 801 and has the processed data to which the group specifies that a replacement or payment reversal request 811 can be transmitted 814 for processing. 1-3 Acting as a service node at time = t to communicate with Figure 8A Once this is done, node 8091 is identified and the request is transmitted to that node for processing, and transaction request 811 replaces transaction request 801, for example by canceling the payment of request 801 or modifying the payment amount of request 801 with the payment amount of request 811. Either the transaction data or the transaction amount can be altered or modified using the systems and methods described herein by utilizing a replacement transaction request 811 after the original transaction request 801 has been processed.
[0101] Figure 9 Node 900 is an example node that can be used in a low-communication node cluster in a distributed system according to at least one aspect of the present disclosure. Figure 4 Any type of hardware device or software module, virtual machine that is part of the cluster 400. Node 900 may also be a computer device, such as Figure 3900. A node may also be a simplified node or node module 900. A node 900 may include a memory 901 for storing data or instructions, a processing unit 902 that may be composed of one or more processors for executing instructions that may be stored on the memory 901, and a storage device 903 for storing data. A node may receive input 904, such as an instruction, request, or related function to be installed, loaded, or executed, and produce output 905, which may be of any type or result, such as a result of a related function, request, transmission, message, communication, or instruction to another node or part of any system discussed herein.
[0102] Figure 10 is a block diagram of a computer device 3000 having data processing subsystems or components within which a set of instructions for performing any one or more of the methodologies discussed herein may be executed in accordance with at least one aspect of the present disclosure. Figure 10 The subsystems shown in FIG30 are interconnected via a system bus 3010. Additional subsystems are shown, such as a printer 3018, a keyboard 3026, a fixed disk 3028 (or other memory including computer-readable media), and a monitor 3022 coupled to a display adapter 3020. Peripheral devices and input / output (I / O) devices coupled to an I / O controller 3012 (which may be a processor or any suitable controller) may be connected to the computer system by any number of means known in the art, such as a serial port 3024. For example, a serial port 3024 or an external interface 3030 may be used to connect the computer device to a wide area network (e.g., the Internet), a mouse input device, or a scanner. Interconnection via the system bus allows the central processor 3016 to communicate with each subsystem and control the execution of instructions from the system memory 3014 or the fixed disk 3028, as well as the exchange of information between the subsystems. The system memory 3014 and / or the fixed disk 3028 may embody computer-readable media.
[0103] Figure 114 is a diagrammatic representation of an example system 4000 including a host machine 4002 within which a set of instructions for performing any one or more of the methodologies discussed herein may be executed, in accordance with at least one aspect of the present disclosure. In various aspects, host machine 4002 operates as a standalone device or may be connected (e.g., via a network connection) to other machines. In a networked deployment, host machine 4002 may operate as a server or client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. Host machine 3002 may be a computer or computing device, a personal computer (PC), a tablet PC, a set-top box (STB), a personal digital assistant (PDA), a cellular phone, a portable music player (e.g., a portable hard drive audio device such as a Moving Picture Experts Group Audio Layer 3 (MP3) player), a network appliance, a network router, a switch or bridge, or any machine capable of executing a set of instructions (sequentially or otherwise) specifying actions to be taken by the machine. Further, while a single machine is illustrated, the term "machine" shall also be taken to include any collection of machines that individually or jointly execute a set (or multiple sets) of instructions to perform any one or more of the methodologies discussed herein.
[0104] The example system 4000 includes a host 4002, running a host operating system (OS) 4004 on processor(s) / processor core(s) 4006 (e.g., central processing unit (CPU), graphics processing unit (GPU), or both) and various memory nodes 4008. The host OS 4004 may include a hypervisor 4010 capable of controlling functions and / or communicating with virtual machines ("VMs") 4012 running on machine-readable media. The VMs 4012 may also include virtual CPUs or vCPUs 4014. Memory nodes 4008 may be linked or pinned to virtual memory nodes or vNodes 4016. When a memory node 4008 is linked or pinned to a corresponding vNode 4016, data may then be mapped directly from the memory node 4008 to its corresponding vNode 4016.
[0105] All of the various components shown in host 4002 can be connected to and coupled to one another, or communicate with one another via a bus (not shown) or via other coupling or communication channels or mechanisms. Host 4002 may also include a video display, audio devices, or other peripherals 4018 (e.g., a liquid crystal display (LCD), alphanumeric input device(s) (including, for example, a keyboard), a cursor control device (e.g., a mouse), a voice recognition or biometric authentication unit, an external drive, a signal generating device (e.g., a speaker)), a permanent storage device 4020 (also known as a disk drive unit), and a network interface device 4022. Host 4002 may also include a data encryption module (not shown) for encrypting data. The components provided in host 4002 are those typically found in computer systems suitable for use with aspects of the present disclosure and are intended to represent a broad category of such computer components known in the art. Thus, system 4000 may be a server, a minicomputer, a mainframe computer, or any other computer system. Computers may also include different bus configurations, network platforms, multi-processor platforms, and the like. Various operating systems may be used, including UNIX, LINUX, WINDOWS, QNX ANDROID, IOS, CHROME, TIZEN, and other suitable operating systems.
[0106] The disk drive unit 4024 may also be a solid-state drive (SSD), a hard disk drive (HDD), or other drive containing a computer or machine-readable medium having stored thereon one or more sets of instructions and data structures (e.g., data / instructions 4026) embodying or utilizing any one or more of the methodologies or functions described herein. The data / instructions 4026 may also reside completely or at least partially within the main memory node 4008 and / or within the processor(s) 4006 during execution by the host 4002. The data / instructions 4026 may be further transmitted or received over a network 4028 via a network interface device 4022 utilizing any of several well-known transfer protocols (e.g., Hypertext Transfer Protocol (HTTP)).
[0107] The processor(s) 4006 and memory node 4008 may also include machine-readable media. The term "computer-readable medium" or "machine-readable medium" should be understood to include a single medium or multiple media (e.g., a centralized or distributed database and / or associated cache memory and servers) that stores one or more sets of instructions. The term "computer-readable medium" should also be understood to include any medium capable of storing, encoding, or carrying a set of instructions for execution by the host 4002 and causing the host 4002 to perform any one or more of the methods of the present application, or any medium capable of storing, encoding, or carrying data structures utilized by or associated with such a set of instructions. Thus, the term "computer-readable medium" should be understood to include, but not be limited to, solid-state memory, optical and magnetic media, and carrier signals. Such media may also include, but are not limited to, hard disks, floppy disks, flash memory cards, digital video disks, random access memory (RAM), read-only memory (ROM), and the like. The example aspects described herein may be implemented in an operating environment that includes software installed on a computer, installed in hardware, or a combination of software and hardware.
[0108] Those skilled in the art will recognize that an Internet service can be configured to provide Internet access to one or more computing devices coupled to the Internet service, and that the computing devices may include one or more processors, buses, memory devices, display devices, input / output devices, etc. Furthermore, those skilled in the art will appreciate that the Internet service can be coupled to one or more databases, repositories, servers, etc., which can be used to implement any of the various aspects of the present disclosure as described herein.
[0109] The computer program instructions may also be loaded onto a computer, server, other programmable data processing device or other apparatus so that a series of operating steps are executed on the computer, other programmable device or other apparatus to produce a computer-implemented process, so that the instructions executed on the computer or other programmable device provide a process for implementing the functions / actions specified in one or more boxes of the flowchart and / or block diagram.
[0110] For example, a suitable network may include or interface with any one or more of the following: a local intranet; a PAN (personal area network); a LAN (local area network); a WAN (wide area network); a MAN (metropolitan area network); a virtual private network (VPN); a storage area network (SAN); a frame relay connection; an advanced intelligent network (AIN) connection; a synchronous optical network (SONET) connection; a digital T1, T3, E1, or E3 line; a digital data service (DDS) connection; a DSL (digital subscriber line) connection; an Ethernet connection; an ISDN (integrated services digital network) line; a dial-up port (such as a V.90, V.34, or V.34bis analog modem connection); a cable modem; an ATM (asynchronous transfer mode) connection; or an FDDI (fiber distributed data interface) or CDDI (copper distributed data interface) connection. In addition, communications may also include links to any of a variety of wireless networks, including WAP (Wireless Application Protocol), GPRS (General Packet Radio Service), GSM (Global System for Mobile Communications), CDMA (Code Division Multiple Access) or TDMA (Time Division Multiple Access), a cellular telephone network, GPS (Global Positioning System), CDPD (Cellular Digital Packet Data), RIM (Working Environment Photo) duplex paging network, Bluetooth radio, or a radio frequency network based on IEEE 802.11. Network 4030 may also include or interface with any one or more of the following: an RS-232 serial connection, an IEEE-1394 (FireWire) connection, a Fibre Channel connection, an IrDA (Infrared) port, a SCSI (Small Computer System Interface) connection, a USB (Universal Serial Bus) connection, or other wired or wireless, digital or analog interface or connection, mesh or Network connection.
[0111] Generally speaking, a cloud-based computing environment is a resource that typically combines the computing power of a large group of processors (e.g., within a web server) and / or the storage capacity of a large group of computer memory or storage devices. Systems that provide cloud-based resources can be employed solely by their owners, or such systems can be accessed by external users who deploy applications within the computing infrastructure to gain the benefits of large-scale computing or storage resources.
[0112] For example, a cloud is formed by a network of web servers comprising multiple computing devices (e.g., host 4002), where each server 4030 (or at least a plurality thereof) provides processor and / or storage resources. These servers manage workloads provided by multiple users (e.g., cloud resource clients or other users). Typically, the workload demands placed on the cloud by each user vary in real time, sometimes significantly. The nature and extent of these changes typically depend on the type of business associated with the user.
[0113] It is noteworthy that any hardware platform suitable for performing the processing described herein is suitable for use with the technology. As used herein, the terms "computer-readable storage medium" and "computer-readable storage media" refer to any one or more media that participate in providing instructions to a CPU for execution. This medium can take a variety of forms, including (but not limited to) non-volatile media, volatile media, and transmission media. Non-volatile media include (for example) optical or magnetic disks, such as fixed disks. Volatile media include dynamic memory, such as system RAM. Transmission media include coaxial cables, copper wires, and optical fibers, among others, including conductors that comprise one aspect of a bus. Transmission media can also take the form of sound waves or light waves, such as those generated during radio frequency (RF) and infrared (IR) data communications. Common forms of computer-readable media include, for example, a floppy disk, a hard disk, magnetic tape, any other magnetic medium, CD-ROM discs, digital video discs (DVDs), any other optical medium, any other physical medium with patterns of marks or holes, RAM, PROM, EPROM, EEPROM, FLASHEPROM, any other memory chip or data exchange adapter, a carrier wave, or any other medium from which a computer can read.
[0114] Various forms of computer-readable media can be involved in carrying one or more sequences of one or more instructions to the CPU for execution. The bus carries the data to the system RAM, from which the CPU retrieves the instructions and executes them. The instructions received by the system RAM can optionally be stored on a fixed disk before or after execution by the CPU.
[0115] The computer program code for performing operations on aspects of the present invention can be written in any combination of one or more programming languages, including object-oriented programming languages (such as Java, Smalltalk, C++, etc.) and conventional procedural programming languages (such as "C" programming language, Go, Python, or other programming languages including assembly language). The program code can be executed entirely on the user's computer, partially on the user's computer; as a stand-alone software package, partially on the user's computer and partially on a remote computer, or entirely on a remote computer or server. In the latter scenario, the remote computer can be connected to the user's computer through any type of network including a local area network (LAN) or a wide area network (WAN), or an external computer can be connected (for example, using an Internet service provider to connect via the Internet).
[0116] Examples of methods according to various aspects of the present disclosure are provided below in the following numbered clauses. An aspect of the method may include any one or more than one and any combination of the numbered clauses described below.
[0117] Clause 1. A method for reducing communication between nodes in a distributed system, the method comprising: receiving, by each node in the distributed system, a correlation function having multiple inputs, the multiple inputs including at least an identifier; receiving a request including the identifier at a node in the distributed system; identifying, by the node, a service node for servicing the request based on the correlation function, the identification comprising determining, by the node, the states of other nodes in the distributed system based on the state of the node; determining a local state based on at least one of the state of the node, the states of the other nodes, or the number of nodes in the distributed system; and calculating a target response for identifying the service node based on the local state and the multiple inputs; and processing the request by the service node.
[0118] Clause 2. The method of clause 1, further comprising transmitting, by the node, the request to the serving node.
[0119] Clause 3. The method of any one of clauses 1 to 2, further comprising receiving, by the serving node, the request transmitted from the node.
[0120] Clause 4. A method according to any one of clauses 1 to 3, further comprising receiving, by the node, a transmitted request from another node in the distributed system for processing, wherein the other node identifies the node as the service node; and processing the transmitted request by the node.
[0121] Clause 5. The method of any one of clauses 1 to 4, wherein the node is the serving node.
[0122] Clause 6. The method of any one of clauses 1 to 5, wherein the correlation function is configured to generate mutually exclusive outputs based on the plurality of inputs.
[0123] Clause 7. The method of any one of clauses 1 to 6, wherein the correlation function produces mutually exclusive outputs to allow each node in the distributed system of nodes to determine a serving node for the request.
[0124] Clause 8. The method of any one of clauses 1 to 7, wherein the determination of a local state is based on the state of the node, the states of the other nodes, and the number of nodes in the distributed system.
[0125] Item 9. A real-time financial transaction interface and processing system, comprising a distributed cluster connected to a plurality of payment interfaces, the distributed cluster comprising a plurality of node groups for processing transaction requests, the plurality of node groups each comprising at least one node; a transaction gateway, the transaction gateway being capable of interfacing with a plurality of client devices, the transaction gateway being configured to receive transaction requests from the client devices; and directing the transaction requests to a payment interface among the plurality of payment interfaces; the plurality of payment interfaces being connected to the transaction gateway, wherein the payment interface among the plurality of payment interfaces is configured to receive the transaction requests from the transaction gateway; identifying a node group among the plurality of node groups for servicing the transaction request based on a relevant function; and transmitting the transaction request to a group-designated node of the node group; the group-designated node being configured to identify at least one service node among the node group for servicing the transaction request based on a relevant function; and transmitting the transaction request to the at least one service node to process the transaction request.
[0126] Clause 10. The system of clause 9, wherein the at least one service node stores a result of processing the transaction request in a local storage device.
[0127] Clause 11. The system of any one of clauses 9 to 10, wherein the stored results are transferred to a data storage repository.
[0128] Clause 12. The system of any one of clauses 9 to 11, wherein the at least one service node is configured to: receive a replacement transaction request for a processed transaction stored in its local storage device; and process the replacement transaction request to change the processed transaction.
[0129] Clause 13. The system of any one of clauses 9 to 12, wherein the transaction gateway is further configured to select the payment interface based on at least one of latency, network traffic status, or geographic proximity of the payment interface.
[0130] Clause 14. A system according to any one of clauses 9 to 13, wherein the identifying of the node group by the payment interface includes: determining, by the payment interface, the status of the multiple node groups in the distributed cluster based on the status of the payment interface; determining a local status based on at least one of the status of the payment interface, the status of the multiple node groups, or the number of nodes in the distributed cluster or the total number of nodes in the real-time financial transaction interface and processing system; and calculating a target response for identifying at least one of the multiple node groups based on the local status and multiple inputs.
[0131] Clause 15. A system according to any one of clauses 9 to 14, wherein each of the plurality of node groups comprises an exposed endpoint configured to receive the transaction request to be processed by the at least one node in the node group; and to perform the identification of the at least one service node of the node group.
[0132] Clause 16. A system according to any one of clauses 9 to 15, wherein the identification of the at least one service node by the group-designated node includes: determining the status of other nodes in the node group based on the status of the group-designated node; determining a local status based on at least one of the status of the group-designated node, the status of the other nodes, the number of nodes in the node group, the total number of nodes in the distributed cluster, or the total number of nodes in the real-time financial transaction interface and processing system; and calculating a target response for identifying the at least one service node based on the local status and multiple inputs.
[0133] Clause 17. The system of any one of clauses 9 to 16, wherein the transaction request is at least one of a payment request or a payment reversal request.
[0134] Item 18. A non-transitory machine-readable medium storing code, which, when executed by a processor, is configured to: receive a correlation function having multiple inputs, the multiple inputs including at least an identifier; receive a request including the identifier; identify a service node for servicing the request based on the correlation function, the identification including determining the state of other nodes in a distributed system based on the state of one node; determine a local state based on at least one of the state of the node, the state of the other nodes, or the number of nodes in the distributed system; and calculate a target response for identifying the service node based on the local state and the multiple inputs.
[0135] Clause 19. The non-transitory machine-readable medium storing code of Clause 18, the code, when executed by a processor, further configured to transmit the request to the service node.
[0136] Clause 20. The non-transitory machine-readable medium of any one of clauses 18 to 19, wherein the determination of the local state is based on at least one of the state of the node, the state of the other nodes, or the number of nodes in a distributed system.
[0137] The foregoing detailed description has been described using block diagrams, flow charts, and / or examples to illustrate various forms of systems and / or processes. To the extent that such block diagrams, flow charts, and / or examples contain one or more functions and / or operations, those skilled in the art will understand that each function and / or operation within such block diagrams, flow charts, and / or examples can be implemented individually and / or collectively by a wide range of hardware, software, firmware, or any combination thereof. Those skilled in the art will recognize that some aspects of the forms disclosed herein can be equivalently implemented in whole or in part in an integrated circuit as one or more computer programs running on one or more computers (e.g., as one or more programs running on one or more computer systems), as one or more programs running on one or more processors (e.g., as one or more programs running on one or more microprocessors), as firmware, or as any combination thereof, and will recognize that, based on the present disclosure, designing circuit systems and / or writing code for software and / or firmware will be well within the skill of those skilled in the art. In addition, those skilled in the art will understand that the mechanisms of the subject matter described herein can be distributed as one or more program products in various forms, and will understand that the illustrative forms of the subject matter described herein are applicable regardless of the specific type of signal-bearing medium used to actually perform the distribution.
[0138] Instructions for programming the logic to perform the various disclosed aspects may be stored in a memory (e.g., dynamic random access memory (DRAM), cache memory, flash memory, or other storage device) in the system. In addition, the instructions may be distributed via a network or other computer-readable medium. Thus, a machine-readable medium may include any mechanism for storing or transmitting information in a form readable by a machine (e.g., a computer), but is not limited to floppy disks, optical disks, compact disks, read-only memories (CD-ROMs) and magneto-optical disks, read-only memories (ROMs), random access memories (RAMs), erasable programmable read-only memories (EPROMs), electrically erasable programmable read-only memories (EEPROMs), magnetic or optical cards, flash memories, or tangible machine-readable storage devices for transmitting information via electrical, optical, acoustic, or other forms of propagated signals (e.g., carrier waves, infrared signals, digital signals, etc.) over the Internet. Thus, a non-transitory computer-readable medium includes any type of tangible machine-readable medium suitable for storing or transmitting electronic instructions or information in a form readable by a machine (e.g., a computer).
[0139] Any software component or function described in this application can be implemented as a software code executed by a processor using any suitable computer language (e.g., Python, Java, C++, or Perl) using, for example, conventional or object-oriented techniques. The software code can be stored as a series of instructions or commands on a computer-readable medium such as RAM, ROM, magnetic media (e.g., hard disk or floppy disk), or optical media (e.g., CD-ROM). Any such computer-readable medium can reside on or within a single computing device and can exist on or within different computing devices within a system or network.
[0140] As used in any aspect herein, the term "logic" may refer to an application, software, firmware, and / or circuitry configured to perform any of the aforementioned operations. Software may be embodied as a software package, code, instructions, instruction sets, and / or data recorded on a non-transitory computer-readable storage medium. Firmware may be embodied as code, instructions, instruction sets, and / or data hard-coded (e.g., non-volatile) in a memory device.
[0141] As used in any aspect herein, the terms "component," "system," "module," and the like may refer to a computer-related entity, either hardware, a combination of hardware and software, software, or software in execution.
[0142] As used in any aspect herein, an "algorithm" refers to a self-consistent sequence of steps leading to a desired result, where a "step" refers to manipulations of physical quantities and / or logical states, although not necessarily in the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated. These signals are often referred to as bits, values, elements, symbols, characters, terms, numbers, and the like. These and similar terms may be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities and / or states.
[0143] The network may include a packet-switched network. The communication devices may be able to communicate with each other using a selected packet-switched network communication protocol. An example communication protocol may include an Ethernet communication protocol, which may allow communication using the Transmission Control Protocol / Internet Protocol (TCP / IP). The Ethernet protocol may conform to or be compatible with the Ethernet standard entitled "IEEE 802.3 Standard (IEEE 802.3 Standard)" published by the Institute of Electrical and Electronics Engineers (IEEE) in December 2008 and / or subsequent versions of this standard. Alternatively or in addition, the communication devices may be able to communicate with each other using the X.25 communication protocol. The X.25 communication protocol may conform to or be compatible with the standard promulgated by the International Telecommunication Union-Telecommunication Standardization Sector (ITU-T). Alternatively or in addition, the communication devices may be able to communicate with each other using the Frame Relay communication protocol. The frame relay communication protocol may conform to or be compatible with standards promulgated by the Consultative Committee for International Telegraph and Telephone (CCITT) and / or the American National Standards Institute (ANSI). Alternatively or additionally, the transceivers may be capable of communicating with each other using an asynchronous transfer mode (ATM) communication protocol. The ATM communication protocol may conform to or be compatible with the ATM standard entitled "ATM-MPLS Network Interworking 2.0," published by the ATM Forum in August 2001, and / or subsequent versions of such standard. Of course, different and / or developed connection-oriented network communication protocols are also contemplated herein.
[0144] Unless expressly indicated otherwise in the foregoing disclosure, it should be understood that throughout this disclosure, discussions using terms such as "process," "compute," "calculate," "determine," "display," etc., refer to actions and processes of a computer system or similar electronic computing device that manipulate data represented as physical (electronic) quantities within the computer system's registers and memories and transform it into other data similarly represented as physical quantities within the computer system's memories or registers or other such information storage, transfer, or display devices.
[0145] One or more components may be referred to herein as being "configured to," "configurable to," "operable / operating," "suitable / adaptable to," "capable of," "compliant / compliant with," etc. Those skilled in the art will recognize that "configured to" may generally encompass active state components and / or inactive state components and / or standby state components, unless the context requires otherwise.
[0146] Those skilled in the art will recognize that, in general, the terms used herein, and particularly in the appended claims (e.g., the appended claim bodies), are generally intended as "open" terms (e.g., the term "including" should be interpreted as "including but not limited to," the term "having" should be interpreted as "having at least," the term "includes" should be interpreted as "includes but is not limited to," etc.). Those skilled in the art will further understand that if a specific number of an introduced claim recitation is intended, such intent will be expressly stated in the claim, and in the absence of such a statement, no such intent is present. For example, to aid understanding, the following appended claims may contain usage of the introductory phrases "at least one" and "one or more" to introduce claim recitations. However, the use of such phrases should not be construed as meaning that introducing a claim recitation by the indefinite article "a" or "an" limits any particular claim containing that recited claim recitation to claims containing only one such recitation, even when the same claim contains the introductory phrase "one or more" or "at least one" and an indefinite article such as "a" or "an" (e.g., "a" and / or "an" should generally be construed to mean "at least one" or "one or more"); the same is true for the use of definite articles to introduce claim recitations.
[0147] In addition, even if a specific number of an introduced claim recitation is explicitly stated, one skilled in the art will recognize that such recitation should generally be interpreted to mean at least the stated number (e.g., simply stating "two recitations" without other modifiers generally means at least two recitations, or two or more recitations). Moreover, in those instances where a convention similar to "at least one of A, B, and C, etc. is used, generally such construction is intended in the sense that one skilled in the art would understand the convention (e.g., "a system having at least one of A, B, and C" would include, but is not limited to, systems having only A, only B, only C, A and B together, A and C together, B and C together, and / or A, B, and C together, etc.). In those instances where a convention similar to "at least one of A, B, or C, etc. is used, generally such construction is intended in the sense that one skilled in the art would understand the convention (e.g., "a system having at least one of A, B, or C" would include, but is not limited to, systems having only A, only B, only C, A and B together, A and C together, B and C together, and / or A, B, and C together, etc.). Those skilled in the art will further understand that, whether in the description, claims, or drawings, distinguishing words and / or phrases that generally present two or more alternative terms should be understood to include the possibility of one, either, or both of the terms, unless the context dictates otherwise. For example, the phrase "A or B" will generally be understood to include the possibility of "A" or "B" or "A and B."
[0148] With respect to the appended claims, it will be understood by those skilled in the art that the operations described therein can generally be performed in any order. In addition, although the various operational flow charts are presented in one or more sequences, it will be understood that the various operations can be performed in other orders than those described, or can be performed simultaneously. Examples of such alternative orderings may include overlapping, interleaved, interrupted, reordered, incremental, preliminary, supplementary, simultaneous, reversed, or other variations of ordering, unless the context dictates otherwise. In addition, terms such as "responsive to," "related to," or other past tense adjectives are generally not intended to exclude such variations, unless the context dictates otherwise.
[0149] It is important to note that any reference to "one aspect," "an aspect," "an example," "an example," etc., means that a particular feature, structure, or characteristic described in connection with the aspect is included in at least one aspect. Thus, the phrases "in one aspect," "in an aspect," "in an example," and "in an example" appearing in various places throughout this specification are not necessarily all referring to the same aspect. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more aspects.
[0150] As used herein, the term "comprising" is not intended to be limiting, but rather may be a transitional term that is synonymous with "including," "containing," or "characterized by." Thus, the term "comprising" may be inclusive or open-ended and does not exclude additional, unrecited elements or method steps when used in a claim. For example, when describing a method, "comprising" indicates that the claim is open-ended and allows for additional steps. When describing an apparatus, "comprising" may mean that the named elements may be essential to an embodiment or aspect, but other elements may be added and still form a construction within the scope of the claim. In contrast, the transitional phrase "consisting of" excludes any element, step, or ingredient not specified in the claim. This is consistent with the usage of the term throughout this specification.
[0151] As used herein, the singular forms "a," "an," and "the" include plural referents unless the context clearly dictates otherwise.
[0152] Any patent application, patent, non-patent publication, or other public material cited in this specification and / or listed in any Application Data Sheet is incorporated herein by reference to the extent that the incorporated material is not inconsistent therewith. Thus, and to the extent necessary, the disclosure as expressly set forth herein supersedes any conflicting material incorporated by reference. Any material or portion thereof that is stated to be incorporated herein by reference but conflicts with existing definitions, statements, or other public material set forth herein will be incorporated only to the extent that there is no conflict between the incorporated material and the existing public material. No admission is made that they are prior art.
[0153] In summary, many benefits have been described that result from employing the concepts described herein. The foregoing description of one or more forms has been presented for purposes of illustration and description. It is not intended to be exhaustive or limited to the precise forms disclosed. Modifications and variations are possible in light of the above teachings. One or more forms have been selected and described to illustrate the principles and practical applications, thereby enabling one of ordinary skill in the art to utilize the various forms and make various modifications as contemplated for the specific use. The claims submitted herein are intended to define the overall scope.
Claims
1. A method for reducing communication between nodes in a distributed system, the method comprising: receiving, by each node in the distributed system, a correlation function having a plurality of inputs, the plurality of inputs including at least an identifier; receiving, at a node of the distributed system, a request including the identifier; The node identifies, based on the correlation function, a service node for servicing the request, wherein the identifying comprises: determining, by the node, states of other nodes in the distributed system based on the state of the node; determining a local state based on at least one of the state of the node, the states of the other nodes, or a number of nodes in the distributed system; and computing a target response identifying the serving node based on the local state and the plurality of inputs; and The request is processed by the service node.
2. The method according to claim 1, further comprising: The request is transmitted by the node to the service node.
3. The method according to claim 2, further comprising: The request transmitted from the node is received by the serving node.
4. The method according to claim 1, further comprising: receiving, by the node, the transmitted request from another node in the distributed system for processing, wherein the other node identifies the node as the serving node; as well as The transmitted request is processed by the node. The method of claim 1 , wherein the node is the serving node. The method of claim 1 , wherein the correlation function is configured to generate mutually exclusive outputs based on the plurality of inputs.
7. The method of claim 1, wherein the correlation function produces mutually exclusive outputs to allow each node in the distributed system of nodes to determine a serving node for the request.
8. The method of claim 1, wherein the determination of a local state is based on the state of the node, the states of the other nodes, and the number of nodes in the distributed system.
9. A real-time financial transaction interface and processing system comprising: A distributed cluster connected to a plurality of payment interfaces, the distributed cluster comprising a plurality of node groups for processing transaction requests, each of the plurality of node groups comprising at least one node; A transaction gateway capable of interfacing with a plurality of client devices, the transaction gateway being configured to: receiving a transaction request from a client device; and directing the transaction request to a payment interface among the plurality of payment interfaces; The plurality of payment interfaces are connected to the transaction gateway, wherein the payment interface among the plurality of payment interfaces is configured to: receiving the transaction request from the transaction gateway; identifying a node group from the plurality of node groups for servicing the transaction request based on a correlation function; as well as Transmitting the transaction request to a group-designated node of the node group; The group-specified node is configured to: identifying at least one service node in the node group for servicing the transaction request based on the correlation function; as well as The transaction request is transmitted to the at least one service node for processing the transaction request.
10. The system according to claim 9, wherein the at least one service node stores the processing result of the transaction request in a local storage device. The system of claim 10 , wherein the stored results are transferred to a data storage repository.
12. The system of claim 9, wherein the at least one service node is configured to: receiving a replacement transaction request for a processed transaction stored in its local storage device; and The substitute transaction request is processed to modify the processed transaction.
13. The system of claim 9, wherein the transaction gateway is further configured to: The payment interface is selected based on at least one of latency, network traffic status, or geographic proximity of the payment interface.
14. The system of claim 9, wherein identifying the node group by the payment interface comprises: Determining, by the payment interface, states of the plurality of node groups in the distributed cluster based on a state of the payment interface; determining a local state based on at least one of the state of the payment interface, the states of the plurality of node groups, or the number of nodes in the distributed cluster, or the total number of nodes in the real-time financial transaction interface and processing system; as well as A target response identifying at least one of the plurality of node groups is calculated based on the local state and a plurality of inputs.
15. The system of claim 9, wherein each node group of the plurality of node groups comprises an exposed endpoint, the exposed endpoint being configured to: receiving the transaction request to be processed by the at least one node in the group of nodes; and The identifying of the at least one serving node of the node group is performed.
16. The system of claim 9, wherein the identifying, by the group-designated node, the at least one serving node comprises: determining the status of other nodes in the node group based on the status of the group-specified node; determining a local state based on at least one of the state of the group-specified node, the state of the other nodes, the number of nodes in the group of nodes, the total number of nodes in the distributed cluster, or the total number of nodes in the real-time financial transaction interface and processing system; as well as A target response identifying the at least one service node is calculated based on the local state and a plurality of inputs.
17. The system of claim 9, wherein the transaction request is at least one of a payment request or a payment reversal request.
18. A non-transitory machine-readable medium storing code that, when executed by a processor, is configured to: receiving a correlation function having a plurality of inputs, the plurality of inputs including at least an identifier; receiving a request including the identifier; identifying a service node for servicing the request based on the correlation function, the identifying comprising: Determine the status of other nodes in the distributed system based on the status of one node; determining a local state based on at least one of the state of the node, the states of the other nodes, or a number of nodes in the distributed system; and A target response identifying the service node is calculated based on the local state and the plurality of inputs.
19. The non-transitory machine-readable medium storing code according to claim 18, wherein the code, when executed by a processor, is further configured to: The request is transmitted to the service node.
20. The non-transitory machine-readable medium of claim 18, wherein the determination of the local state is based on at least one of the state of the node, the states of the other nodes, or a number of nodes in a distributed system.