CN112291321A - 业务处理方法、装置及系统 - Google Patents
业务处理方法、装置及系统 Download PDFInfo
- Publication number
- CN112291321A CN112291321A CN202011137601.9A CN202011137601A CN112291321A CN 112291321 A CN112291321 A CN 112291321A CN 202011137601 A CN202011137601 A CN 202011137601A CN 112291321 A CN112291321 A CN 112291321A
- Authority
- CN
- China
- Prior art keywords
- service
- actor
- processing result
- distributed database
- mailbox
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0819—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
- H04L9/0825—Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0861—Generation of secret information including derivation or calculation of cryptographic keys or passwords
- H04L9/0863—Generation of secret information including derivation or calculation of cryptographic keys or passwords involving passwords or one-time passwords
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Databases & Information Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Power Engineering (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种业务处理方法、装置及系统,以解决现有的业务处理方式无法兼容各运算实体的一致性和性能的问题。所述方法应用于接入分布式数据库的业务节点,所述方法包括:通过预先创建的信箱Mailbox从所述分布式数据库中获取待处理的业务消息,所述业务消息为用户端响应于用户对目标应用的业务操作生成而发送给所述分布式数据库中的指定节点、并由所述指定节点保存至所述分布式数据库中;基于与所述Mailbox对应的业务Actor对所述业务消息进行处理,得到业务处理结果;通过所述Mailbox向所述指定节点发送所述业务处理结果,以使所述指定节点将所述业务处理结果保存至所述分布式数据库中。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种业务处理方法、装置及系统。
背景技术
随着业务的发展,现有的业务处理过程对于垂直扩展、水平扩展以及容错性的要求越来越高,各种分布式的业务处理机制应运而生。
现有的业务处理方式通常是基于Akka集群或者基于智能合约的分布式系统来实现。对于Akka集群而言,其通过启用大量的作为运算实体的Actor来完成相应的业务处理,这种处理方式虽然具有较高的性能,但由于Actor之间是直接通过对应的Mailbox通信并按照顺序运行的,因而即便从同一个状态开始相同消息的各个Actor的状态也会因为消息的顺序或者Actor故障而不一致,导致Akka集群不具有一致性。对于基于智能合约的分布式系统,其虽然能够通过各个共识节点对智能合约进行一次运算以得到相应的状态,并通过各共识节点间互相校验状态来保证各个处理节点的状态之间的一致性,但由于共识计算会重复消耗共识节点的计算性能,使得整个分布式系统的性能无法超过单个共识节点的性能,因而导致整个分布式系统的性能较低。
发明内容
本申请实施例提供一种业务处理方法、装置及系统,以解决现有的业务处理方式无法兼容各运算实体的一致性和性能的问题。
为解决上述技术问题,本申请实施例采用下述技术方案:
第一方面,本申请实施例提供一种业务处理方法,应用于接入分布式数据库的业务节点,所述方法包括:
通过预先创建的信箱Mailbox从所述分布式数据库中获取待处理的业务消息,所述业务消息为用户端响应于用户对目标应用的业务操作生成而发送给所述分布式数据库中的指定节点、并由所述指定节点保存至所述分布式数据库中;
基于与所述Mailbox对应的业务Actor对所述业务消息进行处理,得到业务处理结果;
通过所述Mailbox向所述指定节点发送所述业务处理结果,以使所述指定节点将所述业务处理结果保存至所述分布式数据库中。
可选地,在通过预先创建的信箱Mailbox从所述分布式数据库中获取待处理的业务消息之前,所述方法还包括:
为所述目标应用创建Actor模型,所述Actor模型包括至少一个业务Actor及业务Actor对应的Mailbox;
基于确定性有限状态自动机定义所述至少一个业务Actor的内部处理逻辑,所述业务Actor的内部处理逻辑用于所述业务Actor进行业务处理;
为所述至少一个业务Actor分配身份信息,所述身份信息包括公钥和私钥。
可选地,通过所述Mailbox向所述指定节点发送所述业务处理结果,以使所述指定节点将所述业务处理结果保存至所述分布式数据库中,包括:
基于所述业务Actor的私钥对所述业务处理结果进行签名,得到处理结果签名数据;
通过所述Mailbox向所述指定节点发送所述处理结果签名数据,以使所述指定节点将所述处理结果签名数据保存至所述分布式数据库中。
可选地,所述分布式数据库为区块链,则在为所述至少一个业务Actor分配身份信息之后,所述方法还包括:
对于每个业务Actor,对所述业务Actor的公钥及内部处理逻辑进行序列化,得到所述业务Actor的序列化数据;
将所述业务Actor的序列化数据发送给所述指定节点,以使所述指定节点将所述业务Actor的序列化数据保存至所述区块链中,所述业务Actor的序列化数据用于对所述业务Actor进行重建。
可选地,对于每个业务Actor,对所述业务Actor的公钥及内部处理逻辑进行序列化,包括:
对于每个业务Actor,计算所述业务Actor的公钥的哈希值;
基于所述业务Actor的公钥生成加密密钥;
基于所述加密密钥对所述业务Actor的内部处理逻辑进行加密,得到处理逻辑加密数据;
对所述公钥的哈希值和所述处理逻辑加密数据进行序列化。
可选地,在通过所述Mailbox向所述指定节点发送所述业务处理结果,以使所述指定节点将所述业务处理结果保存至所述分布式数据库中之后,所述方法还包括:
从预先建立的业务Actor中确定待检测的目标业务Actor;
基于所述目标业务Actor的公钥及内部处理逻辑创建所述目标业务Actor的镜像Actor及所述镜像Actor对应的Mailbox;
通过所述镜像Actor对应的Mailbox,基于所述目标业务Actor的公钥从所述区块链中获取所述目标业务Actor处理的业务消息及业务处理结果;
基于所述镜像Actor对获取的业务消息进行处理,得到所述镜像Actor的业务处理结果;
基于所述镜像Actor的业务处理结果和所述目标业务Actor的业务处理结果,识别所述目标业务Actor是否异常。
可选地,在基于所述镜像Actor的业务处理结果和所述目标业务Actor的业务处理结果,识别所述目标业务Actor是否异常之后,所述方法还包括:
在所述目标业务Actor异常的情况下,通过所述镜像Actor对应的Mailbox向所述指定节点发送所述镜像Actor的业务处理结果,以使所述指定节点将所述镜像Actor的业务处理结果保存至所述区块链中。
第二方面,本申请实施例提供一种业务处理装置,应用于接入分布式数据库的业务节点,所述装置包括:
第一获取模块,用于通过预先创建的信箱Mailbox从所述分布式数据库中获取待处理的业务消息,所述业务消息为用户端响应于用户对目标应用的业务操作生成而发送给所述分布式数据库中的指定节点、并由所述指定节点保存至所述分布式数据库中;
第一业务处理模块,用于基于与所述Mailbox对应的业务Actor对所述业务消息进行处理,得到业务处理结果;
第一发送模块,用于通过所述Mailbox向所述指定节点发送所述业务处理结果,以使所述指定节点将所述业务处理结果保存至所述分布式数据库中。
可选地,所述装置还包括模型创建模块,所述模型创建模块用于:
为所述目标应用创建Actor模型,所述Actor模型包括至少一个业务Actor及业务Actor对应的Mailbox;
基于确定性有限状态自动机定义所述至少一个业务Actor的内部处理逻辑,所述业务Actor的内部处理逻辑用于所述业务Actor进行业务处理;
为所述至少一个业务Actor分配身份信息,所述身份信息包括公钥和私钥。
可选地,所述第一发送模块具体用于:
基于所述业务Actor的私钥对所述业务处理结果进行签名,得到处理结果签名数据;
通过所述Mailbox向所述指定节点发送所述处理结果签名数据,以使所述指定节点将所述处理结果签名数据保存至所述分布式数据库中。
可选地,所述分布式数据库为区块链,则所述装置还包括:
序列化模块,用于对于每个业务Actor,对所述业务Actor的公钥及内部处理逻辑进行序列化,得到所述业务Actor的序列化数据;
第二发送模块,用于将所述业务Actor的序列化数据发送给所述指定节点,以使所述指定节点将所述业务Actor的序列化数据保存至所述区块链中,所述业务Actor的序列化数据用于对所述业务Actor进行重建。
可选地,所述序列化模块具体用于:
对于每个业务Actor,计算所述业务Actor的公钥的哈希值;
基于所述业务Actor的公钥生成加密密钥;
基于所述加密密钥对所述业务Actor的内部处理逻辑进行加密,得到处理逻辑加密数据;
对所述公钥的哈希值和所述处理逻辑加密数据进行序列化。
可选地,所述装置还包括:
确定模块,用于从预先建立的业务Actor中确定待检测的目标业务Actor;
重建模块,用于基于所述目标业务Actor的公钥及内部处理逻辑创建所述目标业务Actor的镜像Actor及所述镜像Actor对应的Mailbox;
第二获取模块,用于通过所述镜像Actor对应的Mailbox,基于所述目标业务Actor的公钥从所述区块链中获取所述目标业务Actor处理的业务消息及业务处理结果;
第二业务处理模块,用于基于所述镜像Actor对获取的业务消息进行处理,得到所述镜像Actor的业务处理结果;
识别模块,用于基于所述镜像Actor的业务处理结果和所述目标业务Actor的业务处理结果,识别所述目标业务Actor是否异常。
可选地,所述还包括:
第三发送模块,用于在所述目标业务Actor异常的情况下,通过所述镜像Actor对应的Mailbox向所述指定节点发送所述镜像Actor的业务处理结果,以使所述指定节点将所述镜像Actor的业务处理结果保存至所述区块链中。
第三方面,本申请实施例提供一种业务处理装置,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如第一方面所述的业务处理方法的步骤。
第四方面,本申请实施例提供一种业务处理系统,包括:用户端和业务节点,所述用户端和所述业务节点分别接入分布式数据库中;
所述用户端,用于接收用户对目标应用的业务操作,基于所述业务操作生成业务消息并向所述分布式数据库中的指定节点发送所述业务消息,以使所述指定节点将所述业务消息保存至所述分布式数据库中;
所述业务节点,用于通过预先创建的信箱Mailbox从所述分布式数据库中获取待处理的业务消息,基于预先创建的业务Actor对所述业务消息进行处理,得到业务处理结果,以及通过所述Mailbox向所述指定节点发送所述业务处理结果,以使所述指定节点将所述业务Actor保存至所述分布式数据库中。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
用户端以及业务节点中作为运算实体的各个业务Actor等整个业务处理涉及的节点通过分布式数据库串接,各个业务Actor所要处理的消息来源于分布式数据库中且由在业务Actor内部完成相应的处理,因而逻辑上业务节点中Actor的状态仅取决于分布式数据库中存储的消息,而分布式数据库具有一致性的特点,使得从同一个状态开始处理同样业务消息的业务Actor的状态能够保持一致,进而保证了各运算实体在逻辑上的状态的一致性;同时,相较于现有的基于智能合约的分布式系统,无需通过共识节点基于智能合约进行共识计算来保证各运算实体在逻辑上的一致性,进而提高了业务节点的性能。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的业务处理方法的场景示意图;
图2为本申请实施例提供的一种业务处理方法的流程图;
图3为本申请实施例提供的一种活动登记方法的场景示意图;
图4为本申请实施例提供的一种活动相关业务的处理方法的流程图;
图5为本申请实施例提供的另一种活动相关业务的处理方法的流程图;
图6为本申请实施例提供的另一种业务处理方法的流程图;
图7为本申请实施例提供的一种电子设备的结构示意图;
图8为本申请实施例提供的一种业务处理装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
图1为本申请实施例提供的业务处理方法的应用场景示意图,如图1所示,该场景包括:用户端、业务节点和分布式数据库中的指定节点(图1中仅示出一个)。
其中,用户端中安装有目标应用,用户可以操作该目标应用向业务节点申请某项业务,用户端可以例如包括但不限于手机、平板电脑、个人电脑(Personal Computer,PC)等中的至少一种。用户端可接入到分布式数据库中。
分布式数据库可以为任意具有分布式存储和有序性等特点的存储系统,其可以为区块链,也可以为有序事件队列等,本申请实施例对分布式数据库的类型不做具体限定。在分布式数据库为区块链的情况下,本申请实施例的区块链可以为任意类型的区块链,例如包括但不限于公有链、私有链、联盟链等。
指定节点可以是分布式数据库中用于与接收并写入数据的节点。例如,在分布式数据库为区块链的情况下,指定节点可以是共识节点,共识节点可以对接收到的消息打包成新区块并生成的新区块进行验证,在完成对新区块的验证后,每个共识节点将验证结果广播给区块链中的其他共识节点,每个共识节点在接收到其余共识节点的验证结果后,方可确定新区块的有效性。
业务节点可以为具有业务处理功能的服务器,其可与用户端和分布式数据库中的指定节点进行通信或数据交互。
其中,业务节点可根据待处理的业务创建相应的Actor(参与者)模型,该Actor模型包括一个或多个业务Actor(图1仅示出一个)及业务Actor对应的Mailbox。其中,业务Actor与Mailbox之间是一一对应关系,即每个业务Actor都对应一个Mailbox。
其中,业务Actor是Actor模型中的运算实体,其内置有预先定义的内部处理逻辑,业务Actor可从对应的Mailbox中有序地接收和处理消息,一方面可以基于处理结果确定内部状态,另一方面将处理结果提交到对应的Mailbox中。
Mailbox是Actor模型中的信箱,其可接入到分布式数据库中,作为分布式数据库与业务Actor之间沟通的“桥梁”,其可将分布式数据库作为消息总线进行消息收发。进而可以所对应的业务Actor的身份信息从分布式数据库中进行消息收发。具体来说,Mailbox中内置有对应的业务Actor的身份信息(包括公钥和私钥),且具有两种工作模式,即只读模式和读写模式,在只读模式下,Mailbox可从分布式数据库中有序地同步内置的身份信息对应的消息,并将业务Actor以FIFO(First Input First Output,先入先出)形式的消息队列进行存储,以供对应的业务Actor从该消息队列中获取业务消息,而不会向分布式数据库中实际发送消息;在读写模式下,Mailbox可基于内置的身份信息(如私钥)对消息进行签名并发送到分布式数据库中。实际应用中,在分布式数据库为区块链的情况下,Mailbox可以是一类区块链节点而接入到区块链中,例如,Mailbox可以是SPV(Simplified PaymentVerification,简单支付验证)节点,其仅同步与自身身份信息相关的消息,或者,Mailbox也可以是全节点,其可以同步所有的区块链数据。
具体地,用户操作其用户端中的目标应用,比如进行活动的登记、用户信息注册及活动报名等业务操作。目标应用响应于用户的业务操作,生成相应的业务消息,并向指定节点发送业务消息,其中,业务消息中可携带业务相关数据。业务节点可通过业务Actor对应的Mailbox从分布式数据库中获取待处理的业务消息,基于业务Actor对业务消息进行处理,得到业务处理结果,并通过Mailbox向指定节点发送业务处理结果。指定节点将接收到的业务处理结果保存至分布式数据库中。
上述应用场景中,对于用户端而言,能够接收用户对目标应用的业务操作并通过分布式数据库中的指定节点将生成的业务消息保存至分布式数据库中,以便接入分布式数据库的其他相关节点能够读取该业务消息以进行处理;对于业务节点而言,能够从分布式数据库中获取业务消息并进行处理并通过指定节点将业务处理结果保存至分布式数据库中,由此,整个业务处理流程通过分布式数据库串接,作为运算实体的各个业务Actor所要处理的消息来源于分布式数据库中且由在业务Actor内部完成相应的处理,因而逻辑上业务节点中Actor的状态仅取决于分布式数据库中存储的消息,而分布式数据库具有一致性的特点,使得从同一个状态开始处理同样业务消息的业务Actor的状态能够保持一致,进而保证了各运算实体在逻辑上的状态的一致性;同时,相较于现有的基于智能合约的分布式系统,无需通过共识节点基于智能合约进行共识计算来保证各运算实体在逻辑上的一致性,进而提高了业务节点的性能。
基于上述应用场景架构,本申请实施例提供了一种业务处理方法。请参见图2,图2为本申请实施例提供的一种业务处理方法的流程图,该方法能够由图1中的业务节点执行。如图2所示,该方法包括以下步骤:
S12,通过预先创建的Mailbox从分布式数据库中获取待处理的业务消息。
其中,所述业务消息为用户端响应于用户对目标应用的业务操作生成而发送给分布式数据库中的指定节点、并由指定节点保持至分布式数据库中。
具体来说,业务节点可触发Mailbox工作在只读模式,业务节点中的Mailbox依次有序地从分布式数据库中有序地获取相应的消息。由于业务节点中各个业务Actor是依次运行的,因此,对于第一个业务Actor对应的Mailbox,其从分布式数据库中获取的消息是所述业务消息,而除第一个业务Actor以外的其他业务Actor对应的Mailbox,其从分布式数据库中获取的消息是前一个业务Actor的业务处理结果。
S14,基于与Mailbox对应的业务Actor对业务消息进行处理,得到业务处理结果。
业务Actor中内置有预先定义的内部处理逻辑。业务节点可触发业务Actor从对应的Mailbox中获取所需的业务消息并基于内部处理逻辑对获取的业务消息进行处理,得到业务处理结果。当然,业务Actor还可基于业务处理结果更新内部状态。
S16,通过Mailbox向指定节点发送业务处理结果,以使指定节点将业务处理结果保存至分布式数据库中。
业务节点在基于业务Actor获得相应的业务处理结果后,可触发业务Actor对应的Mailbox工作在读写模式,即基于分布式数据库事务的格式,对业务处理结果进行封装,并将封装后的业务处理结果发送给分布式数据库中的指定节点,由指定节点将封装后的业务处理结果保存至分布式数据库中。
在可选的方案中,业务节点在基于业务Actor得到业务处理结果后,可通过Mailbox向指定节点直接发送该业务处理结果,以使指定节点将业务处理结果保存至分布式数据库中。
在更为优选的方案中,为了便于对业务节点中部署的业务Actor的业务处理过程进行审计,以便在业务节点出现故障时能准确定位故障位置,业务节点可基于业务Actor的身份信息对业务Actor的业务处理结果进行标识后发送至分布式数据库中存储。具体地,上述步骤S16中,业务节点可为每个业务Actor分配相应的身份信息,其中,身份信息可以包括公钥和密钥,相应地,业务节点可基于预先设置的业务Actor的私钥对业务Actor的业务处理结果进行签名,得到处理结果签名数据,并通过Mailbox向指定节点发送处理结果签名数据,以使指定节点将处理结果签名数据保存至分布式数据库中。
需要说明的是,不同的业务操作涉及的业务Actor不同,有的业务操作可能可由一个业务Actor处理,有的业务操作可能需要由多个业务Actor共同处理,而这个业务Actor在处理按照预先设置的执行顺序处理。若业务操作涉及到的多个业务Actor,业务节点则可以按照预先设置的执行顺序,依次触发与待处理的业务消息匹配的多个业务Actor及对应的Mailbox。
具体来说,在一种可选的方案中,在与业务消息匹配的业务Actor为一个的情况下,业务节点可触发与该业务Actor对应的Mailbox从分布式数据库中获取上述业务消息,触发该业务Actor从该Mailbox中读取该业务消息并基于内部处理逻辑对该业务消息进行处理,得到业务处理结果;进一步地,业务节点触发与该业务Actor对应的Mailbox将该业务Actor的业务处理结果发送给分布式数据库中的指定节点,由指定节点将该业务Actor的业务处理结果保存至分布式数据库中。
在与业务消息匹配的业务Actor为多个的情况下,业务节点可首先触发第一个业务Actor对应的Mailbox从分布式数据库中获取业务消息,触发该业务Actor从该Mailbox中读取该业务消息并基于内部处理逻辑对该业务消息进行处理,得到业务处理结果;进一步地,业务节点触发与该业务Actor对应的Mailbox将该业务Actor的业务处理结果发送给分布式数据库中的指定节点,由指定节点将该业务Actor的业务处理结果保存至分布式数据库中。接着,业务节点触发下一个业务Actor对应的Mailbox(以下称为“下一个Mailbox”)将所述下一个Mailbox的业务处理结果发送给指定节点,由指定节点将所述下一个业务Actor的业务处理结果保持至分布式数据库。业务节点重复上述过程,直到与待处理的业务消息匹配的最后一个业务Actor对应的Mailbox将最后一个业务Actor的业务处理结果发送给指定节点,由指定节点将该业务处理结果保持至分布式数据库中。
通过本申请实施例提供的业务处理方法,用户端以及业务节点中作为运算实体的各个业务Actor等整个业务处理涉及的节点通过分布式数据库串接,各个业务Actor所要处理的消息来源于分布式数据库中且由在业务Actor内部完成相应的处理,因而逻辑上业务节点中Actor的状态仅取决于分布式数据库中存储的消息,而分布式数据库具有一致性的特点,使得从同一个状态开始处理同样业务消息的业务Actor的状态能够保持一致,进而保证了各运算实体在逻辑上的状态的一致性;同时,相较于现有的基于智能合约的分布式系统,无需通过共识节点基于智能合约进行共识计算来保证各运算实体在逻辑上的一致性,进而提高了业务节点的性能。
在实际应用中,用户可操作目标应用进行活动登记、用户注册及活动报名等业务操作。下面分别以这些业务操作为例,对上述本申请实施例提供的业务处理方法进行说明。
如图3和图4所示,活动登记涉及的业务Actor可以包括用于对活动相关信息进行管理的活动管理Actor。具体来说,活动管理方操作目标应用,编辑待登记活动的活动相关信息,例如包括但不限于活动名称、活动开始时间、活动流程、活动创办方的信息等,并在编辑完成后,操作目标应用中的控件(如提交控件),以向目标应用发送活动登记的申请请求。目标应用响应于用户的活动登记申请操作,基于待登记活动的活动相关信息生成相应的活动设立消息,并将该活动设立消息发送给分布式数据库中的指定节点,由指定节点将该活动设立消息保存至分布式数据库中。业务节点触发活动管理Actor及其对应的Mailbox运行,即活动管理Actor对应的Mailbox从分布式数据库中获取该活动设立消息;活动管理Actor从对应的Mailbox中读取该活动设立消息,基于预先定义的内部处理逻辑和该活动设立消息中携带的活动相关信息,在内部状态中记录该活动相关信息并创建针对该待登记活动的用户报名记录,生成创建成功消息,并向对应的Mailbox发送创建成功消息;活动管理Actor对应的Mailbox基于活动管理Actor的私钥对该创建成功消息进行签名,将签名后后的创建成功消息发送给指定节点,由指定节点将该签名后的创建成功消息保存至分布式数据库中。
请继续参见图3和图4,用户信息注册涉及的业务Actor可以包括上述活动管理Actor和用于对用户身份进行管理和认证的用户管理Actor。具体来说,用户端可通过查询活动管理Actor的内部状态获取活动相关信息并展示给用户,用户操作目标应用,提交包括待注册用户的身份信息等在内的注册信息,以向目标应用发送注册申请请求。目标应用响应于用户的注册申请操作,基于用户的注册信息生成注册消息,并将该注册消息发送给分布式数据库中的指定节点,由指定节点将该注册消息保存至分布式数据库中。业务节点触发用户管理Actor及其对应的Mailbox运行,即用户管理Actor对应的Mailbox从分布式数据库中获取该注册消息,用户管理Actor从对应的Mailbox中读取该注册消息,基于预先定义的内部处理逻辑和该注册消息中携带的注册信息,将该注册信息写入用户身份记录中,并向对应的Mailbox发送注册成功消息;用户管理Actor对应的Mailbox基于用户管理Actor的私钥对该注册成功消息进行签名,并向指定节点发送签名后的注册成功消息,由指定节点将该签名后的注册成功消息保存至分布式数据库中。此时,用户端可通过用户管理Actor的内部状态获取用户的注册情况。
请参见图3和图5,活动报名涉及的业务Actor包括上述活动管理Actor和用户管理Actor。具体来说,用户操作目标应用,提交包括待报名用户的身份信息和所参与活动的活动相关信息在内的报名信息,以向目标应用发送报名申请请求。目标应用响应于用户的报名申请操作,基于用户的报名信息生成报名消息,并将该报名消息发送给分布式数据库中的指定节点,由指定节点将该报名消息保存至分布式数据库中。业务节点触发用户管理Actor及其对应的Mailbox运行,即用户管理Actor从分布式数据库中获取报名消息,将基于报名消息中携带的活动相关信息从内部状态中读取该所参与活动的用户身份记录,基于该用户身份记录中的注册信息对该活动消息中携带的待报名用户的身份信息进行认证,以确定该待报名用户是否已注册,若该待报名用户已注册,则向对应的Mailbox发送报名登记消息,用户管理Actor对应的Mailbox向指定节点发送基于用户管理Actor的私钥签名后的报名登记消息,由指定节点将该签名后的报名登记消息保存至分布式数据库中。
接着,业务节点触发活动管理Actor及其对应的Mailbox,即活动管理Actor对应的Mailbox从分布式数据库中获取该报名登记消息,活动管理Actor从对应的Mailbox中读取该签名后的报名登记消息,基于预先定义的内部处理逻辑和预设的可信任用户管理Actor的公钥对该签名后的报名登记消息,以识别该报名登记消息是否由可信任用户管理Actor生成,若是,则在用户报名记录中将该待报名用户的报名状态标识为已报名,并向对应的Mailbox发送报名成功消息,活动管理Actor对应的Mailbox基于活动管理Actor的私钥对该报名成功消息进行签名,并向指定节点发送签名后的报名成功消息,由指定节点将该签名后的报名成功消息保存至分布式数据库中。此时,用户端可通过活动管理Actor的内部状态获取用户的报名情况。
本申请实施例还包括创建Actor模型的方法。具体地,在上述步骤S12之前,该方法包括:首先,业务节点可为目标应用创建Actor模型,该Actor模型包括至少一个业务Actor及业务Actor对应的Mailbox;接着,业务节点可基于确定性有限状态自动机定义至少一个业务Actor的内部处理逻辑,业务Actor的内部处理逻辑用于业务Actor进行业务处理;最后,业务节点可为至少一个业务Actor分配身份信息,该身份信息用于唯一标识该业务Actor,其中,业务Actor的身份信息可以包括业务Actor的公钥及对应的私钥。具体来说,业务Actor的内部处理逻辑可以包括业务Actor的初始状态、状态转换函数、可接受输入、状态集合以及接受状态等。
例如,业务节点可对目标应用涉及的业务进行拆解,得到一个或多个子业务,创建与子业务的数量相等的业务Actor及对应的Mailbox,并针对各个子业务,基于该子业务和确定性有限状态自动机定义该子业务对应的业务Actor的内部处理逻辑,使得该业务Actor可基于该内部处理逻辑对该子业务进行处理。
可以理解,通过该方式创建业务Actor及对应的Mailbox,使得相同的业务Actor的状态之间由于通过确定性有限状态自动机定义的内部处理逻辑的一致而一致,并且,业务Actor的状态的正确性以其内部处理逻辑上的状态为准,进而使得各个业务Actor之间互相校验和审计。
由于区块链作为一种特殊的分布式数据库,其具有良好的一致性和不可篡改的特点,因此,在较为优选的方案中,本申请实施例中的分布式数据库可以为区块链。在此情况下,考虑到业务节点中的业务Actor是基于内部处理逻辑和读取的业务消息进行处理得到,因而对于具有内部处理逻辑的业务Actor而言,其逻辑上的内部状态取决于从分布式数据库中获取的业务消息,而在分布式数据库为区块链的情况下,获取到的业务消息具备区块链不可篡改的确定性,因而业务Actor的故障可以被定位和恢复。基于此,本申请实施例提供的业务处理方法还可以将业务Actor的定义存储至分布式数据库中,以便接入分布式数据库的其他节点能够通过业务Actor的定义对业务Actor进行重建,以便基于重建的业务Actor对业务Actor进行故障定位和恢复。具体地,本申请实施例提供的业务处理方法还可以包括:首先,对于每个业务Actor,对业务Actor的公钥及内部处理逻辑进行序列化,得到业务Actor的序列化数据;接着,将业务Actor的序列化数据发送给指定节点,以使指定节点将业务Actor的序列化数据保存至区块链中。其中,业务Actor的序列化数据用于对业务Actor进行重建。
在第一种可选的实施方式中,对于每一业务Actor而言,业务节点可按照“|公钥|内部处理逻辑|”的形式对该业务Actor的公钥及内部处理逻辑进行序列化,得到该业务Actor的序列化数据。在此情况下,业务Actor的公钥可作为业务Actor的相关信息在区块链中的存储索引,进而接入区块链中的其他节点可基于业务Actor的公钥从区块链中获取业务Actor的内部处理逻辑等相关信息。由此,可进一步基于该业务Actor的内部处理逻辑和公钥重建该业务Actor。
在第二种可选的实施方式中,为了避免业务Actor的公钥及内部处理逻辑被非法节点获取和利用,可对业务Actor的公钥及内部处理逻辑进行加密后执行序列化处理。具体地,对于每个业务Actor,可计算该业务Actor的公钥的哈希值,基于该业务Actor的公钥生成加密密钥(如对称密钥),并基于加密密钥对该业务Actor的内部处理逻辑进行加密,得到处理逻辑加密数据,进一步对该业务Actor的公钥的哈希值及处理逻辑加密数据进行序列化,得到该业务Actor的序列化数据。例如,业务Actor的序列化数据可以为如下形式:“|公钥的哈希值|处理逻辑加密数据|”。在此情况下,业务Actor的公钥的哈希值可作为业务Actor的相关信息在区块链中的存储索引,进而接入区块链中的其他节点可基于业务Actor的公钥得到该哈希值及加密密钥,基于该哈希值从区块链中获取该业务Actor的序列化数据,进一步得到该业务Actor的处理逻辑加密数据,接着,基于该加密密钥对该处理逻辑加密数据进行解密,得到该业务Actor的内部处理逻辑。由此,可进一步基于该业务Actor的内部处理逻辑和公钥重建该业务Actor。
进一步地,对业务节点中业务Actor的审计和恢复可由接入区块链的监控节点实施,其中,监控节点可以是监控方的服务器,其可存储有业务节点中各业务Actor的公钥。
具体地,监控节点可从与预先创建的业务Actor中确定待检测的目标业务Actor,基于目标业务Actor的公钥从区块链中获取目标业务Actor的序列化数据,进一步地,对于上述第一种实施方式,监控节点可直接从目标业务Actor的序列化数据中获取目标业务Actor的内部处理逻辑;对于上述第二种实施方式,监控节点可计算目标业务Actor的公钥的哈希值,基于目标业务Actor的公钥衍生出加密密钥,并基于该哈希值从区块链中获取目标业务Actor的序列化数据,从该序列化数据中得到目标业务Actor的处理逻辑加密数据,以及基于该加密密钥对该处理逻辑加密数据进行解密,得到目标业务Actor的内部处理逻辑。
在得到目标业务Actor的内部处理逻辑后,监控节点可基于目标业务的公钥及内部处理逻辑创建该目标业务Actor的镜像Actor及对应的Mailbox,其中,目标业务Actor的镜像Actor与该目标业务Actor具有相同的内部处理逻辑和公钥。
接着,如图6所示,监控节点触发镜像Actor对应的Mailbox,基于目标业务Actor的公钥从区块链中获取目标业务Actor所处理的业务消息及业务处理结果,并触发镜像Actor从其对应的Mailbox中读取该业务消息,并基于内部处理逻辑对该业务消息进行处理,得到镜像Actor的业务处理结果。最后,监控节点可基于镜像Actor的业务处理结果和目标业务Actor的业务处理结果,识别目标业务Actor是否异常。
需要说明的是,目标业务Actor可以是监控方根据实际需要自定义选取的,例如,目标业务Actor可以是预先创建的部分或全部业务Actor。
可以理解,通过上述方案,由于目标业务Actor及其镜像Actor具有相同的内部处理逻辑且所处理的业务消息相同,因此,在目标业务Actor处于正常运行状态的情况下,两者的业务处理结果相同,由此可以实现对目标业务Actor的业务处理过程的复现,相较于现有的Akka集群,各个业务Actor之间的关系简单,进而使得对各个业务Actor的复现实现简单,易于对业务节点进行调试和维护;在目标业务Actor处于异常运行状态的情况下,则意味着目标业务Actor异常,进而使得存在异常的业务Actor容易被审计发现。
进一步地,在考虑到目标业务Actor存在异常时,其发送到区块链中存储的业务处理结果可能会影响后续的业务Actor或接入区块链的其他节点的业务处理结果的有效性和准确性,基于此,如图6所述,监控节点还可以触发镜像Actor对应的Mailbox将镜像Actor的业务处理结果发送给指定节点,由指定节点将该业务处理结果保存至区块链中。
在可选的方案中,监控节点在通过目标业务Actor对应的镜像Actor得到业务处理结果后,无论该业务处理结果是否与目标业务Actor的业务处理结果,都将该业务处理结果发送给指定节点,由指定节点将该业务处理结果保持至区块链中。此时,若该业务处理结果与目标业务Actor的业务处理结果相同,那么,这两个业务处理结果在区块链中的存储并不会出现冲突,仅可出现区块链上重复;若这两个业务处理结果不同,那么,镜像Actor的业务处理结果将起到对目标业务Actor的业务处理结果的修正作用,进而使得后续业务Actor或接入区块链的其他节点可以从区块链中获取正确的业务处理结果以进行后续的业务处理,保证整个业务处理过程的正常、有序进行。
在更为优选的方案中,监控节点可以在目标业务Actor异常的情况下,即镜像Actor的业务处理结果和目标业务Actor的业务处理结果不同,通过镜像Actor对应的Mailbox向指定节点发送镜像Actor的业务处理结果,以使指定节点将该镜像Actor的业务处理结果保存至区块链中。可以理解,该方案相较于前一方案,一方面可以减小监控节点的工作量,另一方面可以减小对区块链的存储资源的占用。
当然,在本申请的其他一些实施例中,业务节点也可以自行重建业务Actor并基于重建的业务Actor对业务Actor进行审计和恢复。
具体地,业务节点可从预先创建的业务Actor中确定待检测的目标业务Actor,基于目标业务Actor的公钥及内部处理逻辑创建目标业务Actor的镜像Actor及对应的Mailbox,其中,目标业务Actor的镜像Actor与该目标业务Actor具有相同的内部处理逻辑和公钥。
接着,如图6所述,业务节点可通过镜像Actor的Mailbox,基于目标业务Actor的公钥从区块链中获取目标业务Actor处理的业务消息,并基于镜像Actor对获取的业务消息进行处理,得到镜像Actor的业务处理结果。最后,业务节点可基于镜像Actor的业务处理结果和目标业务Actor的业务处理结果,识别目标业务Actor是否异常。
需要说明的是,目标业务Actor可以是业务节点根据实际需要自定义选取的,例如,目标业务Actor可以是预先创建的部分或全部业务Actor。
可以理解,通过上述方案,由于目标业务Actor及其镜像Actor具有相同的内部处理逻辑且所处理的业务消息相同,因此,在目标业务Actor处于正常运行状态的情况下,两者的业务处理结果相同,由此业务节点可以实现对目标业务Actor的业务处理过程的自动化复现;在目标业务Actor处于异常运行状态的情况下,则意味着目标业务Actor异常,因而业务节点及时审计发现存在异常的业务Actor。进一步地,在考虑到目标业务Actor存在异常时,其发送到区块链中存储的业务处理结果可能会影响后续的业务Actor或接入区块链的其他节点的业务处理结果的有效性和准确性,基于此,本申请实施例提供的上述业务处理方法中,业务节点还可以触发镜像Actor对应的Mailbox将镜像Actor的业务处理结果发送给指定节点,由指定节点将该业务处理结果保存至区块链中。
在可选的方案中,业务节点可在通过目标业务Actor对应的镜像Actor得到业务处理结果后,无论该业务处理结果是否与目标业务Actor的业务处理结果,都将该业务处理结果发送给指定节点,由指定节点将该业务处理结果保持至区块链中。此时,若该业务处理结果与目标业务Actor的业务处理结果相同,那么,这两个业务处理结果在区块链中的存储并不会出现冲突,仅可出现区块链上重复;若这两个业务处理结果不同,那么,镜像Actor的业务处理结果将起到对目标业务Actor的业务处理结果的修正作用,进而使得后续业务Actor或接入区块链的其他节点可以从区块链中获取正确的业务处理结果以进行后续的业务处理,保证整个业务处理过程的正常、有序进行。
在更为优选的方案中,业务节点可以在目标业务Actor异常的情况下,即镜像Actor的业务处理结果和目标业务Actor的业务处理结果不同,通过镜像Actor对应的Mailbox向指定节点发送镜像Actor的业务处理结果,以使指定节点将该镜像Actor的业务处理结果保存至区块链中。可以理解,该方案相较于前一方案,一方面可以减小业务节点的工作量,另一方面可以减小对区块链的存储资源的占用。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
图7是本申请的一个实施例电子设备的结构示意图。请参考图7,在硬件层面,该电子设备包括处理器,可选地还包括内部总线、网络接口、存储器。其中,存储器可能包含内存,例如高速随机存取存储器(Random-Access Memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少1个磁盘存储器等。当然,该电子设备还可能包括其他业务所需要的硬件。
处理器、网络接口和存储器可以通过内部总线相互连接,该内部总线可以是ISA(Industry Standard Architecture,工业标准体系结构)总线、PCI(PeripheralComponent Interconnect,外设部件互连标准)总线或EISA(Extended Industry StandardArchitecture,扩展工业标准结构)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图7中仅用一个双向箭头表示,但并不表示仅有一根总线或一种类型的总线。
存储器,用于存放程序。具体地,程序可以包括程序代码,所述程序代码包括计算机操作指令。存储器可以包括内存和非易失性存储器,并向处理器提供指令和数据。
处理器从非易失性存储器中读取对应的计算机程序到内存中然后运行,在逻辑层面上形成业务处理装置。处理器,执行存储器所存放的程序,并具体用于执行以下操作:
预先创建的信箱Mailbox从所述分布式数据库中获取待处理的业务消息,所述业务消息为用户端响应于用户对目标应用的业务操作生成而发送给所述分布式数据库中的指定节点、并由所述指定节点保存至所述分布式数据库中;
基于与所述Mailbox对应的业务Actor对所述业务消息进行处理,得到业务处理结果;
通过所述Mailbox向所述指定节点发送所述业务处理结果,以使所述指定节点将所述业务处理结果保存至所述分布式数据库中。
上述如本申请图2所示实施例揭示的业务处理装置执行的方法可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。
该电子设备还可执行图2的方法,并实现业务处理装置在图2至图6所示实施例的功能,本申请实施例在此不再赘述。
当然,除了软件实现方式之外,本申请的电子设备并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
本申请实施例还提出了一种计算机可读存储介质,该计算机可读存储介质存储一个或多个程序,该一个或多个程序包括指令,该指令当被包括多个应用程序的便携式电子设备执行时,能够使该便携式电子设备执行图2所示实施例的方法,并具体用于执行以下操作:
预先创建的信箱Mailbox从所述分布式数据库中获取待处理的业务消息,所述业务消息为用户端响应于用户对目标应用的业务操作生成而发送给所述分布式数据库中的指定节点、并由所述指定节点保存至所述分布式数据库中;
基于与所述Mailbox对应的业务Actor对所述业务消息进行处理,得到业务处理结果;
通过所述Mailbox向所述指定节点发送所述业务处理结果,以使所述指定节点将所述业务处理结果保存至所述分布式数据库中。
图8是本申请的一个实施例业务处理装置800的结构示意图。请参考图8,在一种软件实施方式中,业务处理装置800可包括:
第一获取模块810,用于通过预先创建的信箱Mailbox从所述分布式数据库中获取待处理的业务消息,所述业务消息为用户端响应于用户对目标应用的业务操作生成而发送给所述分布式数据库中的指定节点、并由所述指定节点保存至所述分布式数据库中;
第一业务处理模块820,用于基于与所述Mailbox对应的业务Actor对所述业务消息进行处理,得到业务处理结果;
第一发送模块830,用于通过所述Mailbox向所述指定节点发送所述业务处理结果,以使所述指定节点将所述业务处理结果保存至所述分布式数据库中。
可选地,所述装置还包括模型创建模块,所述模型创建模块用于:
为所述目标应用创建Actor模型,所述Actor模型包括至少一个业务Actor及业务Actor对应的Mailbox;
基于确定性有限状态自动机定义所述至少一个业务Actor的内部处理逻辑,所述业务Actor的内部处理逻辑用于所述业务Actor进行业务处理;
为所述至少一个业务Actor分配身份信息,所述身份信息包括公钥和私钥。
可选地,所述第一发送模块具体用于:
基于所述业务Actor的私钥对所述业务处理结果进行签名,得到处理结果签名数据;
通过所述Mailbox向所述指定节点发送所述处理结果签名数据,以使所述指定节点将所述处理结果签名数据保存至所述分布式数据库中。
可选地,所述分布式数据库为区块链,则所述装置还包括:
序列化模块,用于对于每个业务Actor,对所述业务Actor的公钥及内部处理逻辑进行序列化,得到所述业务Actor的序列化数据;
第二发送模块,用于将所述业务Actor的序列化数据发送给所述指定节点,以使所述指定节点将所述业务Actor的序列化数据保存至所述区块链中,所述业务Actor的序列化数据用于对所述业务Actor进行重建。
可选地,所述序列化模块具体用于:
对于每个业务Actor,计算所述业务Actor的公钥的哈希值;
基于所述业务Actor的公钥生成加密密钥;
基于所述加密密钥对所述业务Actor的内部处理逻辑进行加密,得到处理逻辑加密数据;
对所述公钥的哈希值和所述处理逻辑加密数据进行序列化。
可选地,所述装置还包括:
确定模块,用于从预先建立的业务Actor中确定待检测的目标业务Actor;
重建模块,用于基于所述目标业务Actor的公钥及内部处理逻辑创建所述目标业务Actor的镜像Actor及所述镜像Actor对应的Mailbox;
第二获取模块,用于通过所述镜像Actor对应的Mailbox,基于所述目标业务Actor的公钥从所述区块链中获取所述目标业务Actor处理的业务消息及业务处理结果;
第二业务处理模块,用于基于所述镜像Actor对获取的业务消息进行处理,得到所述镜像Actor的业务处理结果;
识别模块,用于基于所述镜像Actor的业务处理结果和所述目标业务Actor的业务处理结果,识别所述目标业务Actor是否异常。
可选地,所述还包括:
第三发送模块,用于在所述目标业务Actor异常的情况下,通过所述镜像Actor对应的Mailbox向所述指定节点发送所述镜像Actor的业务处理结果,以使所述指定节点将所述镜像Actor的业务处理结果保存至所述区块链中。
本申请实施例还提供一种业务处理装置,包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如本申请上述任一实施例所述的业务处理方法的步骤。
本申请实施例还提供一种业务处理系统,所述业务处理系统包括用户端和业务节点,所述用户端和所述业务节点分别接入分布式数据库中。
所述用户端,用于接收用户对目标应用的业务操作,基于所述业务操作生成业务消息并向所述分布式数据库中的指定节点发送所述业务消息,以使所述指定节点将所述业务消息保存至所述分布式数据库中。
所述业务节点,用于通过预先创建的信箱Mailbox从所述分布式数据库中获取待处理的业务消息,基于预先创建的业务Actor对所述业务消息进行处理,得到业务处理结果,以及通过所述Mailbox向所述指定节点发送所述业务处理结果,以使所述指定节点将所述业务Actor保存至所述分布式数据库中。
需要说明的是,本申请实施例提供的业务处理系统中,业务节点可执行本申请上述任一实施例提供的业务处理方法,此处不再赘述。
可选地,在分布式数据库为区块链的情况下,本申请实施例提供的业务处理系统还可以包括监控节点,其中,监控节点可以是部署于监控方的服务器,其存储有业务节点中各业务Actor的公钥,且可以接入到区块链中。监控节点具有对业务节点中业务Actor进行审计和恢复得到功能。
具体地,监控节点可从与预先创建的业务Actor中确定待检测的目标业务Actor,基于目标业务Actor的公钥从区块链中获取目标业务Actor的序列化数据,进一步地,监控节点可从目标业务Actor的序列化数据中获取目标业务Actor的内部处理逻辑。在得到目标业务Actor的内部处理逻辑后,监控节点可基于目标业务的公钥及内部处理逻辑创建该目标业务Actor的镜像Actor及对应的Mailbox,其中,目标业务Actor的镜像Actor与该目标业务Actor具有相同的内部处理逻辑和公钥。
接着,如图6所示,监控节点触发镜像Actor对应的Mailbox,基于目标业务Actor的公钥从区块链中获取目标业务Actor所处理的业务消息及业务处理结果,并触发镜像Actor从其对应的Mailbox中读取该业务消息,并基于内部处理逻辑对该业务消息进行处理,得到镜像Actor的业务处理结果。最后,监控节点可基于镜像Actor的业务处理结果和目标业务Actor的业务处理结果,识别目标业务Actor是否异常。
需要说明的是,目标业务Actor可以是监控方根据实际需要自定义选取的,例如,目标业务Actor可以是预先创建的部分或全部业务Actor。
进一步地,在考虑到目标业务Actor存在异常时,其发送到区块链中存储的业务处理结果可能会影响后续的业务Actor或接入区块链的其他节点的业务处理结果的有效性和准确性,基于此,如图6所述,监控节点还可以触发镜像Actor对应的Mailbox将镜像Actor的业务处理结果发送给指定节点,由指定节点将该业务处理结果保存至区块链中。
在可选的方案中,监控节点在通过目标业务Actor对应的镜像Actor得到业务处理结果后,无论该业务处理结果是否与目标业务Actor的业务处理结果,都将该业务处理结果发送给指定节点,由指定节点将该业务处理结果保持至区块链中。此时,若该业务处理结果与目标业务Actor的业务处理结果相同,那么,这两个业务处理结果在区块链中的存储并不会出现冲突,仅可出现区块链上重复;若这两个业务处理结果不同,那么,镜像Actor的业务处理结果将起到对目标业务Actor的业务处理结果的修正作用,进而使得后续业务Actor或接入区块链的其他节点可以从区块链中获取正确的业务处理结果以进行后续的业务处理,保证整个业务处理过程的正常、有序进行。
在更为优选的方案中,监控节点可以在目标业务Actor异常的情况下,即镜像Actor的业务处理结果和目标业务Actor的业务处理结果不同,通过镜像Actor对应的Mailbox向指定节点发送镜像Actor的业务处理结果,以使指定节点将该镜像Actor的业务处理结果保存至区块链中。可以理解,该方案相较于前一方案,一方面可以减小监控节点的工作量,另一方面可以减小对区块链的存储资源的占用。
总之,以上所述仅为本申请的较佳实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
Claims (10)
1.一种业务处理方法,其特征在于,应用于接入分布式数据库的业务节点,所述方法包括:
通过预先创建的信箱Mailbox从所述分布式数据库中获取待处理的业务消息,所述业务消息为用户端响应于用户对目标应用的业务操作生成而发送给所述分布式数据库中的指定节点、并由所述指定节点保存至所述分布式数据库中;
基于与所述Mailbox对应的业务Actor对所述业务消息进行处理,得到业务处理结果;
通过所述Mailbox向所述指定节点发送所述业务处理结果,以使所述指定节点将所述业务处理结果保存至所述分布式数据库中。
2.根据权利要求1所述的方法,其特征在于,在通过预先创建的信箱Mailbox从所述分布式数据库中获取待处理的业务消息之前,所述方法还包括:
为所述目标应用创建Actor模型,所述Actor模型包括至少一个业务Actor及业务Actor对应的Mailbox;
基于确定性有限状态自动机定义所述至少一个业务Actor的内部处理逻辑,所述业务Actor的内部处理逻辑用于所述业务Actor进行业务处理;
为所述至少一个业务Actor分配身份信息,所述身份信息包括公钥和私钥。
3.根据权利要求2所述的方法,其特征在于,通过所述Mailbox向所述指定节点发送所述业务处理结果,以使所述指定节点将所述业务处理结果保存至所述分布式数据库中,包括:
基于所述业务Actor的私钥对所述业务处理结果进行签名,得到处理结果签名数据;
通过所述Mailbox向所述指定节点发送所述处理结果签名数据,以使所述指定节点将所述处理结果签名数据保存至所述分布式数据库中。
4.根据权利要求2所述的方法,其特征在于,所述分布式数据库为区块链,则在为所述至少一个业务Actor分配身份信息之后,所述方法还包括:
对于每个业务Actor,对所述业务Actor的公钥及内部处理逻辑进行序列化,得到所述业务Actor的序列化数据;
将所述业务Actor的序列化数据发送给所述指定节点,以使所述指定节点将所述业务Actor的序列化数据保存至所述区块链中,所述业务Actor的序列化数据用于对所述业务Actor进行重建。
5.根据权利要求4所述的方法,其特征在于,对于每个业务Actor,对所述业务Actor的公钥及内部处理逻辑进行序列化,包括:
对于每个业务Actor,计算所述业务Actor的公钥的哈希值;
基于所述业务Actor的公钥生成加密密钥;
基于所述加密密钥对所述业务Actor的内部处理逻辑进行加密,得到处理逻辑加密数据;
对所述公钥的哈希值和所述处理逻辑加密数据进行序列化。
6.根据权利要求2所述的方法,其特征在于,在通过所述Mailbox向所述指定节点发送所述业务处理结果,以使所述指定节点将所述业务处理结果保存至所述分布式数据库中之后,所述方法还包括:
从预先建立的业务Actor中确定待检测的目标业务Actor;
基于所述目标业务Actor的公钥及内部处理逻辑创建所述目标业务Actor的镜像Actor及所述镜像Actor对应的Mailbox;
通过所述镜像Actor对应的Mailbox,基于所述目标业务Actor的公钥从所述区块链中获取所述目标业务Actor处理的业务消息及业务处理结果;
基于所述镜像Actor对获取的业务消息进行处理,得到所述镜像Actor的业务处理结果;
基于所述镜像Actor的业务处理结果和所述目标业务Actor的业务处理结果,识别所述目标业务Actor是否异常。
7.根据权利要求6所述的方法,其特征在于,在基于所述镜像Actor的业务处理结果和所述目标业务Actor的业务处理结果,识别所述目标业务Actor是否异常之后,所述方法还包括:
在所述目标业务Actor异常的情况下,通过所述镜像Actor对应的Mailbox向所述指定节点发送所述镜像Actor的业务处理结果,以使所述指定节点将所述镜像Actor的业务处理结果保存至所述区块链中。
8.一种业务处理装置,其特征在于,应用于接入分布式数据库的业务节点,所述装置包括:
第一获取模块,用于通过预先创建的信箱Mailbox从所述分布式数据库中获取待处理的业务消息,所述业务消息为用户端响应于用户对目标应用的业务操作生成而发送给所述分布式数据库中的指定节点、并由所述指定节点保存至所述分布式数据库中;
业务处理模块,用于基于与所述Mailbox对应的业务Actor对所述业务消息进行处理,得到业务处理结果;
第一发送模块,用于通过所述Mailbox向所述指定节点发送所述业务处理结果,以使所述指定节点将所述业务处理结果保存至所述分布式数据库中。
9.一种业务处理装置,其特征在于,包括:
存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如权利要求1至7中任一项所述的业务处理方法的步骤。
10.一种业务处理系统,其特征在于,包括用户端和业务节点,所述用户端和所述业务节点分别接入分布式数据库中;
所述用户端,用于接收用户对目标应用的业务操作,基于所述业务操作生成业务消息并向所述分布式数据库中的指定节点发送所述业务消息,以使所述指定节点将所述业务消息保存至所述分布式数据库中;
所述业务节点,用于通过预先创建的信箱Mailbox从所述分布式数据库中获取待处理的业务消息,基于预先创建的业务Actor对所述业务消息进行处理,得到业务处理结果,以及通过所述Mailbox向所述指定节点发送所述业务处理结果,以使所述指定节点将所述业务Actor保存至所述分布式数据库中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011137601.9A CN112291321B (zh) | 2020-10-22 | 2020-10-22 | 业务处理方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011137601.9A CN112291321B (zh) | 2020-10-22 | 2020-10-22 | 业务处理方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112291321A true CN112291321A (zh) | 2021-01-29 |
CN112291321B CN112291321B (zh) | 2023-08-08 |
Family
ID=74423247
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011137601.9A Active CN112291321B (zh) | 2020-10-22 | 2020-10-22 | 业务处理方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112291321B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114095468A (zh) * | 2021-11-19 | 2022-02-25 | 中国银行股份有限公司 | 消息中间件系统、邮局系统及消息收发方法 |
CN114338738A (zh) * | 2021-12-23 | 2022-04-12 | 中国联合网络通信集团有限公司 | 基于Actor模型的规则引擎及场景联动实现方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180157543A1 (en) * | 2016-12-06 | 2018-06-07 | Synchronoss Technologies, Inc. | System and method for a generic actor system container application |
CN110020543A (zh) * | 2018-12-21 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种基于区块链的数据处理方法和装置 |
CN110231995A (zh) * | 2019-05-20 | 2019-09-13 | 平安科技(深圳)有限公司 | 一种基于Actor模型的任务调度方法、装置及存储介质 |
CN110673938A (zh) * | 2019-09-23 | 2020-01-10 | 腾讯科技(深圳)有限公司 | 任务处理方法、系统、服务器及存储介质 |
-
2020
- 2020-10-22 CN CN202011137601.9A patent/CN112291321B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180157543A1 (en) * | 2016-12-06 | 2018-06-07 | Synchronoss Technologies, Inc. | System and method for a generic actor system container application |
CN110020543A (zh) * | 2018-12-21 | 2019-07-16 | 阿里巴巴集团控股有限公司 | 一种基于区块链的数据处理方法和装置 |
CN110231995A (zh) * | 2019-05-20 | 2019-09-13 | 平安科技(深圳)有限公司 | 一种基于Actor模型的任务调度方法、装置及存储介质 |
CN110673938A (zh) * | 2019-09-23 | 2020-01-10 | 腾讯科技(深圳)有限公司 | 任务处理方法、系统、服务器及存储介质 |
Non-Patent Citations (2)
Title |
---|
PHILIPP MORITZ等: "Ray: A Distributed Framework for Emerging AI Applications", 《HTTPS://ARXIV.ORG/ABS/1712.05889》 * |
柳年思水: "Ray之内部实现机制", 《HTTPS://MP.WEIXIN.QQ.COM/S?__BIZ=MZI2MJQ3MJGWMA==&MID=2247483934&IDX=1&SN=058A41DC88B89EEBBEF3CC9BC8F5FC24》, pages 1 - 7 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114095468A (zh) * | 2021-11-19 | 2022-02-25 | 中国银行股份有限公司 | 消息中间件系统、邮局系统及消息收发方法 |
CN114095468B (zh) * | 2021-11-19 | 2023-04-07 | 中国银行股份有限公司 | 消息中间件系统、邮局系统及消息收发方法 |
CN114338738A (zh) * | 2021-12-23 | 2022-04-12 | 中国联合网络通信集团有限公司 | 基于Actor模型的规则引擎及场景联动实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112291321B (zh) | 2023-08-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111401902B (zh) | 基于区块链的业务处理方法、业务处理方法、装置及设备 | |
CN108734028B (zh) | 基于区块链的数据管理方法、区块链节点及存储介质 | |
CN113468602B (zh) | 一种数据检验方法、装置及设备 | |
US11917088B2 (en) | Integrating device identity into a permissioning framework of a blockchain | |
CN110020854B (zh) | 一种基于多个区块链网络的数据存证方法及系统 | |
CN111314172B (zh) | 基于区块链的数据处理方法、装置、设备及存储介质 | |
CN111340631A (zh) | 资产转移方法、装置、设备及系统 | |
CN110162662A (zh) | 一种块链式账本中数据记录的验证方法、装置及设备 | |
CN111192146B (zh) | 区块链数据的订正方法及装置 | |
CN110020945B (zh) | 一种基于多个区块链网络的数据读取方法及系统 | |
CN110060153B (zh) | 一种基于多个区块链网络的数据存证方法及系统 | |
CN111475309A (zh) | 一种数据处理方法、装置、区块链服务系统及存储介质 | |
CN112291321B (zh) | 业务处理方法、装置及系统 | |
CN114971827A (zh) | 一种基于区块链的对账方法、装置、电子设备及存储介质 | |
CN110474775A (zh) | 一种块链式账本中的用户创建方法、装置及设备 | |
CN111669434A (zh) | 一种通信群组的建立方法、系统、装置及设备 | |
CN114266680A (zh) | 基于区块链的电子合同签约方法、装置及系统 | |
CN108710658B (zh) | 一种数据记录的存储方法及装置 | |
CN110232570B (zh) | 一种信息监管方法及装置 | |
CN111899104B (zh) | 一种业务执行方法及装置 | |
CN111464319A (zh) | 一种基于中心化块链式账本的交易存储、签名校验方法 | |
CN112507014B (zh) | 一种基于可信账本数据库的数据存储方法、装置及系统 | |
CN113761496A (zh) | 一种基于区块链的身份校验方法及装置和电子设备 | |
CN110060152B (zh) | 一种基于多个区块链网络的数据读取方法及系统 | |
CN113592645A (zh) | 数据验证的方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |