CN112559614B - 一种数据库访问方法、OpenStack云平台及介质 - Google Patents
一种数据库访问方法、OpenStack云平台及介质 Download PDFInfo
- Publication number
- CN112559614B CN112559614B CN202011502170.1A CN202011502170A CN112559614B CN 112559614 B CN112559614 B CN 112559614B CN 202011502170 A CN202011502170 A CN 202011502170A CN 112559614 B CN112559614 B CN 112559614B
- Authority
- CN
- China
- Prior art keywords
- database
- database operation
- cloud platform
- operation information
- openstack cloud
- 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
- 238000000034 method Methods 0.000 title claims abstract description 57
- 238000004891 communication Methods 0.000 claims abstract description 55
- 230000000977 initiatory effect Effects 0.000 claims abstract description 11
- 239000004020 conductor Substances 0.000 claims description 43
- 238000005457 optimization Methods 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 6
- 238000012544 monitoring process Methods 0.000 claims description 3
- 238000012856 packing Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 106
- 238000007726 management method Methods 0.000 description 41
- 238000012550 audit Methods 0.000 description 14
- 230000008569 process Effects 0.000 description 12
- 239000003638 chemical reducing agent Substances 0.000 description 5
- 230000009471 action Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000004806 packaging method and process Methods 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 230000037431 insertion Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
Images
Classifications
-
- 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/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种OpenStack云平台上的数据库访问方法、OpenStack云平台、介质,该方法包括:通过客户端发起对数据库进行操作的数据库操作请求,并通过数据库操作请求中的目标函数对应的装饰器函数检查目标函数对应的类,以确定目标函数对应的类是否具有Conductor API对象;如果是,通过客户端将数据库操作信息打包成消息队列通信包,并将消息队列通信包发送到预设的消息队列中;通过预设的Conductor管理模块从消息队列中获取数据库操作信息,对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库进行访问操作。这样能够对OpenStack云平台中的数据库操作进行统一审计。
Description
技术领域
本申请涉及计算机技术领域,特别涉及一种OpenStack云平台上的数据库访问方法、OpenStack云平台、介质。
背景技术
云平台是很典型的分布式计算系统,普遍采用微服务概念构建,用以细粒度控制服务故障域,但是同时整个云平台中的各个客户端都是直接针对数据库服务发起数据库操作,因此针对云平台的数据库的操作零散分布于整个集群,资源统一审计是云平台中以及其他大型分布式系统的基本需求,主要用于操作溯源、责任人定位、查询资源变更历史等。云平台对资源的操作中很重要的一部分就是通过更新数据库维护资源状态的。如果云平台上的客户端自行操作数据库,而数据库作为通用IT基础设施又不提供业务强关联的日志记录,所以会造成统一审计的功能空白,云平台对数据库操作没有统一审计,由此造成系统设计的薄弱环节,引发潜在的安全问题。
发明内容
有鉴于此,本申请的目的在于提供一种OpenStack云平台上的数据库访问方法、OpenStack云平台、介质,能够对OpenStack云平台中的数据库操作进行统一审计,提高OpenStack云平台的性能,减少安全问题。其具体方案如下:
第一方面,本申请公开了一种OpenStack云平台上的数据库访问方法,包括:
通过OpenStack云平台中的客户端发起对所述OpenStack云平台中的数据库进行操作的数据库操作请求,并通过所述数据库操作请求中的目标函数对应的装饰器函数检查所述目标函数对应的类,以确定所述目标函数对应的类是否具有Conductor API对象,其中,所述数据库操作请求中包括数据库操作信息,所述数据库操作信息包括数据库操作的目标类、所述目标函数、参数列表以及所述客户端的信息;
在所述目标函数对应的类具有Conductor API对象时,通过所述客户端将所述数据库操作信息打包成消息队列通信包,并将所述消息队列通信包发送到所述OpenStack云平台上预设的消息队列中;
通过所述OpenStack云平台上预设的Conductor管理模块从所述消息队列中获取所述消息队列通信包对应的所述数据库操作信息,对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库进行访问操作。
可选地,所述通过OpenStack云平台中的客户端发起对所述OpenStack云平台中的数据库进行操作的数据库操作请求之前,还包括:
动态修改所述客户端对应的基类,在所述基类中插入所述Conductor API对象,以便在所述客户端的微服务启动时,所述客户端的微服务的资源类从所述基类中继承所述Conductor API对象。
可选地,所述通过OpenStack云平台中的客户端发起对所述OpenStack云平台中的数据库进行操作的数据库操作请求之前,还包括:
定义所述装饰器函数,并利用所述装饰器函数装饰所述OpenStack云平台中的各个数据库操作函数。
可选地,所述通过所述OpenStack云平台上预设的Conductor管理模块从所述消息队列中获取所述消息队列通信包对应的所述数据库操作信息,对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库进行访问操作,包括:
通过所述OpenStack云平台上预设的Conductor管理模块监听所述消息队列中头消息为预设字段的信息,并在所述消息队列通信包的头信息为所述预设字段时,从所述消息队列中获取所述消息队列通信包对应的所述数据库操作信息;
对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库进行访问操作。
可选地,所述对所述数据库操作信息进行审计,包括:
将所述数据库操作信息记录到预设的审计模块中。
可选地,所述通过所述数据库操作请求中的目标函数对应的装饰器函数检查所述目标函数对应的类,以确定所述目标函数对应的类是否具有Conductor API对象之后,还包括:
在所述目标函数对应的类不具有Conductor API对象时,将所述数据库操作请求直接发送到所述数据库中,以对所述数据库进行所述数据库操作请求对应的操作。
可选地,所述OpenStack云平台上的数据库访问方法,还包括:
通过所述Conductor管理模块基于预设的数据库优化策略初始化所述数据库对应的数据库连接池。
第二方面,本申请公开了一种OpenStack云平台,包括:
客户端,用于发起对OpenStack云平台中的数据库进行操作的数据库操作请求,并通过所述数据库操作请求中的目标函数对应的装饰器函数检查所述目标函数对应的类,以确定所述目标函数对应的类是否具有Conductor API对象,其中,所述数据库操作请求中包括数据库操作信息,所述数据库操作信息包括数据库操作的目标类、目标函数、参数列表以及所述客户端的信息;
所述客户端,还用于在所述目标函数对应的类具有Conductor API对象时,将所述数据库操作信息打包成消息队列通信包,并将所述消息队列通信包发送到所述OpenStack云平台上预设的消息队列中;
Conductor管理模块,用于从所述消息队列中获取所述消息队列通信包对应的所述数据库操作信息,对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库进行访问操作。
可选地,所述Conductor管理模块,还用于:
基于预设的数据库优化策略初始化所述数据库对应的数据库连接池。
第三方面,本申请公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述公开的OpenStack云平台上的数据库访问方法。
可见,本申请通过OpenStack云平台中的客户端发起对所述OpenStack云平台中的数据库进行操作的数据库操作请求,并通过所述数据库操作请求中的目标函数对应的装饰器函数检查所述目标函数对应的类,以确定所述目标函数对应的类是否具有ConductorAPI对象,其中,所述数据库操作请求中包括数据库操作信息,所述数据库操作信息包括数据库操作的目标类、所述目标函数、参数列表以及所述客户端的信息,在所述目标函数对应的类具有Conductor API对象时,通过所述客户端将所述数据库操作信息打包成消息队列通信包,并将所述消息队列通信包发送到所述OpenStack云平台上预设的消息队列中,然后通过所述OpenStack云平台上预设的Conductor管理模块从所述消息队列中获取所述消息队列通信包对应的所述数据库操作信息,对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库进行访问操作。由此可见,本申请中在OpenStack云平台中的客户端发起对所述OpenStack云平台中的数据库进行操作的数据库操作请求时,所述数据库操作请求中的目标函数对应的装饰器函数检查所述目标函数对应的类,以确定所述目标函数对应的类是否具有Conductor API对象,如果是,则将所述数据库操作信息打包成消息队列通信包,并将所述消息队列通信包发送到所述OpenStack云平台上预设的消息队列中,所述OpenStack云平台上预设的Conductor管理模块便会从所述消息队列中获取所述消息队列通信包对应的所述数据库操作信息,对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库进行访问操作。这样OpenStack云平台中的数据库操作可以由预设的Conductor管理模块进行统一审计,提高了OpenStack云平台的性能,减少了安全问题。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请公开的一种OpenStack云平台上的数据库访问方法流程图;
图2为本申请公开的一种具体的OpenStack云平台上的数据库访问方法流程图;
图3为本申请公开的一种具体的OpenStack云平台上的数据库访问方法流程图;
图4为本申请公开的一种OpenStack云平台结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1所示,本申请实施例公开了一种OpenStack云平台上的数据库访问方法,该方法包括:
步骤S11:通过OpenStack云平台中的客户端发起对所述OpenStack云平台中的数据库进行操作的数据库操作请求,并通过所述数据库操作请求中的目标函数对应的装饰器函数检查所述目标函数对应的类,以确定所述目标函数对应的类是否具有Conductor API对象,其中,所述数据库操作请求中包括数据库操作信息,所述数据库操作信息包括数据库操作的目标类、所述目标函数、参数列表以及所述客户端的信息。
在具体的实施过程中,当所述OpenStack云平台中的客户端发起对所述OpenStack云平台中的数据库进行操作的数据库操作请求,其中,所述数据库操作请求中包括数据库操作信息,所述数据库操作信息包括数据库操作的目标类、目标函数、参数列表以及所述客户端的信息。这时,先通过所述目标函数对应的装饰器函数检查所述目标函数对应的类,以确定所述目标函数对应的类是否具有Conductor API对象。
具体的,所述OpenStack云平台中的客户端可以对所述OpenStack云平台中的数据库进行操作,发起对所述数据库进行操作的数据库操作请求,参见下表一所示,所述数据库请求中可以包括数据库操作信息和消息头,例如,消息头为conductor,所述数据库操作信息包括数据操作的目标类,例如,Demo类,所述数据库操作的目标函数,例如,update函数,所述数据库操作的参数列表,也即,对象修改的属性,例如,id=1001,name=’lihua’,所述客户端的信息,包括发起所述数据库操作的IP(Internet Protocol,网际互连协议)地址,所述客户端对应的服务名称。
所述目标函数对应的装饰器函数检查所述目标函数所在的对象,包括其参数self,进而确定所述对象所属的类,也即,所述目标函数对应的类,使用反射机制获取该类所具备的全部属性与函数,进而检查目标函数对应的类是否具备Conductor API(Application Programming Interface,应用程序接口)对象。
表一
在通过OpenStack云平台中的客户端发起对所述OpenStack云平台中的数据库进行操作的数据库操作请求之前,还包括:动态修改所述客户端对应的基类,在所述基类中插入所述Conductor API对象,以便在所述客户端的微服务启动时,所述客户端的微服务的资源类从所述基类中继承所述Conductor API对象。
为什么要修改所述基类呢?因为这涉及到面向对象编程的基本原则之一,即继承性。云平台的基类封装了资源类的通用属性与操作函数,各个资源类继承基类,那么资源类就自动获取了基类的属性与操作函数,无需在资源类中重复编码,提高了功能复用性。所以此处是准备将Conductor API作为云平台中所有资源的基本属性进行注入的,所以修改基类以确保各个资源类自动继承获取。
所述客户端所能提供的微服务启动的时候是以服务的形式启动的,都有一个main函数入口程序,该入口程序可以定义worker进程数,加载服务配置文件等,当然也包括各种资源类模块的加载。动态修改的原理就是在main函数加载服务模块(包括各种资源类时),可以使用类似Java语言的的反射机制或者Python的setattr操作基类,以python为例,基类为objects.BaseObject:objects.BaseObject.indirection_api=conductor.ConductorAPI(),那么所述客户端的微服务的资源类就具备了名称为indirection_api,其实是Conductor API类型的对象。这样Conductor API就可以充当访问所述Conductor管理模块的客户端,而实现数据库操作审计的就是所述Conductor管理模块。另外,需要注意的是Conductor管理模块启动时不要动态修改基类添加indirection_api。其中,所述Conductor管理模块可以为Conductor Manager服务。
在定义所述Conductor管理模块,也即Conductor Manager服务时,不动态修改Conductor Manager服务对应的基类,所以所述Conductor管理模块,也即ConductorManager服务无Conductor API对象。
在实际应用中,通过所述OpenStack云平台中的客户端发起对所述OpenStack云平台中的数据库进行操作的数据库操作请求之前,还包括:定义所述装饰器函数,并利用所述装饰器函数装饰所述OpenStack云平台中的各个数据库操作函数。
也即,定义所述装饰器函数并装饰所述OpenStack云平台中的各个数据库操作函数,例如save()、update()等;装饰器函数在Java中叫注解,Python中叫装饰器函数,其他高级语言也有类似实现。它的作用是不需要侵入被装饰的函数即可以修改被装饰函数的运行逻辑。例如,所述装饰器函数可以为remotable。
步骤S12:在所述目标函数对应的类具有Conductor API对象时,通过所述客户端将所述数据库操作信息打包成消息队列通信包,并将所述消息队列通信包发送到所述OpenStack云平台上预设的消息队列中。
在所述目标函数对应的类具有Conductor API对象时,则表示所述客户端不能直接向所述数据库发送所述数据库操作请求,而是需要发送到预设的Conductor管理模块进行统一审计之后,才能由所述Conductor管理模块统一进行数据库操作。也即,所述客户端需要将所述数据库操作信息打包成消息队列通信包,并将所述消息队列通信包发送到所述OpenStack云平台上预设的消息队列中。
消息队列为一种跨主机通信机制,连接到队列的程序分为消息发布者与消费者两种角色,消息最常用的一种格式是“消息主题+消息主体”,发布者通过发布消息派发任务,而消费者通过订阅特定“消息主题”的消息来关注、接收、处理消息完成任务。
步骤S13:通过所述OpenStack云平台上预设的Conductor管理模块从所述消息队列中获取所述消息队列通信包对应的所述数据库操作信息,对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库进行访问操作。
相应地,所述OpenStack云平台上预设的Conductor管理模块便需要从所述消息队列中获取所述消息队列通信包对应的所述数据库操作信息,对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库进行访问操作。
也即,由所述Conductor管理模块从所述消息队列中读取所述消息队列通信包对应的所述数据库操作信息,对所述数据库操作信息进行审计,以便对所述数据库操作信息进行记录,并根据所述数据库操作信息对所述数据库进行访问操作。
直接在所述客户端对应的基类中直接插入所述Conductor API对象,可以使得所述Conductor API对象具有明显的可插拔性,需要所述Conductor API对象时将其插入到对应的基类中,不需要所述Conductor API对象时直接将对应的基类中的Conductor API对象移除。
可见,本申请通过OpenStack云平台中的客户端发起对所述OpenStack云平台中的数据库进行操作的数据库操作请求,并通过所述数据库操作请求中的目标函数对应的装饰器函数检查所述目标函数对应的类,以确定所述目标函数对应的类是否具有ConductorAPI对象,其中,所述数据库操作请求中包括数据库操作信息,所述数据库操作信息包括数据库操作的目标类、所述目标函数、参数列表以及所述客户端的信息,在所述目标函数对应的类具有Conductor API对象时,通过所述客户端将所述数据库操作信息打包成消息队列通信包,并将所述消息队列通信包发送到所述OpenStack云平台上预设的消息队列中,然后通过所述OpenStack云平台上预设的Conductor管理模块从所述消息队列中获取所述消息队列通信包对应的所述数据库操作信息,对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库进行访问操作。由此可见,本申请中在OpenStack云平台中的客户端发起对所述OpenStack云平台中的数据库进行操作的数据库操作请求时,所述数据库操作请求中的目标函数对应的装饰器函数检查所述目标函数对应的类,以确定所述目标函数对应的类是否具有Conductor API对象,如果是,则将所述数据库操作信息打包成消息队列通信包,并将所述消息队列通信包发送到所述OpenStack云平台上预设的消息队列中,所述OpenStack云平台上预设的Conductor管理模块便会从所述消息队列中获取所述消息队列通信包对应的所述数据库操作信息,对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库进行访问操作。这样OpenStack云平台中的数据库操作可以由预设的Conductor管理模块进行统一审计,提高了OpenStack云平台的性能,减少了安全问题。
参见图2所示,本申请实施例公开了一种具体的OpenStack云平台上的数据库访问方法,该方法包括:
步骤S21:通过OpenStack云平台中的客户端发起对所述OpenStack云平台中的数据库进行操作的数据库操作请求,并通过所述数据库操作请求中的目标函数对应的装饰器函数检查所述目标函数对应的类,以确定所述目标函数对应的类是否具有Conductor API对象,其中,所述数据库操作请求中包括数据库操作信息,所述数据库操作信息包括数据库操作的目标类、所述目标函数、参数列表以及所述客户端的信息。
步骤S22:在所述目标函数对应的类具有Conductor API对象时,通过所述客户端将所述数据库操作信息打包成消息队列通信包,并将所述消息队列通信包发送到所述OpenStack云平台上预设的消息队列中。
步骤S21和步骤S22的具体实施过程可以参考前述实施例中公开的内容,在此不再进行赘述。
步骤S23:通过所述OpenStack云平台上预设的Conductor管理模块从所述消息队列中获取所述消息队列通信包对应的所述数据库操作信息,对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库进行访问操作。
相应地,还需要Conductor管理模块从所述消息队列中获取所述消息队列通信包对应的所述数据库操作信息,对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库进行访问操作。
也即,所述Conductor管理模块监听所述消息队列中头消息为预设字段的信息,并在所述消息队列通信包的头信息为所述预设字段时,从所述消息队列中获取所述消息队列通信包对应的所述数据库操作信息;对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库进行访问操作。其中,所述预设字段可以为conductor。
其中,对所述数据库操作信息进行审计,包括:将所述数据库操作信息记录到预设的审计模块中。将所述数据库操作信息记录到预设的审计模块中之后,有利于之后的操作记录查询等。
所述Conductor管理模块中无Conductor API对象,所以所述Conductor管理模块会直接进行数据库操作,从数据库连接池取连接进行数据库操作。
步骤S24:在所述目标函数对应的类不具有Conductor API对象时,将所述数据库操作请求直接发送到所述数据库中,以对所述数据库进行所述数据库操作请求对应的操作。
在所述目标函数对应的类不具有Conductor API对象时,则表示所述数据库操作请求可以直接发送对所述数据库中实现相应的操作,所以将所述数据库操作请求直接发送到所述数据库中,以对所述数据库进行所述数据库操作请求对应的操作。
步骤S25:通过所述Conductor管理模块基于预设的数据库优化策略初始化所述数据库对应的数据库连接池。
在实际应用中,所述Conductor管理模块还可以基于预设的数据库优化策略初始化所述数据库对应的数据库连接池。其中,所述数据库优化策略中包括并发worker进程数、数据库连接池最大连接数、buffer size、超时时间等。数据库连接池为数据库操作初始化连接是耗费资源的操作,如果数据库操作来的时候才初始化明显处理效率不高。所以一般会在服务启动的时候初始化一定数量的连接维护起来,这就是所谓的连接池。请求来了就从连接池拿来连接直接使用,用完也不用销毁而是重新返回到连接池。
由所述Conductor管理模块基于预设的数据库优化策略初始化统一对所述数据库的数据库连接池初始化,可以解决现有技术中平台上的数据库优化策略无法统一。在云计算平台这种高并发系统中,复杂的工作流中任何一个环节的薄弱都可能成为木桶的短板,形成整个系统的性能瓶颈。而数据库是关键基础设施,数据库优化是基本操作,一般的数据库优化策略包括:并发worker进程数、数据库连接池最大连接数、buffer size、超时时间等。如果任由云平台中的各个分布式组件自行按照自己的优化策略操作数据库,那么数据库服务面临非统一的查询模式,因此不能发挥出最大性能。另外各个服务(作为数据库客户端)也无法感知其它服务的存在,可能造成服务间数据库连接资源占用不平衡的问题。
所述OpenStack云平台上中可以直接将数据库操作请求发送到数据库进行操作,也可以将数据库操作请求发送到预设的Conductor管理模块中,由Conductor管理模块进行数据库操作的统一审计和处理,这样使得OpenStack云平台的数据库操作具有兼容性优势。
参见图3所示,当OpenStack云平台上的客户端对应的微服务1、微服务2以及微服务3发起对所述OpenStack云平台中的数据库(DB,Data Base)进行操作的数据库操作请求,并通过所述数据库操作请求中的目标函数对应的装饰器函数检查所述目标函数对应的类,以确定所述目标函数对应的类是否具有Conductor API对象,在所述目标函数对应的类具有Conductor API对象时,通过Conductor API将所述数据库操作信息打包成消息队列通信包,并将所述消息队列通信包发送到所述OpenStack云平台上预设的消息队列中,所述OpenStack云平台上预设的Conductor管理模块(Conductor Manager)从所述消息队列中获取所述消息队列通信包对应的所述数据库操作信息,对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库(DB)进行访问操作。
参见图4所示,本申请实施例公开了一种OpenStack云平台,包括:
客户端11,用于发起对OpenStack云平台中的数据库进行操作的数据库操作请求,并通过所述数据库操作请求中的目标函数对应的装饰器函数检查所述目标函数对应的类,以确定所述目标函数对应的类是否具有Conductor API对象,其中,所述数据库操作请求中包括数据库操作信息,所述数据库操作信息包括数据库操作的目标类、目标函数、参数列表以及所述客户端的信息;
所述客户端11,还用于在所述目标函数对应的类具有Conductor API对象时,将所述数据库操作信息打包成消息队列通信包,并将所述消息队列通信包发送到所述OpenStack云平台上预设的消息队列中;
Conductor管理模块12,用于从所述消息队列中获取所述消息队列通信包对应的所述数据库操作信息,对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库进行访问操作。
可见,本申请通过所述OpenStack云平台中的客户端发起对所述OpenStack云平台中的数据库进行操作的数据库操作请求,并通过所述数据库操作请求中的目标函数对应的装饰器函数检查所述目标函数对应的类,以确定所述目标函数对应的类是否具有Conductor API对象,其中,所述数据库操作请求中包括数据库操作信息,所述数据库操作信息包括数据库操作的目标类、所述目标函数、参数列表以及所述客户端的信息,在所述目标函数对应的类具有Conductor API对象时,通过所述客户端将所述数据库操作信息打包成消息队列通信包,并将所述消息队列通信包发送到所述OpenStack云平台上预设的消息队列中,然后通过所述OpenStack云平台上预设的Conductor管理模块从所述消息队列中获取所述消息队列通信包对应的所述数据库操作信息,对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库进行访问操作。由此可见,本申请中在OpenStack云平台中的客户端发起对所述OpenStack云平台中的数据库进行操作的数据库操作请求时,所述数据库操作请求中的目标函数对应的装饰器函数检查所述目标函数对应的类,以确定所述目标函数对应的类是否具有Conductor API对象,如果是,则将所述数据库操作信息打包成消息队列通信包,并将所述消息队列通信包发送到所述OpenStack云平台上预设的消息队列中,所述OpenStack云平台上预设的Conductor管理模块便会从所述消息队列中获取所述消息队列通信包对应的所述数据库操作信息,对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库进行访问操作。这样OpenStack云平台中的数据库操作可以由预设的Conductor管理模块进行统一审计,提高了OpenStack云平台的性能,减少了安全问题。
在一些具体的实施过程中,所述OpenStack云平台,还包括:
基类修改模块,用于动态修改所述客户端对应的基类,在所述基类中插入所述Conductor API对象,以便在所述客户端的微服务启动时,所述客户端的微服务的资源类从所述基类中继承所述Conductor API对象。
在一些具体的实施过程中,所述OpenStack云平台,还包括:
装饰器函数定义模块,用于定义所述装饰器函数,并利用所述装饰器函数装饰所述OpenStack云平台中的各个数据库操作函数。
在一些具体的实施过程中,所述Conductor管理模块,用于:
监听所述消息队列中头消息为预设字段的信息,并在所述消息队列通信包的头信息为所述预设字段时,从所述消息队列中获取所述消息队列通信包对应的所述数据库操作信息;
对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库进行访问操作。
在一些具体的实施过程中,所述Conductor管理模块,用于:
将所述数据库操作信息记录到预设的审计模块中。
在一些具体的实施过程中,所述客户端11,还用于:
在所述目标函数对应的类不具有Conductor API对象时,将所述数据库操作请求直接发送到所述数据库中,以对所述数据库进行所述数据库操作请求对应的操作。
在一些具体的实施过程中,所述Conductor管理模块12,还用于:
基于预设的数据库优化策略初始化所述数据库对应的数据库连接池。
进一步的,本申请实施例还公开了一种计算机可读存储介质,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现前述任一实施例中公开的OpenStack云平台上的数据库访问方法。
其中,关于上述OpenStack云平台上的数据库访问方法的具体过程可以参考前述实施例中公开的相应内容,在此不再进行赘述。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或者操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得一系列包含其他要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上对本申请所提供的一种OpenStack云平台上的数据库访问方法、OpenStack云平台、介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (10)
1.一种OpenStack云平台上的数据库访问方法,其特征在于,包括:
通过OpenStack云平台中的客户端发起对所述OpenStack云平台中的数据库进行操作的数据库操作请求,并通过所述数据库操作请求中的目标函数对应的装饰器函数检查所述目标函数对应的类,以确定所述目标函数对应的类是否具有Conductor API对象,其中,所述数据库操作请求中包括数据库操作信息,所述数据库操作信息包括数据库操作的目标类、所述目标函数、参数列表以及所述客户端的信息;
在所述目标函数对应的类具有Conductor API对象时,通过所述客户端将所述数据库操作信息打包成消息队列通信包,并将所述消息队列通信包发送到所述OpenStack云平台上预设的消息队列中;
通过所述OpenStack云平台上预设的Conductor管理模块从所述消息队列中获取所述消息队列通信包对应的所述数据库操作信息,对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库进行访问操作。
2.根据权利要求1所述的OpenStack云平台上的数据库访问方法,其特征在于,所述通过OpenStack云平台中的客户端发起对所述OpenStack云平台中的数据库进行操作的数据库操作请求之前,还包括:
动态修改所述客户端对应的基类,在所述基类中插入所述Conductor API对象,以便在所述客户端的微服务启动时,所述客户端的微服务的资源类从所述基类中继承所述Conductor API对象。
3.根据权利要求1所述的OpenStack云平台上的数据库访问方法,其特征在于,所述通过OpenStack云平台中的客户端发起对所述OpenStack云平台中的数据库进行操作的数据库操作请求之前,还包括:
定义所述装饰器函数,并利用所述装饰器函数装饰所述OpenStack云平台中的各个数据库操作函数。
4.根据权利要求1所述的OpenStack云平台上的数据库访问方法,其特征在于,所述通过所述OpenStack云平台上预设的Conductor管理模块从所述消息队列中获取所述消息队列通信包对应的所述数据库操作信息,对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库进行访问操作,包括:
通过所述OpenStack云平台上预设的Conductor管理模块监听所述消息队列中头消息为预设字段的信息,并在所述消息队列通信包的头信息为所述预设字段时,从所述消息队列中获取所述消息队列通信包对应的所述数据库操作信息;
对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库进行访问操作。
5.根据权利要求4所述的OpenStack云平台上的数据库访问方法,其特征在于,所述对所述数据库操作信息进行审计,包括:
将所述数据库操作信息记录到预设的审计模块中。
6.根据权利要求1所述的OpenStack云平台上的数据库访问方法,其特征在于,所述通过所述数据库操作请求中的目标函数对应的装饰器函数检查所述目标函数对应的类,以确定所述目标函数对应的类是否具有Conductor API对象之后,还包括:
在所述目标函数对应的类不具有Conductor API对象时,将所述数据库操作请求直接发送到所述数据库中,以对所述数据库进行所述数据库操作请求对应的操作。
7.根据权利要求1至6任一项所述的OpenStack云平台上的数据库访问方法,其特征在于,还包括:
通过所述Conductor管理模块基于预设的数据库优化策略初始化所述数据库对应的数据库连接池。
8.一种OpenStack云平台,其特征在于,包括:
客户端,用于发起对OpenStack云平台中的数据库进行操作的数据库操作请求,并通过所述数据库操作请求中的目标函数对应的装饰器函数检查所述目标函数对应的类,以确定所述目标函数对应的类是否具有Conductor API对象,其中,所述数据库操作请求中包括数据库操作信息,所述数据库操作信息包括数据库操作的目标类、目标函数、参数列表以及所述客户端的信息;
所述客户端,还用于在所述目标函数对应的类具有Conductor API对象时,将所述数据库操作信息打包成消息队列通信包,并将所述消息队列通信包发送到所述OpenStack云平台上预设的消息队列中;
Conductor管理模块,用于从所述消息队列中获取所述消息队列通信包对应的所述数据库操作信息,对所述数据库操作信息进行审计,并根据所述数据库操作信息对所述数据库进行访问操作。
9.根据权利要求8所述的OpenStack云平台,其特征在于,所述Conductor管理模块,还用于:
基于预设的数据库优化策略初始化所述数据库对应的数据库连接池。
10.一种计算机可读存储介质,其特征在于,用于保存计算机程序,其中,所述计算机程序被处理器执行时实现如权利要求1至7任一项所述的OpenStack云平台上的数据库访问方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011502170.1A CN112559614B (zh) | 2020-12-17 | 2020-12-17 | 一种数据库访问方法、OpenStack云平台及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011502170.1A CN112559614B (zh) | 2020-12-17 | 2020-12-17 | 一种数据库访问方法、OpenStack云平台及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112559614A CN112559614A (zh) | 2021-03-26 |
CN112559614B true CN112559614B (zh) | 2023-01-24 |
Family
ID=75063409
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011502170.1A Active CN112559614B (zh) | 2020-12-17 | 2020-12-17 | 一种数据库访问方法、OpenStack云平台及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112559614B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114189358B (zh) * | 2021-11-16 | 2024-07-16 | 深圳航天智慧城市系统技术研究院有限公司 | 一种基于私有云的服务安全策略管理方法 |
CN116028544B (zh) * | 2023-03-30 | 2023-06-23 | 山东爱特云翔计算机有限公司 | 基于openstack的定时任务动态添加方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8719338B2 (en) * | 2010-06-14 | 2014-05-06 | Red Hat, Inc. | Servicing database operations using a messaging server |
US20130325796A1 (en) * | 2012-06-05 | 2013-12-05 | Michael Basnight | System and Method for Integrating Databases in a Cloud Environment |
CN107465694B (zh) * | 2017-09-19 | 2019-11-26 | 北京哈工大计算机网络与信息安全技术研究中心 | 基于消息队列的openstack租户操作行为审计方法及系统 |
CN108021458A (zh) * | 2017-12-01 | 2018-05-11 | 天津麒麟信息技术有限公司 | 一种基于消息触发的多租户审计索引方法 |
US10931780B2 (en) * | 2018-02-28 | 2021-02-23 | International Business Machines Corporation | Resource pre-caching and tenant workflow recognition using cloud audit records |
CN108874955A (zh) * | 2018-05-30 | 2018-11-23 | 郑州信大天瑞信息技术有限公司 | 一种数据库审计方法 |
CN109120635A (zh) * | 2018-09-05 | 2019-01-01 | 江苏亨通工控安全研究院有限公司 | 工控数据库操作行为安全审计方法、装置及系统 |
CN110572464A (zh) * | 2019-09-12 | 2019-12-13 | 北京浪潮数据技术有限公司 | 底层资源状态同步方法、装置、云平台系统及存储介质 |
CN111222014B (zh) * | 2019-12-30 | 2024-03-26 | 北京达佳互联信息技术有限公司 | 请求处理方法、装置、电子设备及存储介质 |
-
2020
- 2020-12-17 CN CN202011502170.1A patent/CN112559614B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN112559614A (zh) | 2021-03-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9003478B2 (en) | Enforcement of conditional policy attachments | |
US10747724B2 (en) | System and method of using data blocks to optimize file storage | |
US8099709B2 (en) | Method and system for generating and employing a dynamic web services interface model | |
US9632764B2 (en) | Defining configurable characteristics of a product and associating configuration with enterprise resources | |
US10938565B2 (en) | Method and apparatus for inter-blockchain transmission of authenticable message | |
EP3364631B1 (en) | Dynamic orchestration of microservices | |
CN112559614B (zh) | 一种数据库访问方法、OpenStack云平台及介质 | |
US20080270411A1 (en) | Distributed behavior controlled execution of modeled applications | |
KR20060099392A (ko) | 웹 서비스 환경 내에서 통신하도록 개발되지 않은 레거시애플리케이션 컴포넌트를 위한 동적인 웹 서비스를생성하는 방법 및 컴퓨터 프로그램 제품 | |
EP2492860B1 (en) | Forwarding data from server to device | |
CN110554927A (zh) | 基于区块链的微服务调用方法 | |
CN106681891A (zh) | 一种Java应用系统中调整日志级别的方法及装置 | |
CN111984561B (zh) | 一种bmc的ipmi命令处理方法、系统、设备以及介质 | |
CN111641676A (zh) | 一种第三方云监控服务的构建方法及装置 | |
CN107454138A (zh) | 业务降级的实现方法及装置 | |
CN113259479A (zh) | 一种数据处理方法以及设备 | |
US11704099B1 (en) | Discovering matching code segments according to index and comparative similarity | |
KR101943936B1 (ko) | 웹 표준 애플리케이션 개발을 위한 통합 외부 연동 시스템 및 방법 | |
CN110597827A (zh) | 一种接口控制文件数据的存储方法及系统 | |
US20180210770A1 (en) | Enabling wpd devices to be managed at the capability level | |
CN114024822A (zh) | 基于区块链的物联网设备管理方法、设备、服务器及介质 | |
US8918451B2 (en) | System and method for providing service component architecture (SCA) data transformation | |
CN116361771B (zh) | 设备的访问与管理方法、装置、电子设备及存储介质 | |
US11650860B2 (en) | Managing services across containers | |
CN117792896B (zh) | 一种基于fpga的配置管理系统及配置管理方法 |
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 |