CN116894010A - 资源状态处理方法和装置、电子设备及存储介质 - Google Patents

资源状态处理方法和装置、电子设备及存储介质 Download PDF

Info

Publication number
CN116894010A
CN116894010A CN202310870170.4A CN202310870170A CN116894010A CN 116894010 A CN116894010 A CN 116894010A CN 202310870170 A CN202310870170 A CN 202310870170A CN 116894010 A CN116894010 A CN 116894010A
Authority
CN
China
Prior art keywords
state
resource
request
key
resource state
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.)
Pending
Application number
CN202310870170.4A
Other languages
English (en)
Inventor
踪训杰
李宗金
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
China Resources Digital Technology Co Ltd
Original Assignee
China Resources Digital Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by China Resources Digital Technology Co Ltd filed Critical China Resources Digital Technology Co Ltd
Priority to CN202310870170.4A priority Critical patent/CN116894010A/zh
Publication of CN116894010A publication Critical patent/CN116894010A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/14Details of searching files based on file metadata
    • G06F16/148File search processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/164File meta data generation

Abstract

本申请提供了一种资源状态处理方法和装置、电子设备及存储介质,属于区块链应用技术领域,通过获取资源状态请求,响应于资源状态请求,获取区块链上以键值对形式记录的第一资源状态,根据第一资源状态查询预设服务器的资源状态,得到第二资源状态。将资源状态存储在区块链上,对状态文件的处理操作变为对资源状态键值对的处理操作,提升了状态处理的速度,提升了对象体验。

Description

资源状态处理方法和装置、电子设备及存储介质
技术领域
本申请涉及区块链应用技术领域,尤其涉及一种资源状态处理方法和装置、电子设备及存储介质。
背景技术
状态记录的是架构管理工具terraform管理的运行资源状态。在使用terraform时,状态会存放在状态文件中,状态文件存储在本地或者远端。当terraform管理的资源越来越多时,状态文件会越来越大,状态变更时读取文件、比对状态、修改状态文件、保存状态文件的时间也会越来越长,对象体验变差。如何提高对状态的处理效率,成为了亟待解决的问题。
发明内容
本申请实施例的主要目的在于提出一种资源状态处理方法和装置、电子设备及存储介质,旨在提高对资源状态的处理效率。
为实现上述目的,本申请实施例的第一方面提出了一种资源状态处理方法,所述方法包括:
获取资源状态请求;
响应于所述资源状态请求,获取区块链上以键值对形式记录的第一资源状态;
根据所述第一资源状态查询预设服务器的资源状态,得到第二资源状态。
在一些实施例,在所述根据所述第一资源状态查询预设服务器的资源状态,得到第二资源状态之后,所述资源状态处理方法还包括:
根据所述第二资源状态更新所述第一资源状态,以使所述第二资源状态与所述第一资源状态相同;
根据所述资源状态请求对更新后的所述第一资源状态进行资源状态处理。
在一些实施例,所述资源状态请求包括新增资源状态请求,所述根据所述资源状态请求对更新后的所述第一资源状态进行资源状态处理,包括:
若所述资源状态请求为所述新增资源状态请求,则从所述新增资源状态请求中提取出新增资源状态;
将所述新增资源状态记录入更新后的所述第一资源状态。
在一些实施例,所述资源状态请求包括删除资源状态请求,所述根据所述资源状态请求对更新后的所述第一资源状态进行资源状态处理,包括:
若所述资源状态请求为所述删除资源状态请求,则从所述删除资源状态请求中提取出待删除资源状态;
从更新后的所述第一资源状态删除所述待删除资源状态。
在一些实施例,第一资源状态包括多个键值对,所述键值对包括第一状态键和第一状态值,所述资源状态请求包括修改资源状态请求,所述根据所述资源状态请求对更新后的所述第一资源状态进行资源状态处理,包括:
若所述资源状态请求为所述修改资源状态请求,则从所述修改资源状态请求中提取出待修改资源状态;所述待修改资源状态包括待修改状态键和待修改状态值;
若所述待修改状态键和所述第一状态键相同,则根据所述待修改状态值更新所述第一状态值。
在一些实施例,所述资源状态请求包括资源状态变更查询请求,所述根据所述资源状态请求对更新后的所述第一资源状态进行资源状态处理,包括:
若所述资源状态请求为所述资源状态变更查询请求,则从所述资源状态变更查询请求提取出待查询状态键;根据所述待查询状态键从更新后的所述第一资源状态中查询出所述待查询状态键对应的待查询状态值;所述待查询状态值包括历史状态值和当前状态值;
或者,
若所述资源状态请求为所述资源状态变更查询请求,则从更新后的所述第一资源状态提取出所有状态键和所有状态键对应的历史状态值;根据所有状态键和所述状态键对应的历史状态值,得到多个键值对;按照变更时间对多个键值对进行排序。
在一些实施例,所述资源状态请求包括资源状态回滚请求,所述根据所述资源状态请求对更新后的所述第一资源状态进行资源状态处理,包括:
若所述资源状态请求为所述资源状态回滚请求,则从所述资源状态回滚请求提取出待回滚状态键和待回滚状态值;根据所述待回滚状态键从更新后的所述第一资源状态中查询出所述待回滚状态键对应的当前状态值;根据所述待回滚状态值更新所述当前状态值;
或者,
若所述资源状态请求为所述资源状态回滚请求,则从所述资源状态回滚请求提取出指定时间;从更新后的所述第一资源状态获取变更时间处于所述指定时间之后的第一键值对,第一键值对包括第二状态键和第二状态值;获取变更时间处于所述指定时间之前的第二键值对,所述第二键值对包括第三状态键和第三状态值,所述第二状态键和所述第三状态键相同;根据所述第三状态值更新所述第二状态值。
为实现上述目的,本申请实施例的第二方面提出了一种资源状态处理装置,所述装置包括:
第一获取模块,用于获取资源状态请求;
第二获取模块,用于响应于所述资源状态请求,获取区块链上以键值对形式记录的第一资源状态;
查询模块,用于根据所述第一资源状态查询预设服务器的资源状态,得到第二资源状态。
为实现上述目的,本申请实施例的第三方面提出了一种电子设备,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的资源状态处理方法。
为实现上述目的,本申请实施例的第四方面提出了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面所述的资源状态处理方法。
本申请提出的资源状态处理方法、资源状态处理装置、电子设备及计算机可读存储介质,通过获取资源状态请求,响应于资源状态请求,获取区块链上以键值对形式记录的第一资源状态,通过将资源状态存储在区块链上,对状态文件的处理操作变为对资源状态键值对的处理操作,提升了状态处理的速度,提升了对象体验。根据第一资源状态查询预设服务器的资源状态,得到第二资源状态,能够根据键值对对预设服务器上的资源状态进行细粒度的查询,提高了数据处理的效率。
附图说明
图1是本申请实施例提供的资源状态处理方法的流程图;
图2是本申请实施例提供的资源状态处理方法的另一流程图;
图3是图2中的步骤S220的流程图;
图4是图2中的步骤S220的另一流程图;
图5是图2中的步骤S220的另一流程图;
图6是图2中的步骤S220的另一流程图;
图7是图2中的步骤S220的另一流程图;
图8是本申请实施例提供的资源状态处理装置的结构示意图;
图9是本申请实施例提供的电子设备的硬件结构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
需要说明的是,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
terraform是一个构建、更改和合并基础架构的架构管理工具,可用于管理各种资源状态。在使用terraform时,状态会存放在状态文件中,状态文件可以本地存储或者远端存储,状态记录的是terraform管理的资源状态。当terraform管理的资源越来越多时,状态文件会越来越大,状态变更时读取文件、比对状态、修改状态文件、保存状态文件的时间也会越来越长,对象体验变差。如何提高对状态的处理效率,成为了亟待解决的问题。
基于此,本申请实施例提供了一种资源状态处理方法、资源状态处理装置、电子设备及计算机可读存储介质,旨在提高对资源状态的处理效率。
本申请实施例提供的资源状态处理方法、资源状态处理装置、电子设备及计算机可读存储介质,具体通过如下实施例进行说明,首先描述本申请实施例中的资源状态处理方法。
本申请实施例提供的资源状态处理方法,涉及区块链应用技术领域。本申请实施例提供的资源状态处理方法可应用于终端中,也可应用于服务器端中,还可以是运行于终端或服务器端中的软件。在一些实施例中,终端可以是智能手机、平板电脑、笔记本电脑、台式计算机等;服务器端可以配置成独立的物理服务器,也可以配置成多个物理服务器构成的服务器集群或者分布式系统,还可以配置成提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN以及大数据和人工智能平台等基础云计算服务的云服务器;软件可以是实现资源状态处理方法的应用等,但并不局限于以上形式。
本申请可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
需要说明的是,在本申请的各个具体实施方式中,当涉及到需要根据对象信息、对象行为数据,对象历史数据以及对象位置信息等与对象身份或特性相关的数据进行相关处理时,都会先获得对象的许可或者同意,而且,对这些数据的收集、使用和处理等,都会遵守相关法律法规和标准。此外,当本申请实施例需要获取对象的个人信息时,会通过弹窗或者跳转到确认页面等方式获得对象的单独许可或者单独同意,在明确获得对象的单独许可或者单独同意之后,再获取用于使本申请实施例能够正常运行的必要的对象相关数据。
图1是本申请实施例提供的资源状态处理方法的一个可选的流程图,图1中的方法可以包括但不限于包括步骤S110至步骤S130。
步骤S110,获取资源状态请求;
步骤S120,响应于资源状态请求,获取区块链上以键值对形式记录的第一资源状态;
步骤S130,根据第一资源状态查询预设服务器的资源状态,得到第二资源状态。
本申请实施例所示意的步骤S110至步骤S130,通过将terraform管理的资源状态存储在区块链上,对状态文件中资源状态的处理操作变为对区块链上对应资源状态键值对的处理操作,可以做到细粒度的状态处理,提升了状态处理的速度,提升了对象体验。
在一些实施例的步骤S110中,terraform管理的资源状态存储在状态文件中,状态文件为json格式,资源状态可以是主机、网络、磁盘、安全组等的关联关系及其运行关闭等状态。状态文件又称tf文件,是使用terraform HCL语法编写的用来声明资源及资源关系的文件,terraform可以使用tf文件进行资源管理。在将资源状态存储到区块链之前,需要设计区块链智能合约存储资源状态的方式。在存储方式上,将资源状态从json存储格式转变为细粒度的键值对存储,键值对包括状态键和状态值。状态键用于表征资源信息,资源信息可以是资源名称或者资源ID等,状态键表示为key或者k。若状态文件中的资源状态为resources[resource1块,resource2块],状态键的最小单位为resource级别,例如resource1、resource2等。状态值除了记录资源的静态信息、动态信息外,还记录资源的版本信息,状态值表示为value或者v。静态信息为资源的属性信息,例如磁盘剩余容量、CPU使用率、代码存储地址等。动态信息可以是资源的运行状态信息,例如当前进程处于运行状态、当前进程处于阻塞状态等。版本信息可以是版本号。版本号用于区分状态文件,当执行apply操作时,资源状态会发生变更,需要修改状态文件,并将状态文件的版本号加一和变更前的原有状态文件进行区分。本申请实施例取消原有整体状态文件的版本号,将版本号存储于状态值中,并使用智能合约进行版本管理,版本号只能线性增加,比如当前是版本1,下次是版本2,不能外部或手动改变版本号。键值对中每个key对应的value都保存自己的版本信息,实现了版本信息的细粒度存储。键值对所存储的资源状态和真实世界资源一对一映射,真实世界资源可以为云主机服务器等资源的状态。
在进行资源状态存储时,可以在智能合约中设计一个key-value形式的数据结构,利用该数据结构的value存放所有资源状态的状态键。也可以在智能合约中设计一个map形式的数据结构,利用该数据结构管理所有状态键和状态值。或者在存储的状态键前进行特殊标记。这三种方式都能获得所有存储键值对的状态键,状态键对应的状态值可以单独查询获得。获取智能合约下存储的所有键值对,所有键值对的当前值便为terraform所管理资源的当前资源状态。智能合约存储的键值对以区块链交易的形式记录在区块链上。
在一些实施例,元数据和状态文件内容一起存放在状态值中,元数据是描述数据属性的信息。例如,元数据可以是描述存储顺序的信息,可通过元数据标记状态值先存储资源的静态信息,再存储资源的动态信息,接着存储版本信息,最后存储状态文件描述信息。元数据也可以是上一版本的状态文件数据的存储地址,用于追溯上一版本的资源状态。
使用terraform启动一个docker,tf文件描述如下:
此时键值对至少有3个,一个用来描述provider:kreuzwerkey/docker,一个用来描述docker_image,一个用来描述docker_container,状态值除了需要记录原有状态文件内容,还需要包含新生成的状态文件内容及当前资源变更的版本信息。
terraform客户端接收来自对象的资源状态请求,以根据资源状态请求对区块链上存储的资源状态进行细粒度的变更。
在一些实施例的步骤S120中,响应于资源状态请求,terraform客户端获取区块链上以键值对形式记录的第一资源状态,第一资源状态为区块链上记录的所有键值对信息,第一资源状态包括多个键值对。第一资源状态在terraform客户端首次执行apply操作时生成。
在一些实施例的步骤S130中,terraform客户端根据第一资源状态请求真实世界资源状态,得到第二资源状态,第二资源状态可根据状态键中指明的provider来获取。具体地,可根据第一资源状态的状态键按键查询远端资源状态,得到第二资源状态。第二资源状态可以是服务器集群上存储的资源状态,服务器可以是云服务器、云数据库等。
请参阅图2,在一些实施例中,在步骤S130之后,资源状态处理方法还可以包括但不限于包括S210至步骤S220:
步骤S210,根据第二资源状态更新第一资源状态,以使第二资源状态与第一资源状态相同;
步骤S220,根据资源状态请求对更新后的第一资源状态进行资源状态处理。
在一些实施例的步骤S210中,比对第一资源状态和第二资源状态,若第一资源状态和第二资源状态相同,说明区块链上存储的资源状态和真实世界资源状态相同,则不必更新第一资源状态。若第一资源状态和第二资源状态不相同,说明区块链上存储的资源状态和真实世界资源状态不相同,需要根据第二资源状态更新第一资源状态,通过调用区块链智能合约提供的资源同步刷新接口,将区块链上的资源状态与真实世界资源状态同步一致。
在一些实施例的步骤S220中,根据客户端发送的各种资源状态请求对更新后的第一资源状态进行与资源状态请求匹配的处理操作。
通过上述步骤S210至步骤S220,可以根据资源状态请求对区块链上以键值对形式存储的资源状态进行处理,以使处理后的资源状态满足客户端用户的需求。
请参阅图3,在一些实施例中,资源状态请求包括新增资源状态请求,步骤S220可以包括但不限于包括步骤S310至步骤S320:
步骤S310,若资源状态请求为新增资源状态请求,则从新增资源状态请求中提取出新增资源状态;
步骤S320,将新增资源状态记录入更新后的第一资源状态。
在一些实施例的步骤S310中,根据不同的资源状态请求对更新后的第一资源状态进行不同的资源状态处理,以正确响应资源状态请求。可以理解的是,可通过多个terraform客户端接收资源状态请求,同一terraform客户端可同时接收来自不同对象的资源状态请求。比对配置声明文件和第一资源状态,当发现新增资源时,生成新增资源状态请求,配置声明文件为对象使用terraform HCL语法编写的状态文件。比对配置声明文件中的资源名称信息和第一资源状态的状态键,若该资源名称信息在第一资源状态中不存在,说明配置声明文件中出现了新增资源,则调用区块链智能合约提供的新增接口,创建新的kv键值对。将资源名称信息存储于k中,得到新增状态键。将资源名称信息对应的资源静态信息、动态信息、版本信息等存储于v中,得到新增状态值。根据新增状态键和新增状态值生成新增资源状态请求。terraform客户端接收到新增资源状态请求,从新增资源状态请求中提取出新增资源状态,新增资源状态包括新增状态键和新增状态值。
在一些实施例的步骤S320中,将新增资源状态记录入区块链,以变更区块链上存储的更新后的第一资源状态,并向预设服务器发送启动新资源的指令,使得第二资源状态中包括有该新增资源状态,以使真实世界资源与第一资源状态保持相同。启动新资源可以是创建一台云主机。
通过上述步骤S310至步骤S320,能够根据新增资源状态请求将新增资源以键值对的形式记录入区块链,而非一直读取状态文件,将新增资源存储至状态文件的末尾,提高了新增资源状态的速度。
请参阅图4,在一些实施例中,资源状态请求包括删除资源状态请求,步骤S220可以包括但不限于包括步骤S410至步骤S420:
步骤S410,若资源状态请求为删除资源状态请求,则从删除资源状态请求中提取出待删除资源状态;
步骤S420,从更新后的第一资源状态删除待删除资源状态。
在一些实施例的步骤S410中,比对配置声明文件和第一资源状态,当发现资源删除时,调用区块链智能合约提供的删除接口,生成删除资源状态请求。比对配置声明文件中的资源名称信息和第一资源状态的状态键,若第一资源状态包括配置声明文件中不存在资源的状态键,调用区块链智能合约提供的删除接口,将该状态键作为待删除状态键,将该状态键对应的状态值作为待删除状态值,根据待删除状态键和待删除状态值生成删除资源状态请求。terraform客户端接收删除资源状态请求,从删除资源状态请求提取出待删除状态键和待删除状态值作为待删除资源状态。
在一些实施例的步骤S420中,从区块链上存储的更新后的第一资源状态中删除待删除资源状态,以变更区块链上存储的更新后的第一资源状态,并向预设服务器发送删除资源的指令,从第二资源状态删除该待删除资源状态,以使真实世界资源状态与第一资源状态保持相同。
可以理解的是,删除资源状态请求中可以仅包含待删除状态键,根据该待删除状态键进行按键查询,可从更新后的第一资源状态中定位到待删除状态值,并删除该待删除状态键和该待删除状态值。
通过上述步骤S410至步骤S420,能够根据删除资源状态请求以键值对的形式删除记录入区块链的资源状态,以达到对区块链资源状态的细粒度变更,同时提高了资源状态删除的效率。
请参阅图5,在一些实施例中,第一资源状态包括多个键值对,键值对包括第一状态键和第一状态值,资源状态请求包括修改资源状态请求,步骤S220可以包括但不限于包括步骤S510至步骤S520:
步骤S510,若资源状态请求为修改资源状态请求,则从修改资源状态请求中提取出待修改资源状态;待修改资源状态包括待修改状态键和待修改状态值;
步骤S520,若待修改状态键和第一状态键相同,则根据待修改状态值更新第一状态值。
在一些实施例的步骤S510中,比对配置声明文件和第一资源状态,当发现资源变更时,调用区块链智能合约提供的修改接口,生成修改资源状态请求。比对配置声明文件中的资源名称信息和第一资源状态的状态键,若第一资源状态的第一状态键和配置声明文件中的资源名称信息相同,则继续比对第一状态键的第一状态值和资源名称信息对应的取值,若第一状态值和该取值不相同,调用区块链智能合约提供的修改接口,将该第一状态键作为待修改状态键,将资源名称信息对应的取值作为待修改状态值,根据待修改状态键和待修改状态值生成修改资源状态请求。terraform客户端接收修改资源状态请求,从修改资源状态请求提取出待修改状态键和待修改状态值作为待修改资源状态。
在一些实施例的步骤S520中,若待修改状态键和第一状态键相同,则根据待修改状态值更新第一状态值,以将第一状态值变更为待修改状态值。同时,向预设服务器发送修改资源的指令,利用待修改状态值变更第二资源状态对应的状态值,以使真实世界资源状态与区块链上存储的第一资源状态保持一致。需要说明的是,资源状态修改之前的状态值即第一状态值会记录在区块链账本中。
区块链是分布式多节点,可进行多方协作,不同节点上均可发送交易,不同节点上的交易会落到同一个账本中进行维护,对交易的排序打包出块是由共识算法帮忙实现的。可以理解的是,多对象访问区块链不同节点,同时操作智能合约,只需要获得智能合约发布者的授权即可。没有获得授权的参与方,按照区块链智能合约的校验要求,交易被视为非法交易不会更新区块链账本,并不会影响区块链上的状态数据。
由于资源状态使用细粒度kv控制,涉及不同资源的操作,由于是对不同key进行操作,在区块链中可以并行执行。当涉及到相同资源的变更,基于共识算法将目标状态值变更为待变更状态值,区块链的共识算法保证先到先得,相同时间只有一个能执行成功,保证了状态的全局统一和唯一性。先到先得指的是对相同key的同一版本进行变更操作,最先提交到区块链共识节点的变更将会成功,后面提交的交易会被拒绝。
需要说明的是,对于共识算法,不同的区块链具有不同的实现方式,例如可以使用交易池,同一时间相同的交易在交易池中只有一个。或者,对相同key的操作进行读写校验,保证只有一个操作会校验成功。区块链可以是私有链、公有链或者联盟链。
在一些实施例,为了保证链上资源状态数据的安全,需要对所有kv键值对进行加密、哈希处理,即对状态键进行加密后再进行哈希处理,对状态值进行加密处理。多方协作时,可采用区块链各参与方均知道的非对称公钥进行kv键值对的加密,使用各参与方均知道的非对称私钥进行kv键值对的解密,并使用参与方自身的私钥对提交至区块链的交易进行签名,区块链记账节点使用参与方自身的公钥对签名进行验证,来保证链上资源状态数据的安全。通过共识算法使得相同时间只有一个变更操作会执行成功,保证了区块链上资源状态的全局统一性和唯一性。同时,提升了状态变更速度,带来了更好的对象体验。
通过上述步骤S510至步骤S520,能够快速修改区块链上的资源状态,降低了读取状态文件、修改状态文件、比对状态、保存状态文件的时间。
请参阅图6,在一些实施例中,资源状态请求包括资源状态变更查询请求,步骤S220可以包括但不限于包括步骤S610或者步骤S620:
步骤S610,若资源状态请求为资源状态变更查询请求,则从资源状态变更查询请求提取出待查询状态键;根据待查询状态键从更新后的第一资源状态中查询出待查询状态键对应的待查询状态值;待查询状态值包括历史状态值和当前状态值;
步骤S620,若资源状态请求为资源状态变更查询请求,则从更新后的第一资源状态提取出所有状态键和所有状态键对应的历史状态值;根据所有状态键和状态键对应的历史状态值,得到多个键值对;按照变更时间对多个键值对进行排序。
在一些实施例的步骤S610中,由于区块链的账本结构特性,将资源状态从当前世界状态中移除或者修改资源状态,通过调用区块链智能合约提供的历史溯源查询接口,依然能够查询到历史变更信息。历史溯源查询接口包括单独资源溯源查询接口和整体资源溯源查询接口。若资源状态请求为资源状态变更查询请求,从资源状态变更查询请求提取出待查询状态键,通过区块链智能合约查询待查询状态键对应的单独资源溯源查询接口,调用单独资源溯源查询接口查询,从区块链上更新后的第一资源状态中查询出待查询状态键对应的待查询状态值,待查询状态值包括历史状态值和当前状态值,历史状态值为待查询状态键所有历史版本的状态值,当前状态值为待查询状态键当前版本的状态值。
在一些实施例的步骤S620中,若资源状态请求为资源状态变更查询请求,调用整体资源溯源查询接口获取智能合约内存储的所有键值对状态键对应状态值的历史变更信息,即从更新后的第一资源状态提取出所有状态键和所有状态键对应的历史状态值,根据所有状态键和状态键对应的历史状态值,得到多个键值对,对于同一状态键的多个键值对,按照历史状态值的变更时间对这多个键值对进行排序,直至完成所有状态键的排序,将排序结果返回给对象。
通过上述步骤S610至步骤S620,能够方便对terraform资源状态的历史变更信息进行溯源查询。
请参阅图7,在一些实施例中,资源状态请求包括资源状态回滚请求,步骤S220可以包括但不限于包括步骤S710或者步骤S720:
步骤S710,若资源状态请求为资源状态回滚请求,则从资源状态回滚请求提取出待回滚状态键和待回滚状态值;根据待回滚状态键从更新后的第一资源状态中查询出待回滚状态键对应的当前状态值;根据待回滚状态值更新当前状态值;
步骤S720,若资源状态请求为资源状态回滚请求,则从资源状态回滚请求提取出指定时间;从更新后的第一资源状态获取变更时间处于指定时间之后的第一键值对,第一键值对包括第二状态键和第二状态值;获取变更时间处于指定时间之前的第二键值对,第二键值对包括第三状态键和第三状态值,第二状态键和第三状态键相同;根据第三状态值更新第二状态值。
在一些实施例的步骤S710中,首先调用单独资源溯源查询接口查询待查询状态键对应的待查询状态值,然后调用智能合约提供的细粒度回滚接口,指定资源的历史版本,即从待查询状态值中指定待查询状态键对应的状态值作为待回滚状态值,将待查询状态键作为待回滚状态键,根据待回滚状态键和待回滚状态值生成资源状态回滚请求,以根据资源状态回滚请求进行terraform版本回滚操作。从资源状态回滚请求提取出待回滚状态键和待回滚状态值,根据待会滚状态键从更新后的第一资源状态中查询出待回滚状态键对应的当前状态值,将当前状态值变更为待回滚状态值。回滚操作成功后,智能合约使用指定历史版本的状态值作为当前最新版本的状态值,进行当前指定资源状态值的内容覆盖。
资源状态的状态键key在版本变动中是不变的,不同资源状态拥有不同的key。若key有1、2、3历史版本,当前版本为4,可以指定key使用版本3的状态值value作为最新版本5的状态值value内容,回滚操作后,当前资源key的属性就变为对应版本3的内容,即修改后版本5的value变为版本3的value内容。需要说明的是,版本和value一旦生成无法修改,只能在下一个版本中修改,这是由区块链账本追加特性决定的。回滚后,真实世界的资源属性会回退到版本3时的属性状态。
terraform使用区块链上记录的kv键值对value中的tf元数据进行apply操作,以进行版本回滚。apply操作是terraform的一个执行变更的操作。terraform在对比资源变动后生成执行计划(包含增删改及先后操作顺序),apply按照执行计划对资源状态进行增删改操作。执行计划的生成,是根据tf数据、区块链状态、真实世界资源状态三者对比生成的。
在一些实施例的步骤S720中,首先调用整体资源溯源查询接口,获得按时间排序的整体变更信息,然后通过智能合约提供的整体回滚接口,指定整体变更信息中的一个时间点,将该时间点作为指定时间,根据指定时间生成资源状态回滚请求,根据资源状态回滚请求进行整体回滚操作。从更新后的第一资源状态获取变更时间处于指定时间之后的第一键值对、变更时间处于指定时间之前的第二键值对,将第一键值对变更为第二键值对。第一键值对包括第二状态键和第二状态值,第二键值对包括第三状态键和第三状态值,第二状态键和第三状态键相同,将第二状态值变更为第三状态值。整体回滚操作成功后,智能合约会按照指定时间对该指定时间之后所有涉及版本变换的key进行细粒度回滚,保证智能合约内所有kv键值对的key对应value的版本回退到指定时间之前。
需要说明的是,当智能合约在进行回滚操作时,无法处理其他涉及新增、删除、修改、同步刷新等状态变更的操作。terraform使用距离指定时间最近的一次变更的区块链上记录的kv键值对value中的tf元数据进行apply操作进行版本回滚。
通过上述步骤S710至步骤S720,能够方便资源状态的版本回滚。
本申请实施例将terraform状态存储在区块链上,状态变更从文件变更变为针对具体变更资源的kv键值对变更,具有更快的变更响应速度。使用区块链历史账本能够方便状态文件版本记录,并方便溯源和状态回滚。将同一时刻只允许单一对象操作状态变更优化为允许多方同时进行状态变更,由区块链进行状态共识。相比于原有terraform可以做到细粒度状态变更、更快速度变更、可信版本记录、状态变更溯源、历史版本回滚、多对象同时操作,解决了terraform状态文件变大导致变更时间变长的对象体验问题,解决了terraform无法并发操作的问题,解决了terraform版本溯源及回滚问题,使terraform状态文件变得更轻量化,具有响应更快速、回滚细粒度、能并发操作等优点。
请参阅图8,本申请实施例还提供一种资源状态处理装置,可以实现上述资源状态处理方法,该装置包括:
第一获取模块810,用于获取资源状态请求;
第二获取模块820,用于响应于资源状态请求,获取区块链上以键值对形式记录的第一资源状态;
查询模块830,用于根据第一资源状态查询预设服务器的资源状态,得到第二资源状态。
该资源状态处理装置的具体实施方式与上述资源状态处理方法的具体实施例基本相同,在此不再赘述。
本申请实施例还提供了一种电子设备,电子设备包括括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述资源状态处理方法。该电子设备可以为包括平板电脑、车载电脑等任意智能终端。
请参阅图9,图9示意了另一实施例的电子设备的硬件结构,电子设备包括:
处理器910,可以采用通用的CPU(CentralProcessingUnit,中央处理器)、微处理器、应用专用集成电路(ApplicationSpecificIntegratedCircuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本申请实施例所提供的技术方案;
存储器920,可以采用只读存储器(ReadOnlyMemory,ROM)、静态存储设备、动态存储设备或者随机存取存储器(RandomAccessMemory,RAM)等形式实现。存储器920可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器920中,并由处理器910来调用执行本申请实施例的资源状态处理方法;
输入/输出接口930,用于实现信息输入及输出;
通信接口940,用于实现本设备与其他设备的通信交互,可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信;
总线950,在设备的各个组件(例如处理器910、存储器920、输入/输出接口930和通信接口940)之间传输信息;
其中处理器910、存储器920、输入/输出接口930和通信接口940通过总线950实现彼此之间在设备内部的通信连接。
本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述资源状态处理方法。
存储器作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序以及非暂态性计算机可执行程序。此外,存储器可以包括高速随机存取存储器,还可以包括非暂态存储器,例如至少一个磁盘存储器件、闪存器件、或其他非暂态固态存储器件。在一些实施方式中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至该处理器。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
本申请实施例提供的资源状态处理方法、资源状态处理装置、电子设备及计算机可读存储介质,通过将terraform管理的资源状态存储在区块链上,对状态文件中资源状态的处理操作变为对区块链上对应资源状态键值对的处理操作,提升了状态处理的速度,提升了对象体验。
本申请实施例描述的实施例是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域技术人员可知,随着技术的演变和新应用场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本领域技术人员可以理解的是,图中示出的技术方案并不构成对本申请实施例的限定,可以包括比图示更多或更少的步骤,或者组合某些步骤,或者不同的步骤。
以上所描述的装置实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、设备中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。
本申请的说明书及上述附图中的术语“第一”、“第二”、“第三”、“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:只存在A,只存在B以及同时存在A和B三种情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,上述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括多指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例的方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-On ly Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等各种可以存储程序的介质。
以上参照附图说明了本申请实施例的优选实施例,并非因此局限本申请实施例的权利范围。本领域技术人员不脱离本申请实施例的范围和实质内所作的任何修改、等同替换和改进,均应在本申请实施例的权利范围之内。

Claims (10)

1.资源状态处理方法,其特征在于,所述方法包括:
获取资源状态请求;
响应于所述资源状态请求,获取区块链上以键值对形式记录的第一资源状态;
根据所述第一资源状态查询预设服务器的资源状态,得到第二资源状态。
2.根据权利要求1所述的资源状态处理方法,其特征在于,在所述根据所述第一资源状态查询预设服务器的资源状态,得到第二资源状态之后,所述资源状态处理方法还包括:
根据所述第二资源状态更新所述第一资源状态,以使所述第二资源状态与所述第一资源状态相同;
根据所述资源状态请求对更新后的所述第一资源状态进行资源状态处理。
3.根据权利要求2所述的资源状态处理方法,其特征在于,所述资源状态请求包括新增资源状态请求,所述根据所述资源状态请求对更新后的所述第一资源状态进行资源状态处理,包括:
若所述资源状态请求为所述新增资源状态请求,则从所述新增资源状态请求中提取出新增资源状态;
将所述新增资源状态记录入更新后的所述第一资源状态。
4.根据权利要求2所述的资源状态处理方法,其特征在于,所述资源状态请求包括删除资源状态请求,所述根据所述资源状态请求对更新后的所述第一资源状态进行资源状态处理,包括:
若所述资源状态请求为所述删除资源状态请求,则从所述删除资源状态请求中提取出待删除资源状态;
从更新后的所述第一资源状态删除所述待删除资源状态。
5.根据权利要求2所述的资源状态处理方法,其特征在于,第一资源状态包括多个键值对,所述键值对包括第一状态键和第一状态值,所述资源状态请求包括修改资源状态请求,所述根据所述资源状态请求对更新后的所述第一资源状态进行资源状态处理,包括:
若所述资源状态请求为所述修改资源状态请求,则从所述修改资源状态请求中提取出待修改资源状态;所述待修改资源状态包括待修改状态键和待修改状态值;
若所述待修改状态键和所述第一状态键相同,则根据所述待修改状态值更新所述第一状态值。
6.根据权利要求2所述的资源状态处理方法,其特征在于,所述资源状态请求包括资源状态变更查询请求,所述根据所述资源状态请求对更新后的所述第一资源状态进行资源状态处理,包括:
若所述资源状态请求为所述资源状态变更查询请求,则从所述资源状态变更查询请求提取出待查询状态键;根据所述待查询状态键从更新后的所述第一资源状态中查询出所述待查询状态键对应的待查询状态值;所述待查询状态值包括历史状态值和当前状态值;
或者,
若所述资源状态请求为所述资源状态变更查询请求,则从更新后的所述第一资源状态提取出所有状态键和所有状态键对应的历史状态值;根据所有状态键和所述状态键对应的历史状态值,得到多个键值对;按照变更时间对多个键值对进行排序。
7.根据权利要求2至6任一项所述的资源状态处理方法,其特征在于,所述资源状态请求包括资源状态回滚请求,所述根据所述资源状态请求对更新后的所述第一资源状态进行资源状态处理,包括:
若所述资源状态请求为所述资源状态回滚请求,则从所述资源状态回滚请求提取出待回滚状态键和待回滚状态值;根据所述待回滚状态键从更新后的所述第一资源状态中查询出所述待回滚状态键对应的当前状态值;根据所述待回滚状态值更新所述当前状态值;
或者,
若所述资源状态请求为所述资源状态回滚请求,则从所述资源状态回滚请求提取出指定时间;从更新后的所述第一资源状态获取变更时间处于所述指定时间之后的第一键值对,第一键值对包括第二状态键和第二状态值;获取变更时间处于所述指定时间之前的第二键值对,所述第二键值对包括第三状态键和第三状态值,所述第二状态键和所述第三状态键相同;根据所述第三状态值更新所述第二状态值。
8.资源状态处理装置,其特征在于,所述装置包括:
第一获取模块,用于获取资源状态请求;
第二获取模块,用于响应于所述资源状态请求,获取区块链上以键值对形式记录的第一资源状态;
查询模块,用于根据所述第一资源状态查询预设服务器的资源状态,得到第二资源状态。
9.电子设备,其特征在于,所述电子设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现权利要求1至7任一项所述的资源状态处理方法。
10.计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的资源状态处理方法。
CN202310870170.4A 2023-07-14 2023-07-14 资源状态处理方法和装置、电子设备及存储介质 Pending CN116894010A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310870170.4A CN116894010A (zh) 2023-07-14 2023-07-14 资源状态处理方法和装置、电子设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310870170.4A CN116894010A (zh) 2023-07-14 2023-07-14 资源状态处理方法和装置、电子设备及存储介质

Publications (1)

Publication Number Publication Date
CN116894010A true CN116894010A (zh) 2023-10-17

Family

ID=88310409

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310870170.4A Pending CN116894010A (zh) 2023-07-14 2023-07-14 资源状态处理方法和装置、电子设备及存储介质

Country Status (1)

Country Link
CN (1) CN116894010A (zh)

Similar Documents

Publication Publication Date Title
CN109558748B (zh) 数据处理方法、装置、电子设备及存储介质
CN109472696B (zh) 资产交易方法、装置、存储介质及计算机设备
EP3559874B1 (en) Event-driven blockchain workflow processing
CN108846753B (zh) 用于处理数据的方法和装置
US9542864B2 (en) Methods and apparatus for digital steganography
US20150254329A1 (en) Entity resolution from documents
CN111597567B (zh) 数据处理方法、装置、节点设备及存储介质
US9589153B2 (en) Securing integrity and consistency of a cloud storage service with efficient client operations
CN109347839B (zh) 集中式密码管理方法、装置、电子设备及计算机存储介质
CN105302920A (zh) 一种云存储数据的优化管理方法和系统
US9930063B2 (en) Random identifier generation for offline database
US11314544B2 (en) Transaction log for audit purposes
CN111460394A (zh) 一种版权文件的验证方法、装置及计算机可读存储介质
CN114328029B (zh) 一种应用资源的备份方法、装置、电子设备及存储介质
CN109088914B (zh) 区块的生成方法、区块链生态系统及计算机可读存储介质
CN108667647B (zh) 一种设备参数的设置方法、设备及服务器
US10185735B2 (en) Distributed database system and a non-transitory computer readable medium
CN113361236A (zh) 一种编辑文档的方法和装置
CN114331745B (zh) 数据处理方法、系统、可读存储介质和电子设备
CN115185946A (zh) 多租户系统、多租户管理方法、计算机设备和存储介质
CN116894010A (zh) 资源状态处理方法和装置、电子设备及存储介质
CN114398678A (zh) 电子文件防篡改的登记验证方法、装置、电子设备及介质
CN106547626B (zh) 用于对等架构均衡服务器的方法及服务器
CN110889040B (zh) 用于推送信息的方法和装置
US20180007130A1 (en) Peer-to-Peer Assisted Personal Synchronization

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