CN110516089A - 图片存储和读取服务的实现方法、装置、设备和存储介质 - Google Patents
图片存储和读取服务的实现方法、装置、设备和存储介质 Download PDFInfo
- Publication number
- CN110516089A CN110516089A CN201910808105.2A CN201910808105A CN110516089A CN 110516089 A CN110516089 A CN 110516089A CN 201910808105 A CN201910808105 A CN 201910808105A CN 110516089 A CN110516089 A CN 110516089A
- Authority
- CN
- China
- Prior art keywords
- picture
- storage
- component
- interface
- read
- 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
Links
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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/50—Information retrieval; Database structures therefor; File system structures therefor of still image data
- G06F16/51—Indexing; Data structures therefor; Storage structures
-
- 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/445—Program loading or initiating
- G06F9/44521—Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading
- G06F9/44526—Plug-ins; Add-ons
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种图片存储和读取服务的实现方法,包括:通过预设的写入接口获取图片数据;调用预先设置的至少两个组件中的一个,将图片数据存储在调用的组件对应的存储设备;生成与图片数据对应的存储图片的访问标识;其中存储图片的访问标识包含调用的组件的信息和图片数据的存储位置信息;通过写入接口回传存储图片的访问标识;通过预设的读取接口获取待读取图片的访问标识;其中待读取图片的访问标识包含有存储待读取图片时调用的组件的信息和待读取图片的存储位置;基于待读取图片的访问标识,调用存储待读取图片时调用的组件;通过存储待读取图片时调用的组件和访问标识,获取存储设备存储的待读取图片;通过预设的读取接口回传待读取图片。
Description
技术领域
本申请涉及图片存储和读取服务的相关技术领域,尤其涉及一种图片存储和读取服务的实现方法、装置、设备和存储介质。
背景技术
随着科技的不断发展,需要通过计算机等设备存储的图片越来越多。以安防行业为例:安防行业会产生大量图片数据,安防行业的业务系统需要将这些图片存储起来以备后续使用。这就涉及到存储设备。
实际项目中,现场所用存储设备种类繁多,有传统块存储设备或文件存储设备,比如磁盘阵列或者NAS;有各种提供私有接口的云存服务,比如阿里OSS存储,海康图片存储;等等。不同的存储设备支持的接口,对接的方法差异很大。
目前,业务系统直接对接这些存储设备,业务系统需要根据需要调用不同的存储设备支持接口。这种方式下业务系统需负责在设备上执行创建目录,创建文件,写文件等一系列组织图片数据的操作,陷入细节太多,导致业务系统无法聚焦;业务系统直接对接第三方存储服务(比如,阿里OSS,海康图片存储服务),无论是以私有SDK接入还是以http协议接入,各个存储服务的接口及使用流程都有明显的差别,业务系统对接时需处理这些差别,每对接一种新的存储服务均需修改自身代码,不利于业务系统自身的稳定。
发明内容
本申请的目的是提供一种图片存储和读取服务的实现方法、装置、设备和存储介质,以解决相关技术中存在的问题。
本申请的目的是通过以下技术方案实现的:
基于本申请的第一方面,本申请提供一种图片存储和读取服务的实现方法。本申请提供的图片存储和读取服务的实现方法包括:
通过预设的写入接口获取图片数据;
调用预先设置的至少两个组件中的一个,将所述图片数据存储在调用的组件对应的存储设备;其中,各个所述组件分别于各种存储设备一一对应;
生成与所述图片数据对应的存储图片的访问标识;其中,所述存储图片的访问标识包含调用的组件的信息和图片数据的存储位置信息;
通过所述写入接口回传所述存储图片的访问标识;
通过预设的读取接口获取待读取图片的访问标识;其中,所述待读取图片的访问标识包含有存储待读取图片时调用的组件的信息和所述待读取图片的存储位置;
基于所述待读取图片的访问标识,调用存储待读取图片时调用的组件;
通过存储待读取图片时调用的组件和所述访问标识,获取存储设备存储的待读取图片;
通过预设的读取接口回传所述待读取图片。
可选的,所述预设的写入接口为HTTP接口;
所述预设的读取接口为HTTP接口。
可选的,确定需要调用的组件的名称;
基于所述组件的名称,在预先配置的组件对象链表中,确定所述组件对象链表中对应所述组件的名称的目标组件对象;
根据所述目标组件对象的内部信息,调用所述目标组件对象的接口。
可选的,所述确定需要调用的组件的名称,包括:
通过预设的写入接口接收组件的名称;
判断是否成功接收所述组件的名称;
若成功接收,确定接收的组件的名称为需要调用的组件的名称;
若没有成功接收,确定预设组件名称为需要调用的组件的名称。
可选的,存储图片的访问标识由特定前缀和存储位置信息构成;
其中,特定前缀为存储图片时调用的组件的标识。
可选的,每个组件对应的动态库和依赖文件都用一个和对应动态库同名的文件夹进行保存;
所述文件夹放到服务的组件扫描目录下以等待服务调用。
可选的,配置所述组件对象链表的方法包括:
逐个枚举组件扫描目录下的子目录;
得到所枚举到的子目录的名字;
动态加载子目录中的同名动态库;
从加载的动态库中得到相关接口的地址信息;
将所述子目录的名字和得到的相关接口的地址信息保存为一个组件对象;
将得到的组件对象放入一个全局链表中进行保存。
可选的,所述基于所述待读取图片的访问标识,调用存储待读取图片时调用的组件,包括:
逐个调用组件对象链表中每个组件对象的图片访问标识判断接口;所述图片访问标识判断接口为所述相关接口中的一个;
通过所述图片访问标识判断接口,判断待读取图片的访问标识是否由所述图片访问标识判断接口对应的组件生成;
若判断结果为是,通过所述图片访问标识判断接口所在组件对象的内部存储的相关接口的地址信息,调用存储待读取图片时调用的组件。
基于本申请的第二方面,本申请提供一种图片存储和读取服务装置。本申请提供的图片存储和读取服务装置包括:
第一获取模块,用于通过预设的写入接口获取图片数据;
第一调用模块,用于调用预先设置的至少两个组件中的一个,将所述图片数据存储在调用的组件对应的存储设备;其中,各个所述组件分别于各种存储设备一一对应;
生成模块,用于生成与所述图片数据对应的存储图片的访问标识;其中,所述存储图片的访问标识包含调用的组件的信息和图片数据的存储位置信息;
第一回传模块,用于通过所述写入接口回传所述存储图片的访问标识;
第二获取模块,用于通过预设的读取接口获取待读取图片的访问标识;其中,所述待读取图片的访问标识包含有存储待读取图片时调用的组件的信息和所述待读取图片的存贮位置;
第二调用模块,用于基于所述待读取图片的访问标识,调用存储待读取图片时调用的组件;
第三获取模块,用于通过存储待读取图片时调用的组件和所述访问标识,获取存储设备存储的待读取图片;
第二回传模块,用于通过预设的读取接口回传所述待读取图片。
基于本申请第三方面,本申请提供一种图片存储和读取服务设备。本申请提供的图片存储和读取服务设备,包括:
处理器,以及与所述处理器相连接的存储器;
所述存储器用于存储计算机程序;
所述处理器用于调用并执行所述存储器中的所述计算机程序,以执行如本申请第一方面提供的图片存储和读取服务的实现方法。
基于本申请第四方面,本申请提供一种存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如本申请第一方面提供的所述的图片存储和读取服务的实现方法。
本申请采用以上技术方案,具有如下有益效果:
本申请提供的图片存储和读取服务的实现方法,可以通过图片存储和读取服务完成针对不同存储设备的图片数据的存储和读取。如此当业务系统需要进行图片的存储和读取时,只需要与通过使用本申请提供方法的图片存储和读取服务,便可以完成图片的存储,并且业务系统当图片需要存储进入不同的存储介质时,图片存储和读取服务可以根据需要调用不同的存储设备支持接口,进行图片的存储和读取。这种方式下业务系统无需负责在设备上执行创建目录,创建文件,写文件等一系列存储和读取图片数据的操作,不会陷入细节,业务系统可以更加专注的处理其他进程,业务系统不直接对接各个存储设备,仅仅对接图片存储和读取服务,避免了对接不同存储设备时需处理不同存储设备差别,每对接一种新的存储服务均需修改自身代码的问题,使得业务系统自身更加稳定。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个实施例提供的一种图片存储和读取服务的实现方法的流程图。
图2是本申请一个实施例提供的一种图片存储和读取服务的示意图。
图3是本申请提供的方案中配置组件对象链表的方法的流程示意图。
图4是本申请一个实施例提供的一种图片存储和读取服务的实现方法的部分流程图。
图5是本申请一个实施例提供的一种图片存储和读取服务的实现方法的部分流程图。
图6是本申请一个实施例提供的一种图片存储和读取服务的实现方法的部分流程图。
图7是本申请一个实施例提供的一种图片存储和读取服务的实现装置的结构示意图。
图8是本申请一个实施例提供的一种图片存储和读取服务的实现设备的结构示意图。
图9是本申请一个实施例提供的一种图片存储和读取服务的实现装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将对本申请的技术方案进行详细的描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所得到的所有其它实施方式,都属于本申请所保护的范围。
随着科技的进步和社会的发展,图片的存储和读取已经成为一些行业比不可少的一部分,例如:在安防行业会产生大量图片数据,安防行业的业务系统需要将这些图片存储进存储设备中以备后续使用。实际项目中,现场所用存储设备种类繁多,有传统块存储设备或文件存储设备,比如磁盘阵列或者NAS;有各种提供私有接口的云存服务,比如阿里OSS存储,海康图片存储;等等。不同的存储设备支持的接口,对接的方法差异很大。业务系统直接对接这些存储设备技术上虽然可行,但是不利于其聚焦。从业务系统的角度看,它的需求很简单,只是存储图片以备后续使用,需要的只有写入和读取两个接口,完全没必要关心不同存储设备的差异。基于存储设备多样化的现实以及业务系统聚焦自身核心业务的需求,图片存储图片存储和读取服务成为现实需要。本发明提供的图片存储和读取服务是一种涉及一个运行于业务系统和存储设设备之间中间件服务。
实施例一
图1是本申请一个实施例提供的一种图片存储和读取服务的实现方法的流程图。参照图1,本申请提供的图片存储和读取服务的实现方法包括:
S101,通过预设的写入接口获取待存储图片数据;
在实际的应用场景中,预设的写入接口可以为预设的HTTP(Hyper Text TransferProtocol,超文本传输协议)接口。智能终端(此处智能终端指的是需要进行图片存储和读取的设备,例如安防行业中业务系统进行图片存储和读取的终端)通过预设的HTTP接口向图片存储和读取服务的执行主体发送待存储的图片数据,以供图片存储和读取服务进行图片的存储。
需要说明的是,一些互联网公司需要将自身的核心服务开放出来供其他用户访问并使用。其开放的方式为:以HTTP(HypertextTransfer Protocol,超文本传输协议)API(Application ProgramInterface,应用程序接口)的方式开放出来,供外界的合作伙伴和开发者调用。
S102,调用预先设置的至少两个组件中的一个,将图片数据存储在调用的组件对应的存储设备;其中,各个组件分别于各种存储设备一一对应;
实际项目中,现场所用存储设备种类繁多,有传统块存储设备或文件存储设备,比如磁盘阵列或者NAS;有各种提供私有接口的云存服务,比如阿里OSS存储,海康图片存储;实际应用中,无论是以私有SDK接入还是以http协议接入,各个存储服务的接口及使用流程都有明显的差别,接时需处理这些差别,本申请种通过组件化的方式,针对不同的存储装置针对性的设置不同的组件,通过调用不同的组件以完成各个存储服务的接口的使用流程,完成对于图片的储存。
如此设置,当添加新的存储设备时,只需要针对性的添加合适的组件,便可以完成图片存储和读取服务中对于存储设备的添加。
具体的,组件是一个动态库。一个动态库接入一种存储设备(第三方存储服务也可认为是一种设备)。对外,该动态库实现了图片存储和读取服务约定的若干接口,对接各个存储设备;对内,它处理对接具体存储设备的实现。图片存储和读取服务启动时动态加载组件,加载后即可使用组件实现的接口,通过调用这些接口,服务可操作组件接入的存储设备。
图片存储和读取服务约定的组件必须实现的接口包括:
配置接口:该接口输入为配置信息,服务调用该接口将配置文件中和本组件有关的配置信息告知组件;
写入图片接口:该接口输入为图片数据,输出为图片访问标识,图片存储和读取服务调用该接口将图片数据写入存储设备;
图片访问标识判断接口:该接口输入为图片访问标识,返回值为1或0,图片存储和读取服务调用该接口判断图片访问标识是否由该组件的写入图片接口输出(返回值为1代表是)。
读取图片接口:该接口输入为图片访问标识,输出为图片数据,图片存储和读取服务调用该接口从存储设备中读出图片数据。
S103,生成与图片数据对应的存储图片的访问标识;其中,存储图片的访问标识包含调用的组件的信息和图片数据的存储位置信息;
需要说明的是,一般情况下,通过写入图片接口调用组件内容生成存储图片的访问标识,之后通过写入图片接口输出存储图片的访问标识。
具体的,存储图片的访问标识由特定前缀和存储位置信息构成;其中,特定前缀为存储图片时调用的组件的标识。比如存储图片的访问标识为PFSB:/bimg/lis/12345678。其中,”PFSB:”为前缀,”/bimg/lis/12345678”为代表图片存储位置的有用信息。
前缀的作用是支持图片访问标识判断接口快速判断图片访问标识是否由本组件的写入图片接口返回。每个组件的前缀都是固定的,不同组件的前缀各不相同。组件内部可自行决定前缀的具体内容。
S104,通过写入接口回传存储图片的访问标识;
具体的,图片存储和读取服务得存储图片的访问标识后,通过写入接口将存储图片的访问标识发送给在步骤101中发送图片数据的智能终端。
通过上述步骤S101~S105,图片存储和读取服务完成了对于图片的存储。在图片存储的过程中,原本需要负责大执行大部分存储任务的智能终端,仅仅需要进行向图片存储和读取服务发送图片数据,不会陷入图片存储的细节,可以更加专注的处理其他进程。同时,智能终端不直接对接各个存储设备,仅仅对接图片存储和读取服务,避免了对接不同存储设备时需处理不同存储设备差别,每对接一种新的存储服务均需修改自身代码的问题,使得业务系统自身更加稳定。
下面步骤S105~S108为图片存储和读取服务实现图片读取的步骤,具体的:
S105,通过预设的读取接口获取待读取图片的访问标识;其中,待读取图片的访问标识包含有存储待读取图片时调用的组件的信息和待读取图片的存储位置;
在实际的应用场景中,预设的读取接口可以为预设的HTTP(Hyper Text TransferProtocol,超文本传输协议)接口。智能终端(此处智能终端指的是需要进行图片存储和读取的设备,例如安防行业中业务系统进行图片存储和读取的终端)通过预设的HTTP接口向图片存储和读取服务的执行主体发送待读取图片的访问标识,以供图片存储和读取服务读取图片。
需要说明的是,通过本申请提供的图片存储和读取服务进行存储的图片均具有对应的访问标识。访问标识与存储的图片意义对应。本申请提供的图片存储和读取服务在进行图片数据的读取时,需要以访问标识为依据进行。
S106,基于待读取图片的访问标识,调用存储待读取图片时调用的组件;
需要说明的是,在服务内部设置有图片访问标识判断接口。图片访问标识判断接口可以根据待读取图片的访问标识内部的前缀,快速判断图片访问标识是否由本组件的写入图片接口返回。若该图片标识由本组件返回,则本组件为存储待读取图片时调用的组件,只需要调用本组件执行接下来的步骤;若该图片标识不是由本组件返回,则不调用本组件。实际应用中,各个组件的图片访问标识判断接口分别依次判断待读取图片的访问标识是否是由本组件(此处本组件指的是进行判断的图片访问标识判断接口对应的组件)生成并输出。直至确定生成并输出待读取图片的访问标识的组件,或者,所有的组件的图片访问标识判断接口均进行判断。
若所有的组件的图片访问标识判断接口均进行判断,仍未确定生成并输出待读取图片的访问标识的组件,那么则认为待读取图片的访问标识不是由本图片存储和读取服务回传,或者待读取图片的访问标识错误。
S107,通过存储待读取图片时调用的组件和访问标识,获取存储设备存储的待读取图片;
在步骤S106中确定了组件之后,向组件的读取图片接口输入图片访问标识,图片存储和读取服务调用该接口从存储设备中读出图片数据。
S108,通过预设的读取接口回传待读取图片。
具体的,图片存储和读取服务得图片数据后,通过读取接口将图片数据发送给在步骤105中发送获取待读取图片的访问标识智能终端。
通过上述步骤S106~S108,图片存储和读取服务完成了对于图片的读取。在图片存储的过程中,原本需要负责大执行大部分存储任务的智能终端,仅仅需要进行向图片存储和读取服务发送待读取图片的访问标识,不会陷入图片读取的细节,可以更加专注的处理其他进程。同时,智能终端不直接对接各个存储设备,仅仅对接图片存储和读取服务,避免了对接不同存储设备时需处理不同存储设备差别,每对接一种新的存储服务均需修改自身代码的问题,使得业务系统自身更加稳定。
图2是本申请一个实施例提供的一种图片存储和读取服务的结构示意图。参照图2,本申请提供的图片存储和读取服务该服务至少提供如下两个http接口:
写入接口:输入为图片数据,输出为该图片的访问标识。写入接口还有一个可选参数,用于指定存储组件的名字(比如pfs),调用者以此参数明确指示中间服务使用哪个组件存储图片。该可选参数可为空,表示外部不指定存储组件,此时中间服务自行决定使用哪个组件存储图片(具体决定流程在下文中做详细介绍)。
读取接口:输入为写入接口返回的图片访问标识,输出为图片数据。
其中,智能终端(业务系统)只需对接上述两个接口即可。
用于以接入不同的存储设备的可加载组件。
组件是一个动态库。一个动态库接入一种存储设备(第三方存储服务也可认为是一种设备)。对外,该动态库实现了图片存储和读取服务约定的若干接口;对内,它处理对接具体存储设备的实现。图片存储和读取服务启动时动态加载组件,加载后即可使用组件实现的接口,通过调用这些接口,服务可操作组件接入的存储设备。
如图2中具有多个组件,如:海康图片服务读写组件、本地目录读写组件、阿里OSS读写组件,其他存储服务读写组件。需要说明的是,其他存储服务读写组件指的是非上述组件的其他多个组件。
图片存储和读取服务约定的组件必须实现的接口包括:
配置接口:该接口输入为配置信息,服务调用该接口将配置文件中和本组件有关的配置信息告知组件;
写入图片接口:该接口输入为图片数据,输出为图片访问标识,图片存储和读取服务调用该接口将图片数据写入存储设备;
图片访问标识判断接口:该接口输入为图片访问标识,返回值为1或0,图片存储和读取服务调用该接口判断图片访问标识是否由该组件的写入图片接口输出(返回值为1代表是)。
读取图片接口:该接口输入为图片访问标识,输出为图片数据,图片存储和读取服务调用该接口从存储设备中读出图片数据。
其中,组件命名以及组织规则具体为:
(1)每个组件对应的动态库的命令规则为“全英文名字”加“.liso”后缀。比如:pfs.liso;dahua.liso。
(2)每个组件对应的动态库及其依赖文件都用一个和动态库同名的文件夹进行保存,比如对动态库pfs.liso,文件夹的名字为pfs。
(3)所有保存组件及其依赖文件的文件夹都要放到服务的组件扫描目录下等待服务加载。
为了更好地加载各个组件,本申请提供的图片存储和读取服务采用了创建组件对象链表的方式进行。图3是本申请提供的方案中配置组件对象链表的方法的流程示意图。参照图3,本申请提供的设置组件对象链表的方法包括:
S301,逐个枚举组件扫描目录下的子目录;
步骤S301中逐个枚举组件扫描目录下的子目录。其中,扫描目录是预先设置的存储由各个组件信息的目录。各个组件在扫描目录下的均具有对应的子目录。
S302,得到所枚举到的子目录的名字;
S303,动态加载子目录中的同名动态库;
具体的,如果子目录名为pfs,则子目录中同名动态库的名字为pfs.liso)。如果加载失败则重新执行步骤S301,枚举组件扫描目录下的下一个子目录。如果加载成功,继续执行步骤S304。
S304,从加载的动态库中得到相关接口的地址信息;
其中,相关接口的地址信息包括:“配置接口”,“写入图片接口”,“图片访问标识判断接口”以及“读取图片接口”的地址信息。执行步骤S304时,若执行失败则重新执行步骤S301,枚举组件扫描目录下的下一个子目录。如果执行成功,继续执行步骤S305。
S305,将子目录的名字和得到的相关接口的地址信息保存为一个组件对象;
具体的,图片存储和读取服务在内存中,用一个数据结构(称为组件对象)保存步骤S302得到的动态库的名字(不带.liso后缀,比如pfs)和步骤S304中得到的四个接口的地址。
S306,将得到的组件对象放入一个全局链表中进行保存。
执行完步骤S306后,返回执行步骤S301枚举组件扫描目录下的下一个子目录,直至完成组件扫描目录下的每一个子目录的枚举。
通过上述步骤,图片存储和读取服务得到一个链表,该链表中的每个元素都是一个组件的对象,称该链表为组件对象链表。图片存储和读取服务使用链表中的对象即可调用对应组件的接口。
具体的,图片存储和读取服务对组件进行预先配置。其中对组件进行配置的的原理如下:
所有组件的配置都写在同一个ini文件里。单个组件的配置信息都在同一个节里面,该节的名字就是组件动态库的名字,如下所示:
[pfs] (这是pfs.liso组件的配置项)
Ip=192.168.60.21
Port=8080
Path=/bimg/
[dahua] (这是dahua.liso组件的配置项)
Ip=192.168.60.22
Port=8090
Username=root
Password=78910
服务负责读取配置文件,取出各个节下配置信息内容,然后调用与该节同名的组件的“配置接口”将信息告知组件,组件内部自行对服务输入的配置信息进行解析。
例如,对上图中[pfs]节下的配置信息,服务会将如下三行文本告知pfs.liso组件:
ip=192.168.60.21
port=8080
path=/bimg/
pfs组件于是知道存储设备的ip是192.168.60.21,端口为8080,路径为/bimg/。
图片存储和读取服务对组件进行配置的步骤如下:
第一步:图片存储和读取服务逐节读取配置文件中的内容。如果已经读到文件结尾,退出,否则记下该节的名字和配置内容,进行下一步。
第二步:从组件对象链表中找和配置节同名的组件对象。如果找不到,转到第一步,否则进行下一步。
第三步:调用第二步得到的组件对象的配置接口,将第一步得到的配置内容告知组件。转第一步。
通过上述方式完成对于组件的配置。当需要添加新的存储设备时,仅仅根据上述配置方式添加对应的组件,便可以完成新的存储设备的添加。
实际应用中,一些图片是需要保存在特定的存储设备之内,而另一些图片则对于具体的存储设备没有要求。为了更好的应对上述两种情况,本申请提供的一种图片存储和读取服务的实现方法。参照图4,图片存储和读取服务的实现方法的包括:
S401,确定需要调用的组件的名称;
具体的,步骤S401包括,如图5所示的图片存储和读取服务的实现方法的部分流程图。
S501,通过预设的写入接口接收组件的名称;
例如,需将一个图片存储在名为pfs的组件对应的存储设备时,智能终端在向预设的写入接口发送图片数据时,还会发送存储设备对应的组件的名称,即:pfs。
S502,判断是否成功接收组件的名称;
需要说明的是,当无需将一个图片存储在指定的存储设备时,智能终端在向预设的写入接口发送图片数据时,无需发送存储设备对应的组件的名称。此时,将无法成功接收组件的名称,所以通过这个判断步骤可以确定是需要将图片存储进指定的存储设备,还是将图片存储进默认的存储设备。
S503,若成功接收,确定接收的组件的名称为需要调用的组件的名称;
S504,若没有成功接收,确定预设组件名称为需要调用的组件的名称。
其中,当存在多个组件时,服务可通过配置文件指定某个组件的名字,来指定预设组件名称。
配置信息格式如下:
[server_setting]
Default_component=pfs (该配置项指定了预先设置的组件的名字,即:预设组件名称)
一般情况下,预设组件名称对应的组件也被称作默认存储组件。
服务会根据配置文件指定的组件名,从组件对象链表中找出该组件对应的对象,并将该对象设置为默认存储对象。
当只有一个组件时,服务将组件对象链表中的唯一对象设置为默认存储对象。
设置默认存储对象的操作发生在图片存储和读取服务对组件进行配置流程之后,且每次启动只进行一次。
当上传接口未指定存储组件时,中间服务使用默认存储对象写入图片。当上传接口指定存储组件时,中间服务使用指定存储组件写入图片。
S402,基于组件的名称,在预先配置的组件对象链表中,确定组件对象链表中对应组件的名称的目标组件对象;
S403,根据目标组件对象的内部信息,调用目标组件对象的接口。
通过步骤,在步骤S501~步骤S501、步骤S402和步骤S403,本申请提供的方案中,完成了针对是否指定存储设备的图片的存储。
接下来结合本申请的各个实施例对图片存储和读取服务的实现方法进行更详尽的说明。图6是本申请一实施例中提供的图片存储和读取服务的实现方法中图片存储方法的流程示意图:
S601,通过预设的写入接口获取图片数据;
S602,通过预设的写入接口接收组件的名称;
S603,判断是否成功接收组件的名称;
S604,若成功接收,确定接收的组件的名称为需要调用的组件的名称;
S605,若没有成功接收,确定预设组件名称为需要调用的组件的名称。
S606,基于组件的名称,在预先配置的组件对象链表中,确定组件对象链表中对应组件的名称的目标组件对象;
S607,根据目标组件对象内部的信息,调用对应组件的接口。
S608,将图片数据存储在调用的组件对应的存储设备;其中,各个组件分别于各种存储设备一一对应;
S609,生成与图片数据对应的存储图片的访问标识;其中,存储图片的访问标识包含调用的组件的信息和图片数据的存储位置信息;
S610,通过写入接口回传存储图片的访问标识;
通过上述步骤完成对于图片的存储。整个存储的过程中大部分的工作由图片存储和读取服务完成,而非由智能终端(业务系统完成)。这种方式下业务系统无需负责在设备上执行创建目录,创建文件,写文件等一系列存储图片数据的操作,不会陷入细节,业务系统可以更加专注的处理其他进程,业务系统不直接对接各个存储设备,仅仅对接图片存储和读取服务,避免了对接不同存储设备时需处理不同存储设备差别,每对接一种新的存储服务均需修改自身代码的问题,使得业务系统自身更加稳定。
图7是本申请一实施例中提供的图片存储和读取服务的实现方法中图片存储方法的流程示意图:
S701,通过预设的读取接口获取待读取图片的访问标识;其中,待读取图片的访问标识包含有存储待读取图片时调用的组件的信息和待读取图片的存储位置;
S702,逐个调用组件对象链表中每个组件对象的图片访问标识判断接口;
S703,通过图片访问标识判断接口,判断待读取图片的访问标识是否由图片访问标识判断接口对应的组件生成;
S704,若判断结果为是,通过图片访问标识判断接口所在组件对象的内部存储的相关接口的地址信息,调用存储待读取图片时调用的组件。
S705,通过存储待读取图片时调用的组件和访问标识,获取存储设备存储的待读取图片;
S706,通过预设的读取接口回传待读取图片。
过上述步骤完成对于图片的读取。整个读取的过程中大部分的工作由图片存储和读取服务完成,而非由智能终端(业务系统完成)。这种方式下业务系统无需负责在设备上执行创建目录,创建文件,写文件等一系列读取图片数据的操作,不会陷入细节,业务系统可以更加专注的处理其他进程,业务系统不直接对接各个存储设备,仅仅对接图片存储和读取服务,避免了对接不同存储设备时需处理不同存储设备差别,每对接一种新的存储服务均需修改自身代码的问题,使得业务系统自身更加稳定。
实施例二
图8是本申请一个实施例提供的一种图片存储和读取服务的实现装置的结构示意图。参照图8,本申请提供的图片存储和读取服务的实现方法包括:
第一获取模块801,用于通过预设的写入接口获取图片数据;
第一调用模块802,用于调用预先设置的至少两个组件中的一个,将图片数据存储在调用的组件对应的存储设备;其中,各个组件分别于各种存储设备一一对应;
生成模块803,用于生成与图片数据对应的存储图片的访问标识;其中,存储图片的访问标识包含调用的组件的信息和图片数据的存储位置信息;
第一回传模块804,用于通过写入接口回传存储图片的访问标识;
第二获取模块805,用于通过预设的读取接口获取待读取图片的访问标识;其中,待读取图片的访问标识包含有存储待读取图片时调用的组件的信息和待读取图片的存贮位置;
第二调用模块806,用于基于待读取图片的访问标识,调用存储待读取图片时调用的组件;
第三获取模块807,用于通过存储待读取图片时调用的组件和访问标识,获取存储设备存储的待读取图片;
第二回传模块808,用于通过预设的读取接口回传待读取图片。
本申请实施例提供的图片存储和读取服务的实现装置的具体实施方案可以参考以上相关实施例提供的图片存储和读取服务的实现方式,此处不再赘述。
实施例三
图9是本申请一个实施例提供的一种图片存储和读取服务的实现设备的结构示意图。参照图9,本申请提供的图片存储和读取服务的实现设备包括:
处理器901,以及与处理器相连接的存储器902;
存储器901用于存储计算机程序;
处理器901用于调用并执行存储器中的计算机程序,以执行如实施例一提供的图片存储和读取服务的实现方法。
本申请实施例提供的图片存储和读取服务的实现设备的具体实施方案可以参考以上相关实施例提供的图片存储和读取服务的实现方式,此处不再赘述。
实施例四
本实施例提供一种存储介质,其上存储有计算机程序,计算机程序被处理器执行时,实现如实施例一提供的图片存储和读取服务的实现方法。
可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。
需要说明的是,在本申请的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是指至少两个。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本申请的实施例所属技术领域的技术人员所理解。
应当理解,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(PGA),现场可编程门阵列(FPGA)等。
本技术领域的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。
此外,在本申请各个实施例中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。
上述提到的存储介质可以是只读存储器,磁盘或光盘等。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本申请的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
尽管上面已经示出和描述了本申请的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本申请的限制,本领域的普通技术人员在本申请的范围内可以对上述实施例进行变化、修改、替换和变型。
Claims (11)
1.一种图片存储和读取服务的实现方法,其特征在于,包括:
通过预设的写入接口获取图片数据;
调用预先设置的至少两个组件中的一个,将所述图片数据存储在调用的组件对应的存储设备;其中,各个所述组件分别与各种存储设备一一对应;
生成与所述图片数据对应的存储图片的访问标识;其中,所述存储图片的访问标识包含调用的组件的信息和图片数据的存储位置信息;
通过所述写入接口回传所述存储图片的访问标识;
通过预设的读取接口获取待读取图片的访问标识;其中,所述待读取图片的访问标识包含有存储待读取图片时调用的组件的信息和所述待读取图片的存储位置;
基于所述待读取图片的访问标识,调用存储待读取图片时调用的组件;
通过存储待读取图片时调用的组件和所述访问标识,获取存储设备存储的待读取图片;
通过预设的读取接口回传所述待读取图片。
2.根据权利要求1所述的图片存储和读取服务的实现方法,其特征在于:
所述预设的写入接口为HTTP接口;
所述预设的读取接口为HTTP接口。
3.根据权利要求1所述的图片存储和读取服务的实现方法,其特征在于,所述调用预先设置的至少两个组件中的一个,包括:
确定需要调用的组件的名称;
基于所述组件的名称,在预先配置的组件对象链表中,确定所述组件对象链表中对应所述组件的名称的目标组件对象;
根据所述目标组件对象的内部信息,调用所述目标组件对象的接口。
4.根据权利要求3所述的图片存储和读取服务的实现方法,其特征在于,所述确定需要调用的组件的名称,包括:
通过预设的写入接口接收组件的名称;
判断是否成功接收所述组件的名称;
若成功接收,确定接收的组件的名称为需要调用的组件的名称;
若没有成功接收,确定预设组件名称为需要调用的组件的名称。
5.根据权利要求1所述的图片存储和读取服务的实现方法,其特征在于,存储图片的访问标识由特定前缀和存储位置信息构成;
其中,特定前缀为存储图片时调用的组件的标识。
6.根据权利要求1所述的图片存储和读取服务的实现方法,其特征在于,每个组件对应的动态库和依赖文件都用一个和对应动态库同名的文件夹进行保存;
所述文件夹放到服务的组件扫描目录下以等待服务调用。
7.根据权利要求6所述的图片存储和读取服务的实现方法,其特征在于,配置所述组件对象链表的方法包括:
逐个枚举组件扫描目录下的子目录;
得到所枚举到的子目录的名字;
动态加载子目录中的同名动态库;
从加载的动态库中得到相关接口的地址信息;
将所述子目录的名字和得到的相关接口的地址信息保存为一个组件对象;
将得到的组件对象放入一个全局链表中进行保存。
8.根据权利要求7所述的图片存储和读取服务的实现方法,其特征在于,所述基于所述待读取图片的访问标识,调用存储待读取图片时调用的组件,包括:
逐个调用组件对象链表中每个组件对象的图片访问标识判断接口;所述图片访问标识判断接口为所述相关接口中的一个;
通过所述图片访问标识判断接口,判断待读取图片的访问标识是否由所述图片访问标识判断接口对应的组件生成;
若判断结果为是,通过所述图片访问标识判断接口所在组件对象的内部存储的相关接口的地址信息,调用存储待读取图片时调用的组件。
9.一种图片存储和读取服务装置,其特征在于,包括:
第一获取模块,用于通过预设的写入接口获取图片数据;
第一调用模块,用于调用预先设置的至少两个组件中的一个,将所述图片数据存储在调用的组件对应的存储设备;其中,各个所述组件分别于各种存储设备一一对应;
生成模块,用于生成与所述图片数据对应的存储图片的访问标识;其中,所述存储图片的访问标识包含调用的组件的信息和图片数据的存储位置信息;
第一回传模块,用于通过所述写入接口回传所述存储图片的访问标识;
第二获取模块,用于通过预设的读取接口获取待读取图片的访问标识;其中,所述待读取图片的访问标识包含有存储待读取图片时调用的组件的信息和所述待读取图片的存贮位置;
第二调用模块,用于基于所述待读取图片的访问标识,调用存储待读取图片时调用的组件;
第三获取模块,用于通过存储待读取图片时调用的组件和所述访问标识,获取存储设备存储的待读取图片;
第二回传模块,用于通过预设的读取接口回传所述待读取图片。
10.一种图片存储和读取服务设备,其特征在于,包括:
处理器,以及与所述处理器相连接的存储器;
所述存储器用于存储计算机程序;
所述处理器用于调用并执行所述存储器中的所述计算机程序,以执行如权利要求1-8任一项所述的图片存储和读取服务的实现方法。
11.一种存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器执行时,实现如权利要求1~8任一项所述的图片存储和读取服务的实现方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910808105.2A CN110516089A (zh) | 2019-08-29 | 2019-08-29 | 图片存储和读取服务的实现方法、装置、设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910808105.2A CN110516089A (zh) | 2019-08-29 | 2019-08-29 | 图片存储和读取服务的实现方法、装置、设备和存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110516089A true CN110516089A (zh) | 2019-11-29 |
Family
ID=68628990
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910808105.2A Pending CN110516089A (zh) | 2019-08-29 | 2019-08-29 | 图片存储和读取服务的实现方法、装置、设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110516089A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101196832A (zh) * | 2007-12-29 | 2008-06-11 | 北京航空航天大学 | 一种面向照明异构设备的资源代理器 |
CN102638378A (zh) * | 2012-02-22 | 2012-08-15 | 中国人民解放军国防科学技术大学 | 一种集成异构存储设备的海量存储系统监控方法 |
CN104283960A (zh) * | 2014-10-15 | 2015-01-14 | 福建亿榕信息技术有限公司 | 实现异构网络存储的虚拟化整合及分级管理的系统 |
-
2019
- 2019-08-29 CN CN201910808105.2A patent/CN110516089A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101196832A (zh) * | 2007-12-29 | 2008-06-11 | 北京航空航天大学 | 一种面向照明异构设备的资源代理器 |
CN102638378A (zh) * | 2012-02-22 | 2012-08-15 | 中国人民解放军国防科学技术大学 | 一种集成异构存储设备的海量存储系统监控方法 |
CN104283960A (zh) * | 2014-10-15 | 2015-01-14 | 福建亿榕信息技术有限公司 | 实现异构网络存储的虚拟化整合及分级管理的系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111046072A (zh) | 一种数据查询方法、系统、异构计算加速平台及存储介质 | |
EP1782185A1 (en) | Application splitting for network edge computing | |
CN104166607B (zh) | 用于备份数据库的数据处理方法及装置 | |
WO2019223136A1 (zh) | 数据获取方法、装置、计算机设备以及存储介质 | |
CN106326099B (zh) | 一种用于程序跟踪的方法、装置及电子设备 | |
JPH11338804A (ja) | ネットワーク構成管理対象アクセスシステム及び方法 | |
CN110083366B (zh) | 应用运行环境的生成方法、装置、计算设备及存储介质 | |
CN110362341A (zh) | 基于微服务架构的业务管理方法、装置、设备和存储介质 | |
US8385359B2 (en) | Information communication system, connection setting apparatus and non-transitory computer-readable storage medium storing connection setting program | |
WO2024103902A1 (zh) | 一种数据库访问方法、装置、系统、设备及可读存储介质 | |
JP2001290665A (ja) | プロセッサシステム | |
CN110516089A (zh) | 图片存储和读取服务的实现方法、装置、设备和存储介质 | |
CN117056198A (zh) | 一种mock测试方法、装置、介质和计算机设备 | |
CN115714706A (zh) | 基于内嵌h5的访问加速系统、方法、存储介质及电子设备 | |
CN106547485B (zh) | 数据迁移方法及装置 | |
CN115221139A (zh) | 文件读取方法、装置及节点设备 | |
CN114356763A (zh) | 一种适用于HybridApp的H5页面本地调试方法 | |
CN115701077A (zh) | 一种对接微服务网格的方法以及装置 | |
CN103744687B (zh) | 输入/输出端口的访问方法和装置 | |
CN109150993B (zh) | 一种获取网络请求切面的方法、终端装置及存储介质 | |
CN113641641A (zh) | 文件存储服务的切换方法、切换系统、设备及存储介质 | |
CN108733805B (zh) | 文件交互方法、系统、计算机设备和存储介质 | |
CN106878414B (zh) | 数据写请求处理方法、装置及分布式数据存储系统 | |
US11711315B1 (en) | Dynamic endpoint resources discovery in Kubernetes clusters via stable URI locator for workflow services | |
Lehtinen | Scaling a Kubernetes Cluster |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20191129 |