CN116932233B - 一种智能合约的微服务架构 - Google Patents
一种智能合约的微服务架构 Download PDFInfo
- Publication number
- CN116932233B CN116932233B CN202311205587.5A CN202311205587A CN116932233B CN 116932233 B CN116932233 B CN 116932233B CN 202311205587 A CN202311205587 A CN 202311205587A CN 116932233 B CN116932233 B CN 116932233B
- Authority
- CN
- China
- Prior art keywords
- micro
- service
- container
- contract
- containers
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000012545 processing Methods 0.000 claims abstract description 52
- 238000013468 resource allocation Methods 0.000 claims abstract description 26
- 230000004044 response Effects 0.000 claims abstract description 3
- 238000004891 communication Methods 0.000 claims description 30
- 238000000034 method Methods 0.000 claims description 20
- 230000008569 process Effects 0.000 claims description 8
- 238000012360 testing method Methods 0.000 claims description 8
- 241001522296 Erithacus rubecula Species 0.000 claims description 5
- 238000005259 measurement Methods 0.000 claims description 3
- 230000000737 periodic effect Effects 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 abstract description 10
- 238000013461 design Methods 0.000 description 9
- 230000000694 effects Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5077—Logical partitioning of resources; Management or configuration of virtualized resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45562—Creating, deleting, cloning virtual machine instances
-
- 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
Abstract
本发明公开了一种智能合约的微服务架构,涉及智能合约技术领域。所述架构包括有多种单合约微服务容器、对外服务接口、调用请求缓存模块、微服务架构资源分配模块、微服务容器建立模块、微服务容器释放模块、调用请求转发模块、处理结果汇总模块和区块链应用接口,其中,所述多种单合约微服务容器与在所述智能合约中的且可独立执行的多个单一合约一一对应,所述多种单合约微服务容器中的各种单合约微服务容器用于承载对应单一合约的执行服务,并通过这些模块的连接关系限定及功能限定,不但可以利用容器化技术实现智能合约微服务化,还可根据不同容器的调用请求量动态分配资源去进行响应执行,进而可提高智能合约的执行效率、可扩展性和可维护性。
Description
技术领域
本发明属于智能合约技术领域,具体涉及一种智能合约的微服务架构。
背景技术
智能合约是一种基于区块链技术的自动化协议,它允许在没有第三方干预的情况下进行可靠且安全的交易。智能合约通过利用密码学和分布式账本技术,将交易的执行和验证过程置于去中心化的网络上,从而消除了传统合同执行过程中的信任问题。
现有基于区块链的智能合约技术还处于一个初级阶段,尚有很多问题还没有解决,包括:(1)执行效率低下,即智能合约的一次执行需要全节点共识,且一个区块包含的多个合约需串行执行,导致时间开销过大,效率低下;(2)可扩展性差,即智能合约独立性极高,业务逻辑基本不对外开放,合约之间的相互调用极少,合约使用完成后很难再次利用;(3)可维护性差,即随着合约业务逻辑逐渐向复杂化发展,合约的规模也越来越庞大,而合约内部的逻辑耦合过大,导致合约的维护和更新变得极为复杂。
目前,云上的微服务技术是面向服务架构(Service Oriented Architecture,SOA)风格的一种变体,它将应用程序构建为一系列松散耦合的服务,有效的提升项目的可扩展性。在微服务体系结构中,服务是细粒度的,可将应用程序分解为不同的小型服务,以便提高小型服务的模块性,使应用程序更易于理解、开发和测试。同时这种技术也允许个体服务的架构通过不断的重构而出现,使得基于微服务的体系架构可实现持续交付和部署。因此如何将云技术中的微服务架构应用到智能合约中,使云上的智能合约以微服务的形式面向用户,进而提高智能合约的执行效率、可扩展性和可维护性,是本领域技术人员亟需研究的课题。
发明内容
本发明的目的是提供一种智能合约的微服务架构,用以解决现有基于区块链的智能合约技术所存在执行效率低下、可扩展性差和可维护性差的问题。
为了实现上述目的,本发明采用以下技术方案:
第一方面,提供了一种智能合约的微服务架构,包括有多种单合约微服务容器、对外服务接口、调用请求缓存模块、微服务架构资源分配模块、微服务容器建立模块、微服务容器释放模块、调用请求转发模块、处理结果汇总模块和区块链应用接口,其中,所述多种单合约微服务容器与在所述智能合约中的且可独立执行的多个单一合约一一对应,所述多种单合约微服务容器中的各种单合约微服务容器用于承载对应单一合约的执行服务;
所述对外服务接口,用于接收来自外部用户终端的微服务请求,其中,所述微服务请求包含有用于指示对在所述多种单合约微服务容器中的至少一种单合约微服务容器进行调用的调用请求;
所述调用请求缓存模块,通信连接所述对外服务接口,用于针对所述各种单合约微服务容器,根据所述微服务请求缓存对应的调用请求;
所述微服务架构资源分配模块,通信连接所述调用请求缓存模块,用于周期性地针对所述各种单合约微服务容器,在当前周期起始时刻根据对应的当前调用请求量确定对应的当前周期存在数量,其中,所述当前周期存在数量与所当前调用请求量正相关;
所述微服务容器建立模块,分别通信连接所述微服务架构资源分配模块和所述区块链应用接口,用于周期性地针对所述各种单合约微服务容器,在所述当前周期起始时刻判断对应的当前存在数量K是否小于对应的当前周期存在数量TK,若是,则通过所述区块链应用接口从智能合约区块链上获取对应的单一合约,然后根据预设的容器执行文件模板和对应的单一合约建立并在所述微服务架构中部署新的M个对应容器,其中,所述智能合约区块链是指已部署所述智能合约的区块链,K和TK分别表示正整数,M=TK-K;
所述微服务容器释放模块,通信连接所述微服务架构资源分配模块,用于周期性地针对所述各种单合约微服务容器,在所述当前周期起始时刻判断对应的当前存在数量K是否大于对应的当前周期存在数量TK,若是,则在所述微服务架构中释放已结束调用的N个对应容器,其中,N=K-TK;
所述调用请求转发模块,分别通信连接所述调用请求缓存模块和所述各种单合约微服务容器,用于针对所述各种单合约微服务容器,将对应的且已缓存的调用请求转发至当前仍存在的对应容器,并接收对应容器返回的且执行调用请求后所得的处理结果;
所述处理结果汇总模块,通信连接所述调用请求转发模块,用于针对所述微服务请求,汇总对应的且由所述至少一种单合约微服务容器返回的处理结果,得到对应的微服务处理结果;
所述对外服务接口,还通信连接所述处理结果汇总模块,还用于向所述外部用户终端返回与所述微服务请求对应的微服务处理结果。
基于上述发明内容,提供了一种将微服务架构应用到智能合约中并响应用户请求的微服务系统方案,即包括有多种单合约微服务容器、对外服务接口、调用请求缓存模块、微服务架构资源分配模块、微服务容器建立模块、微服务容器释放模块、调用请求转发模块、处理结果汇总模块和区块链应用接口,其中,所述多种单合约微服务容器与在所述智能合约中的且可独立执行的多个单一合约一一对应,所述多种单合约微服务容器中的各种单合约微服务容器用于承载对应单一合约的执行服务,并通过这些模块的连接关系限定及功能限定,不但可以利用容器化技术实现智能合约微服务化,还可根据不同容器的调用请求量动态分配资源去进行响应执行,进而可提高智能合约的执行效率、可扩展性和可维护性,便于实际应用和推广。
在一个可能的设计中,所述单合约微服务容器采用Docker容器实现。
在一个可能的设计中,在所述多种单合约微服务容器中的任意两种单合约微服务容器采用RESTful接口规范实现容器间通信。
在一个可能的设计中,所述调用请求缓存模块与所述微服务架构资源分配模块、所述微服务容器建立模块与所述微服务架构资源分配模块、所述微服务容器释放模块与所述微服务架构资源分配模块、所述调用请求转发模块与所述调用请求缓存模块、所述调用请求转发模块与所述各种单合约微服务容器或者所述处理结果汇总模块与所述调用请求转发模块采用长连接方式实现模块间通信。
在一个可能的设计中,所述区块链应用接口还分别通信连接所述调用请求缓存模块、所述调用请求转发模块和所述处理结果汇总模块,用于将响应所述微服务请求的处理流程数据上链存入所述智能合约区块链中。
在一个可能的设计中,针对在所述多种单合约微服务容器中的某种单合约微服务容器,根据对应的当前调用请求量确定对应的当前周期存在数量,包括:
获取在最近前X个周期中各个周期的且针对所述某种单合约微服务容器的历史调用请求增量和历史存在数量,其中,X表示大于等于3且小于等于7的正整数;
按照如下公式计算得到当前周期的且针对所述某种单合约微服务容器的调用请求预估量:
式中,表示针对所述某种单合约微服务容器的当前调用请求量,/>表示小于等于X的正整数,/>表示在最近前X个周期中自最近前一个周期起第/>个周期的且针对所述某种单合约微服务容器的历史调用请求增量,/>表示所述第/>个周期的且针对所述某种单合约微服务容器的历史存在数量;
按照如下公式计算得到针对所述某种单合约微服务容器的当前周期存在数量:
式中,表示预设的最小存在数量,/>表示当前周期的且针对所述某种单合约微服务容器的调用请求预估量/>与当前周期的且针对所述多种单合约微服务容器的调用请求预估总量的比值,/>表示微服务架构资源已知总量,/>表示预设的纯小数,/>表示单个所述某种单合约微服务容器的所需资源已知量,/>表示取整函数。
在一个可能的设计中,针对在所述多种单合约微服务容器中的某种单合约微服务容器,根据预设的容器执行文件模板和对应的单一合约建立并在所述微服务架构中部署新的M个对应容器,包括:
根据预设的容器执行文件模板和与所述某种单合约微服务容器对应的单一合约,构建与所述某种单合约微服务容器对应的镜像;
对所述镜像进行测试,并在所述镜像通过测试时,利用所述镜像建立与所述某种单合约微服务容器对应的且相同的M个新容器,其中,M=TK-K;
将所述M个新容器部署到所述微服务架构中。
在一个可能的设计中,针对在所述多种单合约微服务容器中的某种单合约微服务容器,在所述微服务架构中释放已结束调用的N个对应容器,包括:
将容器已释放数目N初始化为零;
循环地依次轮询与所述某种单合约微服务容器对应的且相同的所有已部署容器:若轮询发现某个已部署容器已结束调用,则在所述微服务架构中释放所述某个已部署容器,并使所述容器已释放数目N自加1,然后轮询下一个已部署容器,直到所述容器已释放数目N=K-TK时停止轮询,否则直接轮询下一个已部署容器。
在一个可能的设计中,针对在所述多种单合约微服务容器中的某种单合约微服务容器,将对应的且已缓存的调用请求转发至当前仍存在的对应容器,包括:
循环地依次轮询与所述某种单合约微服务容器对应的且当前仍存在的所有已部署容器:若轮询发现某个已部署容器已结束调用,则按照先入先出顺序获取与所述某种单合约微服务容器对应的且已缓存的某个调用请求,并将所述某个调用请求转发至所述某个已部署容器。
在一个可能的设计中,针对所述微服务请求,汇总对应的且由所述至少一种单合约微服务容器返回的处理结果,得到对应的微服务处理结果,包括:
汇总携带有所述微服务请求的唯一标识的且由所述至少一种单合约微服务容器返回的处理结果,得到与所述微服务请求对应的微服务处理结果,其中,所述微服务请求的唯一标识在调用请求转发时一起绑定转发,以便在返回处理结果中携带有该唯一标识。
上述方案的有益效果:
(1)本发明创造性提供了一种将微服务架构应用到智能合约中并响应用户请求的微服务系统方案,即包括有多种单合约微服务容器、对外服务接口、调用请求缓存模块、微服务架构资源分配模块、微服务容器建立模块、微服务容器释放模块、调用请求转发模块、处理结果汇总模块和区块链应用接口,其中,所述多种单合约微服务容器与在所述智能合约中的且可独立执行的多个单一合约一一对应,所述多种单合约微服务容器中的各种单合约微服务容器用于承载对应单一合约的执行服务,并通过这些模块的连接关系限定及功能限定,不但可以利用容器化技术实现智能合约微服务化,还可根据不同容器的调用请求量动态分配资源去进行响应执行,进而可提高智能合约的执行效率、可扩展性和可维护性,便于实际应用和推广。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的智能合约的微服务架构的结构示意图。
具体实施方式
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将结合附图和实施例或现有技术的描述对本发明作简单地介绍,显而易见地,下面关于附图结构的描述仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在此需要说明的是,对于这些实施例方式的说明用于帮助理解本发明,但并不构成对本发明的限定。
应当理解,尽管本文可能使用术语第一和第二等等来描述各种对象,但是这些对象不应当受到这些术语的限制。这些术语仅用于区分一个对象和另一个对象。例如可以将第一对象称作第二对象,并且类似地可以将第二对象称作第一对象,同时不脱离本发明的示例实施例的范围。
应当理解,对于本文中可能出现的术语“和/或”,其仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A、单独存在B或者同时存在A和B等三种情况;又例如,A、B和/或C,可以表示存在A、B和C中的任意一种或他们的任意组合;对于本文中可能出现的术语“/和”,其是描述另一种关联对象关系,表示可以存在两种关系,例如,A/和B,可以表示:单独存在A或者同时存在A和B等两种情况;另外,对于本文中可能出现的字符“/”,一般表示前后关联对象是一种“或”关系。
实施例:
如图1所示,本实施例第一方面提供的且智能合约的微服务架构,包括但不限于有多种单合约微服务容器、对外服务接口、调用请求缓存模块、微服务架构资源分配模块、微服务容器建立模块、微服务容器释放模块、调用请求转发模块、处理结果汇总模块和区块链应用接口,其中,所述多种单合约微服务容器与在所述智能合约中的且可独立执行的多个单一合约一一对应,所述多种单合约微服务容器中的各种单合约微服务容器用于承载对应单一合约的执行服务。由于所述智能合约本质上是实现业务逻辑的代码,因此可很好地与微服务相结合,并按照常规的微服务容器建立方式得到所述多种单合约微服务容器。为了更好地隔离任意两单一合约间的资源,使各个所述单合约微服务容器成为独立的模块,优选的,所述单合约微服务容器采用Docker容器实现。另外,还考虑不同的单一合约是运行在相互独立的不同容器之中,为实现智能合约的可扩展性(即可对至少两个单一合约进行组合使用,以便完成更为复杂的合约逻辑),须在任意两种所述单合约微服务容器之间建立通信。业界目前主要有两种方式实现微服务间的通信,一种是使用远程过程调用(RemoteProcedure Call)的方法,而另一种是使用基于RESTful接口规范的方法(如HTTP等),这两种方法各有长处,其中,RPC在性能上表现出色,而基于RESTful接口规范的方法则在调用和测试上简单方便。由于后期单一合约的组合频繁,故优选使用更为轻量级的RESTful接口规范进行通信,即在所述多种单合约微服务容器中的任意两种单合约微服务容器采用RESTful接口规范实现容器间通信。
所述对外服务接口,用于接收来自外部用户终端的微服务请求,其中,所述微服务请求包含但不限于有用于指示对在所述多种单合约微服务容器中的至少一种单合约微服务容器进行调用的调用请求。所述微服务请求即为在某个应用场景(例如网上购物场景)中需要具体应用在所述智能合约中的某个单一合约或至少两个单一合约的服务请求(例如在网上购物场景中的退款服务请求),因此可包含有用于指示对所述至少一种单合约微服务容器进行调用的调用请求,以便得到对应的处理结果。所述外部用户终端可具体但不限于包括有电脑和/或智能手机等电子设备。此外,为了区分不同的微服务请求,所述微服务请求可具有唯一标识。
所述调用请求缓存模块,通信连接所述对外服务接口,用于针对所述各种单合约微服务容器,根据所述微服务请求缓存对应的调用请求。由于所述微服务架构是面向海量用户的,因此在短时间内可能收到大量的且来自不同外部用户终端的微服务请求,使得需要针对所述各种单合约微服务容器,先缓存对应的调用请求,以便排队转发给对应容器进行执行。
所述微服务架构资源分配模块,通信连接所述调用请求缓存模块,用于周期性地针对所述各种单合约微服务容器,在当前周期起始时刻根据对应的当前调用请求量确定对应的当前周期存在数量,其中,所述当前周期存在数量与所当前调用请求量正相关。前述的周期可以但不限于具体为1小时。由于不同单合约微服务容器的调用请求量存在不均衡情况,为了提高在当前周期的合约执行效率,快速向用户返回处理结果,因此需要在当前周期起始时刻针对所述各种单合约微服务容器,根据对应的当前调用请求量确定对应的当前周期存在数量,以便分配与所当前调用请求量正相关的资源去执行对应的单一合约。
所述微服务容器建立模块,分别通信连接所述微服务架构资源分配模块和所述区块链应用接口,用于周期性地针对所述各种单合约微服务容器,在所述当前周期起始时刻判断对应的当前存在数量K是否小于对应的当前周期存在数量TK,若是,则通过所述区块链应用接口从智能合约区块链上获取对应的单一合约,然后根据预设的容器执行文件模板和对应的单一合约建立并在所述微服务架构中部署新的M个对应容器,其中,所述智能合约区块链是指已部署所述智能合约的区块链,K和TK分别表示正整数,M=TK-K。如此通过前述的微服务容器建立模块,可以在某种单合约微服务容器的当前存在数量不足时,通过建立更多的对应容器去获取更多的资源,以便更高效地去执行对应的调用请求。
所述微服务容器释放模块,通信连接所述微服务架构资源分配模块,用于周期性地针对所述各种单合约微服务容器,在所述当前周期起始时刻判断对应的当前存在数量K是否大于对应的当前周期存在数量TK,若是,则在所述微服务架构中释放已结束调用的N个对应容器,其中,N=K-TK。如此通过前述的微服务容器释放模块,可以在某种单合约微服务容器的当前存在数量过多时,及时释放对应容器,避免出现资源闲置情况。
所述调用请求转发模块,分别通信连接所述调用请求缓存模块和所述各种单合约微服务容器,用于针对所述各种单合约微服务容器,将对应的且已缓存的调用请求转发至当前仍存在的对应容器,并接收对应容器返回的且执行调用请求后所得的处理结果。
所述处理结果汇总模块,通信连接所述调用请求转发模块,用于针对所述微服务请求,汇总对应的且由所述至少一种单合约微服务容器返回的处理结果,得到对应的微服务处理结果。
所述对外服务接口,还通信连接所述处理结果汇总模块,还用于向所述外部用户终端返回与所述微服务请求对应的微服务处理结果。
由此基于前述的智能合约的微服务架构,提供了一种将微服务架构应用到智能合约中并响应用户请求的微服务系统方案,即包括有多种单合约微服务容器、对外服务接口、调用请求缓存模块、微服务架构资源分配模块、微服务容器建立模块、微服务容器释放模块、调用请求转发模块、处理结果汇总模块和区块链应用接口,其中,所述多种单合约微服务容器与在所述智能合约中的且可独立执行的多个单一合约一一对应,所述多种单合约微服务容器中的各种单合约微服务容器用于承载对应单一合约的执行服务,并通过这些模块的连接关系限定及功能限定,不但可以利用容器化技术实现智能合约微服务化,还可根据不同容器的调用请求量动态分配资源去进行响应执行,进而可提高智能合约的执行效率、可扩展性和可维护性,便于实际应用和推广。
优选的,所述调用请求缓存模块与所述微服务架构资源分配模块、所述微服务容器建立模块与所述微服务架构资源分配模块、所述微服务容器释放模块与所述微服务架构资源分配模块、所述调用请求转发模块与所述调用请求缓存模块、所述调用请求转发模块与所述各种单合约微服务容器或者所述处理结果汇总模块与所述调用请求转发模块采用长连接方式实现模块间通信。
优选的,所述区块链应用接口还分别通信连接所述调用请求缓存模块、所述调用请求转发模块和所述处理结果汇总模块,用于将响应所述微服务请求的处理流程数据上链存入所述智能合约区块链中。
优选的,针对在所述多种单合约微服务容器中的某种单合约微服务容器,根据对应的当前调用请求量确定对应的当前周期存在数量,包括但不限于有如下步骤S41~S43。
S41.获取在最近前X个周期中各个周期的且针对所述某种单合约微服务容器的历史调用请求增量和历史存在数量,其中,X表示大于等于3且小于等于7的正整数。
S42.按照如下公式计算得到当前周期的且针对所述某种单合约微服务容器的调用请求预估量:
式中,表示针对所述某种单合约微服务容器的当前调用请求量,/>表示小于等于X的正整数,/>表示在最近前X个周期中自最近前一个周期起第/>个周期的且针对所述某种单合约微服务容器的历史调用请求增量,/>表示所述第/>个周期的且针对所述某种单合约微服务容器的历史存在数量。
S43.按照如下公式计算得到针对所述某种单合约微服务容器的当前周期存在数量:
式中,表示预设的最小存在数量,/>表示当前周期的且针对所述某种单合约微服务容器的调用请求预估量/>与当前周期的且针对所述多种单合约微服务容器的调用请求预估总量的比值,/>表示微服务架构资源已知总量,/>表示预设的纯小数,/>表示单个所述某种单合约微服务容器的所需资源已知量,/>表示取整函数。
优选的,针对在所述多种单合约微服务容器中的某种单合约微服务容器,根据预设的容器执行文件模板和对应的单一合约建立并在所述微服务架构中部署新的M个对应容器,包括但不限于有如下步骤S51~S53。
S51.根据预设的容器执行文件模板和与所述某种单合约微服务容器对应的单一合约,构建与所述某种单合约微服务容器对应的镜像。
S52.对所述镜像进行测试,并在所述镜像通过测试时,利用所述镜像建立与所述某种单合约微服务容器对应的且相同的M个新容器,其中,M=TK-K。
S53.将所述M个新容器部署到所述微服务架构中。
优选的,针对在所述多种单合约微服务容器中的某种单合约微服务容器,在所述微服务架构中释放已结束调用的N个对应容器,包括但不限于有如下步骤S61~S62。
S61.将容器已释放数目N初始化为零。
S62.循环地依次轮询与所述某种单合约微服务容器对应的且相同的所有已部署容器:若轮询发现某个已部署容器已结束调用,则在所述微服务架构中释放所述某个已部署容器,并使所述容器已释放数目N自加1,然后轮询下一个已部署容器,直到所述容器已释放数目N=K-TK时停止轮询,否则直接轮询下一个已部署容器。
优选的,针对在所述多种单合约微服务容器中的某种单合约微服务容器,将对应的且已缓存的调用请求转发至当前仍存在的对应容器,包括但不限于有:循环地依次轮询与所述某种单合约微服务容器对应的且当前仍存在的所有已部署容器:若轮询发现某个已部署容器已结束调用,则按照先入先出顺序获取与所述某种单合约微服务容器对应的且已缓存的某个调用请求,并将所述某个调用请求转发至所述某个已部署容器。
优选的,针对所述微服务请求,汇总对应的且由所述至少一种单合约微服务容器返回的处理结果,得到对应的微服务处理结果,包括但不限于有:汇总携带有所述微服务请求的唯一标识的且由所述至少一种单合约微服务容器返回的处理结果,得到与所述微服务请求对应的微服务处理结果,其中,所述微服务请求的唯一标识在调用请求转发时一起绑定转发,以便在返回处理结果中携带有该唯一标识。
综上,采用本实施例所提供的且智能合约的微服务架构,具有如下技术效果:
(1)本实施例提供了一种将微服务架构应用到智能合约中并响应用户请求的微服务系统方案,即包括有多种单合约微服务容器、对外服务接口、调用请求缓存模块、微服务架构资源分配模块、微服务容器建立模块、微服务容器释放模块、调用请求转发模块、处理结果汇总模块和区块链应用接口,其中,所述多种单合约微服务容器与在所述智能合约中的且可独立执行的多个单一合约一一对应,所述多种单合约微服务容器中的各种单合约微服务容器用于承载对应单一合约的执行服务,并通过这些模块的连接关系限定及功能限定,不但可以利用容器化技术实现智能合约微服务化,还可根据不同容器的调用请求量动态分配资源去进行响应执行,进而可提高智能合约的执行效率、可扩展性和可维护性,便于实际应用和推广。
最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (9)
1.一种智能合约的微服务架构,其特征在于,包括有多种单合约微服务容器、对外服务接口、调用请求缓存模块、微服务架构资源分配模块、微服务容器建立模块、微服务容器释放模块、调用请求转发模块、处理结果汇总模块和区块链应用接口,其中,所述多种单合约微服务容器与在所述智能合约中的且可独立执行的多个单一合约一一对应,所述多种单合约微服务容器中的各种单合约微服务容器用于承载对应单一合约的执行服务;
所述对外服务接口,用于接收来自外部用户终端的微服务请求,其中,所述微服务请求包含有用于指示对在所述多种单合约微服务容器中的至少一种单合约微服务容器进行调用的调用请求;
所述调用请求缓存模块,通信连接所述对外服务接口,用于针对所述各种单合约微服务容器,根据所述微服务请求缓存对应的调用请求;
所述微服务架构资源分配模块,通信连接所述调用请求缓存模块,用于周期性地针对所述各种单合约微服务容器,在当前周期起始时刻根据对应的当前调用请求量确定对应的当前周期存在数量,其中,所述当前周期存在数量与所当前调用请求量正相关;
所述微服务容器建立模块,分别通信连接所述微服务架构资源分配模块和所述区块链应用接口,用于周期性地针对所述各种单合约微服务容器,在所述当前周期起始时刻判断对应的当前存在数量K是否小于对应的当前周期存在数量TK,若是,则通过所述区块链应用接口从智能合约区块链上获取对应的单一合约,然后根据预设的容器执行文件模板和对应的单一合约建立并在所述微服务架构中部署新的M个对应容器,其中,所述智能合约区块链是指已部署所述智能合约的区块链,K和TK分别表示正整数,M=TK-K;
所述微服务容器释放模块,通信连接所述微服务架构资源分配模块,用于周期性地针对所述各种单合约微服务容器,在所述当前周期起始时刻判断对应的当前存在数量K是否大于对应的当前周期存在数量TK,若是,则在所述微服务架构中释放已结束调用的N个对应容器,其中,N=K-TK;
所述调用请求转发模块,分别通信连接所述调用请求缓存模块和所述各种单合约微服务容器,用于针对所述各种单合约微服务容器,将对应的且已缓存的调用请求转发至当前仍存在的对应容器,并接收对应容器返回的且执行调用请求后所得的处理结果,其中,针对在所述多种单合约微服务容器中的某种单合约微服务容器,将对应的且已缓存的调用请求转发至当前仍存在的对应容器,包括:循环地依次轮询与所述某种单合约微服务容器对应的且当前仍存在的所有已部署容器:若轮询发现某个已部署容器已结束调用,则按照先入先出顺序获取与所述某种单合约微服务容器对应的且已缓存的某个调用请求,并将所述某个调用请求转发至所述某个已部署容器;
所述处理结果汇总模块,通信连接所述调用请求转发模块,用于针对所述微服务请求,汇总对应的且由所述至少一种单合约微服务容器返回的处理结果,得到对应的微服务处理结果;
所述对外服务接口,还通信连接所述处理结果汇总模块,还用于向所述外部用户终端返回与所述微服务请求对应的微服务处理结果。
2.根据权利要求1所述的微服务架构,其特征在于,所述单合约微服务容器采用Docker容器实现。
3.根据权利要求1所述的微服务架构,其特征在于,在所述多种单合约微服务容器中的任意两种单合约微服务容器采用RESTful接口规范实现容器间通信。
4.根据权利要求1所述的微服务架构,其特征在于,所述调用请求缓存模块与所述微服务架构资源分配模块、所述微服务容器建立模块与所述微服务架构资源分配模块、所述微服务容器释放模块与所述微服务架构资源分配模块、所述调用请求转发模块与所述调用请求缓存模块、所述调用请求转发模块与所述各种单合约微服务容器或者所述处理结果汇总模块与所述调用请求转发模块采用长连接方式实现模块间通信。
5.根据权利要求1所述的微服务架构,其特征在于,所述区块链应用接口还分别通信连接所述调用请求缓存模块、所述调用请求转发模块和所述处理结果汇总模块,用于将响应所述微服务请求的处理流程数据上链存入所述智能合约区块链中。
6.根据权利要求1所述的微服务架构,其特征在于,针对在所述多种单合约微服务容器中的某种单合约微服务容器,根据对应的当前调用请求量确定对应的当前周期存在数量,包括:
获取在最近前X个周期中各个周期的且针对所述某种单合约微服务容器的历史调用请求增量和历史存在数量,其中,X表示大于等于3且小于等于7的正整数;
按照如下公式计算得到当前周期的且针对所述某种单合约微服务容器的调用请求预估量:
式中,表示针对所述某种单合约微服务容器的当前调用请求量,/>表示小于等于X的正整数,/>表示在最近前X个周期中自最近前一个周期起第/>个周期的且针对所述某种单合约微服务容器的历史调用请求增量,/>表示所述第/>个周期的且针对所述某种单合约微服务容器的历史存在数量;
按照如下公式计算得到针对所述某种单合约微服务容器的当前周期存在数量:
式中,表示预设的最小存在数量,/>表示当前周期的且针对所述某种单合约微服务容器的调用请求预估量/>与当前周期的且针对所述多种单合约微服务容器的调用请求预估总量的比值,/>表示微服务架构资源已知总量,/>表示预设的纯小数,/>表示单个所述某种单合约微服务容器的所需资源已知量,/>表示取整函数。
7.根据权利要求1所述的微服务架构,其特征在于,针对在所述多种单合约微服务容器中的某种单合约微服务容器,根据预设的容器执行文件模板和对应的单一合约建立并在所述微服务架构中部署新的M个对应容器,包括:
根据预设的容器执行文件模板和与所述某种单合约微服务容器对应的单一合约,构建与所述某种单合约微服务容器对应的镜像;
对所述镜像进行测试,并在所述镜像通过测试时,利用所述镜像建立与所述某种单合约微服务容器对应的且相同的M个新容器,其中,M=TK-K;
将所述M个新容器部署到所述微服务架构中。
8.根据权利要求1所述的微服务架构,其特征在于,针对在所述多种单合约微服务容器中的某种单合约微服务容器,在所述微服务架构中释放已结束调用的N个对应容器,包括:
将容器已释放数目N初始化为零;
循环地依次轮询与所述某种单合约微服务容器对应的且相同的所有已部署容器:若轮询发现某个已部署容器已结束调用,则在所述微服务架构中释放所述某个已部署容器,并使所述容器已释放数目N自加1,然后轮询下一个已部署容器,直到所述容器已释放数目N=K-TK时停止轮询,否则直接轮询下一个已部署容器。
9.根据权利要求1所述的微服务架构,其特征在于,针对所述微服务请求,汇总对应的且由所述至少一种单合约微服务容器返回的处理结果,得到对应的微服务处理结果,包括:
汇总携带有所述微服务请求的唯一标识的且由所述至少一种单合约微服务容器返回的处理结果,得到与所述微服务请求对应的微服务处理结果,其中,所述微服务请求的唯一标识在调用请求转发时一起绑定转发,以便在返回处理结果中携带有该唯一标识。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311205587.5A CN116932233B (zh) | 2023-09-19 | 2023-09-19 | 一种智能合约的微服务架构 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311205587.5A CN116932233B (zh) | 2023-09-19 | 2023-09-19 | 一种智能合约的微服务架构 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116932233A CN116932233A (zh) | 2023-10-24 |
CN116932233B true CN116932233B (zh) | 2023-12-08 |
Family
ID=88390180
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311205587.5A Active CN116932233B (zh) | 2023-09-19 | 2023-09-19 | 一种智能合约的微服务架构 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116932233B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105631196A (zh) * | 2015-12-22 | 2016-06-01 | 中国科学院软件研究所 | 一种面向微服务架构的容器级弹性资源供给系统及方法 |
CN108833161A (zh) * | 2018-06-11 | 2018-11-16 | 北京航空航天大学 | 一种建立基于雾计算的智能合约微服务模型的方法 |
CN108989389A (zh) * | 2018-06-11 | 2018-12-11 | 北京航空航天大学 | 一种建立智能合约微服务化的方法 |
CN111491006A (zh) * | 2020-03-03 | 2020-08-04 | 天津大学 | 负载感知的云计算资源弹性分配系统及方法 |
WO2022178730A1 (zh) * | 2021-02-24 | 2022-09-01 | 西门子股份公司 | 微服务资源分配方法、装置和计算机可读介质 |
CN115086394A (zh) * | 2022-06-15 | 2022-09-20 | 亚信科技(中国)有限公司 | 业务信息处理方法、装置及电子设备 |
WO2023110301A1 (de) * | 2021-12-15 | 2023-06-22 | Krones Ag | Verfahren zum durchführen eines einstellbetriebs einer behältnisinspektionsvorrichtung und behältnisinspektionsvorrichtung |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8656402B2 (en) * | 2005-08-26 | 2014-02-18 | International Business Machines Corporation | Incremental web container growth to control startup request flooding |
US11765225B2 (en) * | 2019-03-18 | 2023-09-19 | Reliance Jio Infocomm Limited | Systems and methods for microservice execution load balancing in virtual distributed ledger networks |
-
2023
- 2023-09-19 CN CN202311205587.5A patent/CN116932233B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105631196A (zh) * | 2015-12-22 | 2016-06-01 | 中国科学院软件研究所 | 一种面向微服务架构的容器级弹性资源供给系统及方法 |
CN108833161A (zh) * | 2018-06-11 | 2018-11-16 | 北京航空航天大学 | 一种建立基于雾计算的智能合约微服务模型的方法 |
CN108989389A (zh) * | 2018-06-11 | 2018-12-11 | 北京航空航天大学 | 一种建立智能合约微服务化的方法 |
CN111491006A (zh) * | 2020-03-03 | 2020-08-04 | 天津大学 | 负载感知的云计算资源弹性分配系统及方法 |
WO2022178730A1 (zh) * | 2021-02-24 | 2022-09-01 | 西门子股份公司 | 微服务资源分配方法、装置和计算机可读介质 |
WO2023110301A1 (de) * | 2021-12-15 | 2023-06-22 | Krones Ag | Verfahren zum durchführen eines einstellbetriebs einer behältnisinspektionsvorrichtung und behältnisinspektionsvorrichtung |
CN115086394A (zh) * | 2022-06-15 | 2022-09-20 | 亚信科技(中国)有限公司 | 业务信息处理方法、装置及电子设备 |
Non-Patent Citations (1)
Title |
---|
基于容器的微服务架构的浅析;陈春霞;;信息系统工程(第03期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116932233A (zh) | 2023-10-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109218355B (zh) | 负载均衡引擎,客户端,分布式计算系统以及负载均衡方法 | |
CN103442049B (zh) | 一种面向构件的混合型云操作系统体系结构及其通信方法 | |
CN111091429A (zh) | 电子票据标识分配方法及装置、电子票据生成系统 | |
US11210131B2 (en) | Method and apparatus for assigning computing task | |
CN106850788A (zh) | 面向多源异构地理信息资源的集成框架及集成方法 | |
CN109783229A (zh) | 线程资源分配的方法及装置 | |
CN104079630A (zh) | 一种业务服务端负载均衡方法、客户端、服务端以及系统 | |
CN106209682A (zh) | 业务调度方法、装置和系统 | |
JPH11259443A (ja) | クライアント要求をスケジュ―ルしディスパッチする装置及び方法 | |
CN102810069A (zh) | 一种java对象的请求和响应方法、装置、系统和终端 | |
CN110134534B (zh) | 基于nio针对大数据分布式系统进行消息处理优化的系统及方法 | |
CN103777950B (zh) | 一种对aos遥测数据解析的网格化方法 | |
CN113691611B (zh) | 一种区块链的分布式高并发事务处理方法及系统、设备、存储介质 | |
CN109104368B (zh) | 一种请求连接方法、装置、服务器及计算机可读存储介质 | |
CN110430142A (zh) | 用于控制流量的方法和装置 | |
CN110166507A (zh) | 多资源调度方法和装置 | |
CN110308986A (zh) | 基于优化调度的容器云上分布式训练数据通信的方法 | |
CN104052677A (zh) | 单一数据源的软负载均衡方法和装置 | |
CN109729113A (zh) | 管理专用处理资源的方法、服务器系统和计算机程序产品 | |
CN114710571A (zh) | 数据包处理系统 | |
CN109309646A (zh) | 一种多媒体转码方法和系统 | |
CN105049372A (zh) | 一种扩展消息中间件吞吐量的方法及系统 | |
CN109586970A (zh) | 资源分配方法、装置及系统 | |
CN116932233B (zh) | 一种智能合约的微服务架构 | |
CN112866985A (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 |