CN114564250B - 一种读取配置方法及装置 - Google Patents
一种读取配置方法及装置 Download PDFInfo
- Publication number
- CN114564250B CN114564250B CN202210190750.4A CN202210190750A CN114564250B CN 114564250 B CN114564250 B CN 114564250B CN 202210190750 A CN202210190750 A CN 202210190750A CN 114564250 B CN114564250 B CN 114564250B
- Authority
- CN
- China
- Prior art keywords
- configuration
- thread
- content
- nginx
- configuration content
- 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 65
- 238000009434 installation Methods 0.000 claims description 10
- 230000002441 reversible effect Effects 0.000 claims description 3
- 230000000977 initiatory effect Effects 0.000 claims description 2
- 230000008569 process Effects 0.000 description 19
- 238000010586 diagram Methods 0.000 description 10
- 230000006870 function Effects 0.000 description 10
- 238000004590 computer program Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 5
- 230000004048 modification Effects 0.000 description 5
- 238000012986 modification Methods 0.000 description 5
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 230000004075 alteration Effects 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 230000003068 static effect Effects 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供一种读取配置方法及装置,用以解决现有技术中Nginx读取配置的方式存在配置文件读取不灵活且可读性差的问题。该方法具体包括:Nginx检测到第一线程发出第一信息时,暂停第一线程;其中,所述第一信息用于指示第一线程从配置文件中读取Nginx对应的第一配置内容;第一配置内容用于配置Nginx的运行属性;Nginx启动第二线程,通过第二线程从嵌入式数据库中读取第二配置内容,将读取到的第二配置内容保存至配置空间;Nginx停止第二线程,启动第一线程,通过第一线程从配置空间获取第二配置内容,根据第二配置内容中的第一配置项,配置Nginx的运行属性。
Description
技术领域
本申请涉及计算机技术领域,具体涉及一种读取配置方法及装置。
背景技术
反向代理服务器(Nginx)是一个支持高并发量且性能优越的反向代理服务器,由于其高性能的表现,Nginx被广泛应用于互联网服务器领域。
目前,Nginx在读取配置以配置其运行时的各项属性时,采用的是配置文件(config,conf)的本地配置文件的形式。在这种形式中,配置文件采用的是文本格式,这种格式的配置文件需要Nginx对文件中的文本内容进行解析,识别文本中的具体的配置内容以及其互相的包含关系,才能顺利读取到配置文件中的配置内容。而这样的Nginx读取配置的方式存在配置文件读取不灵活且可读性差的问题。
发明内容
本申请提出一种读取配置的方法及装置,用以解决现有技术中Nginx读取配置的方式存在配置文件读取不灵活且可读性差的问题。
第一方面,本申请提出一种读取配置的方法,该方法具体包括:Nginx检测到第一线程发出第一信息时,暂停所述第一线程;其中,所述第一信息用于指示所述第一线程从配置文件中读取所述Nginx对应的第一配置内容;所述第一配置内容用于配置所述Nginx的运行属性;所述Nginx启动第二线程,通过所述第二线程从嵌入式数据库中读取第二配置内容,将读取到的所述第二配置内容保存至配置空间;所述Nginx停止所述第二线程,启动所述第一线程,通过所述第一线程从所述配置空间获取所述第二配置内容,根据所述第二配置内容中的第一配置项,配置所述Nginx的运行属性。
在本方案中,由数据表保存Nginx所需要的配置内容,第二线程可以直接从数据表中获取所有的配置内容,而不用像现有技术中,需要由Nginx对文本内容进行解析并识别后进行选择性地获取,提高了读取配置的效率,也提高了配置内容的可读性。并且,由嵌入式数据库保存上述数据表,可以在占用较少的存储空间的同时,高效率地访问嵌入式数据库中的数据表,进一步地提高了读取配置的效率。另外,采用第二线程代替第一线程进行本方案中的配置读取,实现了将配置读取插件化,无需额外修改原有的Nginx的程序代码,即可将第二线程读取配置这一过程,以插件的形式配置到原有的Nginx中,降低了本方案的复杂度,提高了本方案的可靠性与适用性。
可选的,所述嵌入式数据库中包含有至少一张数据表,所述至少一张数据表中的每张数据表对应保存有一种类型的配置内容,所述至少一种数据表中的不同数据表保存有不同类型的配置内容;所述每张数据表中包含至少一个配置项,所述至少一个配置项中的每个配置项包括一个token与token对应的value。
在本方式中,不同的数据表对应保存不同类型的配置内容,且数据表中保存有各个配置项的具体内容,因此,在第二线程读取数据表中的配置内容时,无需对数据表中的内容进行解析识别,即可直接从数据表中获取到配置内容,简化了配置读取的流程,提高了配置读取的效率。
可选的,所述Nginx检测到第一线程发出第一信息之前,所述方法还包括:所述Nginx通过所述第一线程,在所述Nginx的内存空间中,创建所述配置空间。
在本方式中,由第一线程在Nginx的内存中创建配置空间,这样,属于同一个Nginx运行进程的第一线程与第二线程均可直接访问该配置空间,简化了第一线程与第二线程的交互过程,提高了配置读取的效率。
可选的,所述通过所述第二线程从嵌入式数据库中读取第二配置内容,包括:所述Nginx通过所述第二线程读取所述嵌入式数据库中的所有数据表。
在本方式中,第二线程读取嵌入式数据库中的配置内容时,可以直接获取各个数据表中的各项内容,而不用像现有技术中需要先解析文本全文的内容后,再从全文中获取真正的配置内容,因此,通过本方式,简化了配置读取的流程,并提高了配置读取过程的效率以及准确性。
可选的,所述嵌入式数据库的安装位置与所述Nginx的安装位置相同。
在本方式中,Nginx可以在自己的安装目录下使用嵌入式数据库,极大地提高了第二线程读取配置的效率。
可选的,所述配置项内容的类型包括以下一项或多项:全局配置、事件events配置、http配置、服务server配置、路由location配置。
可选的,在所述嵌入式数据库更新之后,所述方法还包括:所述Nginx检测到所述第一线程发出第二信息时,暂停所述第一线程;其中,所述第二信息用于指示所述第一线程从所述配置文件中读取所述Nginx对应的第三配置内容;所述第三配置内容用于配置所述Nginx的运行属性;所述Nginx启动所述第二线程,通过所述第二线程从更新后的嵌入式数据库中读取第四配置内容,将读取到的所述第四配置内容保存至所述配置空间;其中,所述第四配置内容不同于所述第二配置内容;所述Nginx停止所述第二线程,启动所述第一线程;控制所述第一线程从所述配置空间中获取所述第四配置内容,根据所述第四配置内容中的第二配置项,配置所述Nginx的运行属性。
在本方式中,数据表中配置内容的修改可以直接修改数据表中的具体数值,而无需读取文本内容后再进行修改,因此,配置内容具有较高的可读性,且提高了修改配置内容的效率。并且,在数据表中新增或删除配置项的内容时,仅仅只需在数据表中增加内容或删除内容,而无需修改Nginx的程序代码以使Nginx识别新增加的配置内容,在本方式中,Nginx只需要通过第一线程发出读取配置的指令,其余读取配置的步骤均由第二线程完成,简化了读取配置的过程,提高了读取配置的效率。
第二方面,本申请提供一种读取配置的装置,该装置包括:处理单元,用于检测到第一线程发出第一信息时,暂停所述第一线程;其中,所述第一信息用于指示所述第一线程从配置文件中读取Nginx对应的第一配置内容,所述第一配置内容用于配置所述Nginx的运行属性;启动第二线程,通过所述第二线程从嵌入式数据库中读取第二配置内容,将读取到的所述第二配置内容保存至配置空间;停止所述第二线程,启动所述第一线程,通过所述第一线程从所述配置空间获取所述第二配置内容,根据所述第二配置内容中的第一配置项,配置所述Nginx的运行属性;存储单元,用于保存所述第二配置内容。
可选的,所述嵌入式数据库中包含有至少一张数据表,所述至少一张数据表中的每张数据表对应保存有一种类型的配置内容,所述至少一种数据表中的不同数据表保存有不同类型的配置内容;所述每张数据表中包含至少一个配置项,所述至少一个配置项中的每个配置项包括一个token与所述token对应的value。
可选的,在所述处理单元用于检测到第一线程发出第一信息之前,所述处理单元还用于:通过所述第一线程,在所述Nginx的内存空间中,创建所述配置空间。
可选的,所述处理单元用于通过所述第二线程从所述嵌入式数据库中读取所述第二配置内容,具体用于:通过所述第二线程读取所述嵌入式数据库中的所有数据表。
可选的,所述嵌入式数据库的安装位置与所述Nginx的安装位置相同。
可选的,所述配置项内容的类型包括以下一项或多项:全局配置、events配置、http配置、server配置、location配置。
可选的,在所述嵌入式数据库更新之后,所述装置还用于:所述处理单元还用于检测到所述第一线程发出第二信息时,暂停所述第一线程;其中,所述第二信息用于指示所述第一线程从所述配置文件中读取所述Nginx对应的第三配置内容;所述第三配置内容用于配置所述Nginx的运行属性;启动所述第二线程,通过所述第二线程从更新后的所述嵌入式数据库中读取第四配置内容,将读取到的所述第四配置内容保存至所述配置空间;启动所述第四配置内容不同于所述第二配置内容;停止所述第二线程,启动所述第一线程;控制所述第一线程从所述配置空间中获取所述第四配置内容,根据所述第四配置内容中的第二配置项,配置所述Nginx的运行属性;所述存储单元还用于,保存所述第四配置内容。
第三方面,提供一种电子设备,包括:至少一个处理器;以及与所述至少一个处理器通信连接的存储器;其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,使得所述电子设备执行第一方面或第一方面任一种可选的实施方式中所述的方法。
第四方面,提供一种计算机可读存储介质,所述计算机可读存储介质用于存储指令,当所述指令被执行时,使如第一方面或第一方面任一种可选的实施方式中的方法被实现。
本申请实施例中第二、第三以及第四方面中提供的一个或多个技术方案所具有的技术效果或优点,均可以由第一方面中提供的对应的一个或多个技术方案所具有的技术效果或优点对应解释。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种Nginx构成示意图;
图2为本申请实施例提供的一种读取配置方法的流程图;
图3为本申请实施例提供的另一种读取配置方法的流程图;
图4为本申请实施例提供的一种读取配置的结构示意图;
图5为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面通过附图以及具体实施例对本申请技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
需要理解的是,在本申请实施例的描述中,“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。在本申请实施例的描述中“多个”,是指两个或两个以上。
本申请实施例中的术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
Nginx在读取配置文件时,通常遵循以下流程:
首先,当Nginx启动时,会首先在内存中创建存储配置内容的地址空间;
其次,Nginx会在本地的配置文件中按照顺序读取事件events、http、服务server、路由location等不同种类的配置块的内容,并识别这些配置块的相互的包含关系;同时,在读取配置文件的过程中,当Nginx读取到某一个配置块中的某一个配置项内容时,会将第一个字符串当作该配置项的关键字(token),并将该token后的预设个数的字符串分别当作该配置项的值(value);
最后,在Nginx读取完所有的配置文件后,会将读取到的配置项的内容保存至之前在内存中创建的地址空间,以便后续Nginx进行相应的配置。
上述过程中,由于配置文件为文本格式,Nginx在进行读取配置内容时,需要对文件中的内容进行解析,并预先设置读取配置文件文本中固定部分、固定长度的内容,十分的不灵活;并且,由于采用了文本形式的配置文件,当存在修改配置文件的需求时,需要开发人员手动的对配置文件进行读写,当存在新增配置项内容时,则需要在修改配置文件的基础上对应修改Nginx的程序代码,以使Nginx可以正常识别并解析出新增的配置项的内容。
鉴于此,本申请提出一种读取配置的方法,应用于前文所说的Nginx。在本方法中,通过插件的方式,在Nginx中增加线程,用以代替Nginx的主线程完成配置读取。参见图1,为本申请实施例提供的一种Nginx构成示意图,图1中包括第一线程与第二线程,其中,第一线程即为Nginx中用以实现所有读取步骤的主线程,而图1中的第二线程则是本申请实施例中提出的用于完成读取配置内容的新增线程。
参见图2,为本申请实施例提供的一种读取配置的方法的流程图,其具体实施步骤如下:
S201:Nginx检测到第一线程发出第一信息时,暂停第一线程;第一信息用于指示第一线程从配置文件中读取Nginx对应的第一配置内容。
其中,第一线程即为Nginx运行时的主线程,应理解,在一个应用软件运行时,在同一个运行进程下通常会需要运行不同的线程以实现不同的功能,因此,一个应用软件的运行可能需要多个线程进行工作。而在本申请中,是为Nginx提供了一个执行读取配置的线程(即第二线程),该第二线程不同于原先Nginx中的其它线程,只负责为Nginx完成对配置内容的读取,因此,前文所述的主线程(即第一线程)并不是单独指Nginx中的某一个具体线程,而是指Nginx中除第二线程以外的用于完成其它功能的其它线程的总和。换言之,该第一线程既可以是Nginx中仅有的一个线程或是Nginx中存在的多个线程,本申请对其具体数量并不做限定。
每次Nginx启动时,都需要读取配置以完成对Nginx运行时各种属性的配置,例如,需要读取全局块中的配置内容以配置日志存放路径等,还需要读取events块中的配置内容以配置Nginx服务器与用户的网络连接等。因此,当Nginx启动后,可以检测到指示第一线程从配置文件中读取Nginx对应的第一配置内容的第一信息,而在检测到该第一信息后,即可暂停第一线程,并执行如下的步骤S202读取配置。
S202:Nginx启动第二线程,通过第二线程从嵌入式数据库中读取第二配置内容,将读取到的第二配置内容保存至配置空间。
一种可能的实现方式中,第二线程为一种自定义函数,通过该自定义函数,Nginx可以访问嵌入式数据,并读取嵌入式数据库中的配置内容。
嵌入式数据库不同于一般的数据库服务器。在一般的数据库服务器的使用过程中,数据库客户端通常通过数据库驱动程序访问数据库服务器,客户端与服务器是完全两个独立的进程,他们可以分别位于不同的计算机甚至网络中,数据库的客户端和服务器通过传输控制协议(Transmission Control Protocol,TCP)或网际互联协议(InternetProtocol,IP)进行通讯。而嵌入式数据库则不需要数据库驱动程序,它与应用程序同属于一个进程,可以直接将数据库的库文件链接到应用程序中。
可选的,在本申请实施例中,嵌入式数据库的安装位置与Nginx的安装位置相同。这样,Nginx可以在自己的安装目录下使用嵌入式数据库,极大地提高了第二线程读取配置的效率。
可以理解的,在Nginx通过第二线程从嵌入式数据库中读取第二配置内容之前,还需要规定,在嵌入式数据库中保存配置内容的具体存在形式,以及保存配置内容的方式。可选的,嵌入式数据库中的第二配置内容可以采取以下方式进行存储。
首先,对于Nginx需求的不同类型的配置内容,可以分别创建不同的数据表用以保存不同类型的配置内容。可选的,配置内容的类型包括:全局配置、events配置、http配置、server配置、location配置。
例如,Nginx需要的events块的配置,可以创建数据表events_info,用以存储Nginx对应的events块的配置;还例如,可以创建数据表http_info,用以存储Nginx对应的http块的配置,等等。总而言之,在Nginx通过第二线程读取配置时,嵌入式数据库中会包含有至少一张数据表,这至少一张数据表中的每张数据表都保存有一种类型的配置内容,并且不同的数据包保存有不同类型的配置内容。
其次,对于每一张数据表,其保存的配置内容则包含了至少一个配置项,这至少一个配置项中的每个配置项都包括一个令牌(token)以及与该token对应的值(value)。具体的,每个配置项都占据其所在的数据表中的一列或一行的位置。参见表1,为本申请实施例提供的一种数据表的示意图。在表1中,每一列保存了一个配置项的内容,其中,每列的第一行均为token,每列的剩余部分即为token对应的value。
表1
token_1 | token_2 | token_3 |
value_1-1 | value_2-1 | value_3-1 |
value_1-2 | value_2-2 | value_3-2 |
value_1-3 |
可选的,数据表中可以由一列保存一个配置项,也可以由一行保存一个配置项,还可以由固定大小的区域保存一个配置项;并且,其保存的配置项中,token与value的位置也可以根据实际需求设定,如表1中则设定所有列中的第一行为token的位置,还可以设定为所有列中的第十行,或者是按照一行保存一个配置项时,可以设定每行的第一列为token的位置,本申请不做限制。
在本方式中,第二线程读取嵌入式数据库中的配置内容时,可以直接获取各个数据表中的各项内容,而不用像现有技术中需要先解析文本全文的内容后,再从全文中获取真正的配置内容,因此,通过本方式,简化了配置读取的流程,并提高了配置读取过程的效率以及准确性。
而对于上述嵌入式数据库中的至少一张数据表的来源,则可以采用以下几个方式:
方式一、在编写Nginx的程序代码时,由开发人员创建保存有各个配置内容的数据表,并将该数据表保存在嵌入式数据库中。
在本方式中,由开发人员直接创建保存配置内容的数据表,确保了配置内容的准确性。
方式二、在安装Nginx时,通过第二线程获取本地的配置文件,由第二线程识别文本形式的配置文件,并创建保存对应配置内容的数据表,将生成的数据表保存至嵌入式数据库中。
在本方式中,由第二线程创建数据表,既节省了人力成本,不需要开发人员手动添加配置文件,也提高了本方案的适用性,第二线程可以直接根据Nginx自身的配置文件创建数据表,不需要由开发人员单独设置。
在Nginx通过第二线程从嵌入式数据库中读取第二配置内容时,其具体的读取方式可以是:1、读取嵌入式数据库中所有数据表中的每张数据表中的所有内容,2、读取嵌入式数据库中所有数据表中的每张数据表中的部分内容。
在第二线程从嵌入式数据库中读取到第二配置内容后,会将读取到的第一配置项内容保存至配置空间中,同时,第二线程发出完成信息,用以指示第二线程已成功读取到第二配置内容,并将其保存至配置空间各种。Nginx接收到上述完成信息后,执行下面的步骤S203。
S203:Nginx停止第二线程,重新启动第一线程,通过第一线程从配置空间获取第二配置内容,并根据第二配置内容中的第一配置项配置Nginx运行时的各项属性。
Nginx重新启动第一线程后,第一线程直接从配置空间获取第二配置内容。可选的,配置空间是Nginx检测到第一线程发出第一信息之前,通过第一线程在Nginx的内存空间中创建出来的;其中,该配置空间可以根据配置内容的类型分别保存对应的配置内容。
在本方式中,由第一线程在Nginx的内存中创建配置空间,这样,属于Nginx运行进程的第一线程与第二线程均可直接访问该配置空间,简化了第一线程与第二线程的交互过程,提高了配置读取的效率。
第一线程获取到第二配置内容后,根据第二配置内容中的第一配置项,配置Nginx运行时的各种属性。可选的,第一配置项中可以包含第二配置内容中的全部配置项的内容,也可以只包含第二配置内容中的部分配置项的内容,而第一配置项中包含的具体内容,则由第一线程按需提取。
在本方案中,由数据表保存Nginx所需要的配置内容,第二线程可以直接从数据表中获取所有的配置内容,而不用像现有技术中,需要由Nginx对文本内容进行解析并识别后进行选择性地获取,提高了读取配置的效率,也提高了配置内容的可读性。并且,由嵌入式数据库保存上述数据表,可以在占用较少的存储空间的同时,高效率地访问嵌入式数据库中的数据表,进一步地提高了读取配置的效率。另外,采用第二线程代替第一线程进行本方案中的配置读取,实现了将配置读取插件化,无需额外修改原有的Nginx的程序代码,即可将第二线程读取配置这一过程,以插件的形式配置到原有的Nginx中,降低了本方案的复杂度,提高了本方案的可靠性与适用性。
由于在本申请实施例中,配置内容以数据的形式保存在数据表中,因此,对于数据表中,配置内容的修改、阅读、操作都更加便捷。进一步的,当需要在数据表中新增配置项时,也仅需要在空白位置按照原先的保存规则,新增一列或一行字段即可。
可选的,在嵌入式数据库更新之后,Nginx需要再一次读取配置时,参见图3,其具体实施步骤如下:
S301:Nginx检测到第一线程发出第二信息时,暂停第一线程,其中,第二信息用于指示第一线程从配置文件中读取Nginx对应的第三配置内容。
S302:Nginx启动第二线程,通过第二线程从更新后的嵌入式数据库中读取第四配置内容,将读取到的第四配置内容保存至配置空间。
其中,第四配置内容不同于第二配置内容,第四配置内容是嵌入式数据库更新以后的保存在嵌入式数据库中的配置内容。应理解,更新嵌入式数据库既包括修改嵌入式数据库中的任一配置项,也包括新增或删除嵌入式数据库中的任一配置项,本申请不做限制。具体读取过程以及保存过程请参见前文步骤S202中的内容。
S303:Nginx停止第二线程,启动第一线程;控制第一线程从配置空间中获取第四配置内容,根据所述第四配置内容中的第二配置项,配置所述Nginx的运行属性。
其中,第二配置项可以是第四配置内容中的全部配置项,也可以是第四配置内容中的部分配置项,而具体包括的配置项则是由第一线程根据配置需求进行选取的,可以只是更新后的配置项的内容,也可以是更新之前的配置项的内容,本申请不做限制。
在本方式中,数据表中配置内容的修改可以直接修改数据表中的具体数值,而无需读取文本内容后再进行修改,因此,配置内容具有较高的可读性,且提高了修改配置内容的效率。并且,在数据表中新增或删除配置项的内容时,仅仅只需在数据表中增加内容或删除内容,而无需修改Nginx的程序代码以使Nginx识别新增加的配置内容,在本方式中,Nginx只需要通过第一线程发出读取配置的指令,其余读取配置的步骤均由第二线程完成,简化了读取配置的过程,提高了读取配置的效率。
基于同一发明构思,本申请实施例还提供一种读取配置的装置。
参见图4,本申请实施例提供一种读取配置的装置,该装置可以是由上述电子设备或者是该设备中的芯片或集成电路等,该装置包括用于执行上述方法实施例中由电子设备执行的方法的模块/单元/技术手段。
示例性的,该装置400包括:
处理单元401,用于检测到第一线程发出第一信息时,暂停所述第一线程;其中,所述第一信息用于指示所述第一线程从配置文件中读取Nginx对应的第一配置内容,所述第一配置内容用于配置所述Nginx的运行属性;启动第二线程,通过所述第二线程从嵌入式数据库中读取第二配置内容,将读取到的所述第二配置内容保存至配置空间;停止所述第二线程,启动所述第一线程,通过所述第一线程从所述配置空间获取所述第二配置内容,根据所述第二配置内容中的第一配置项,配置所述Nginx的运行属性;
存储单元402,用于存储上述第二配置内容。
作为一种实施例,图4论述的装置可以用于执行图2所示的实施例中所述的方法,因此,对于该装置的各功能模块所能够实现的功能等可参考图2所示的实施例的描述,此处不再赘述。
应当注意,尽管在上文详细描述中提及了装置的若干模块或子模块,但是这种划分仅仅是示例性的并非强制性的。实际上,根据本发明的实施方式,上文描述的两个或更多单元的特征和功能可以在一个模块中具体化。反之,上文描述的一个模块的特征和功能可以进一步划分为由多个模块来具体化。
作为上述装置一种可能的产品形态,参见图5,本申请实施例还提供一种电子设备500,包括:
至少一个处理器501;以及与所述至少一个处理器501通信连接的通信接口503;所述至少一个处理器501通过执行存储器502存储的指令,使得所述电子设备500通过所述通信接口503执行上述方法实施例中任一设备所执行的方法步骤。
可选的,所述存储器502位于所述电子设备500之外。
可选的,所述电子设备500包括所述存储器502,所述存储器502与所述至少一个处理器501相连,所述存储器502存储有可被所述至少一个处理器501执行的指令。附图5用虚线表示存储器502对于电子设备500是可选的。
其中,所述处理器501和所述存储器502可以通过接口电路耦合,也可以集成在一起,这里不做限制。
本申请实施例中不限定上述处理器501、存储器502以及通信接口503之间的具体连接介质。本申请实施例在图5中以处理器501、存储器502以及通信接口503之间通过总线504连接,总线在图5中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图5中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。应理解,本申请实施例中提及的处理器可以通过硬件实现也可以通过软件实现。当通过硬件实现时,该处理器可以是逻辑电路、集成电路等。当通过软件实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现。
示例性的,处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
应理解,本申请实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data EateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DR RAM)。
需要说明的是,当处理器为通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件时,存储器(存储模块)可以集成在处理器中。
应注意,本文描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
作为另一种可能的产品形态,本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质用于存储指令,当所述指令被执行时,使得计算机执行上述方法实例中任一设备所执行的方法步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (14)
1.一种读取配置方法,其特征在于,包括:
反向代理服务器Nginx检测到第一线程发出第一信息时,暂停所述第一线程;其中,所述第一信息用于指示所述第一线程从配置文件中读取所述Nginx对应的第一配置内容;所述第一配置内容用于配置所述Nginx的运行属性;
所述Nginx启动第二线程,通过所述第二线程从嵌入式数据库中读取第二配置内容,将读取到的所述第二配置内容保存至配置空间;
所述Nginx停止所述第二线程,启动所述第一线程,通过所述第一线程从所述配置空间获取所述第二配置内容,根据所述第二配置内容中的第一配置项,配置所述Nginx的运行属性;
其中,所述嵌入式数据库中包含有至少一张数据表,所述至少一张数据表中的每张数据表对应保存有一种类型的配置内容,所述至少一种数据表中的不同数据表保存有不同类型的配置内容;所述每张数据表中包含至少一个配置项,所述至少一个配置项中的每个配置项包括一个关键字token与所述token对应的值value。
2.如权利要求1所述的方法,其特征在于,所述Nginx检测到第一线程发出第一信息之前,所述方法还包括:
所述Nginx通过所述第一线程,在所述Nginx的内存空间中,创建所述配置空间。
3.如权利要求1所述的方法,其特征在于,所述通过所述第二线程从嵌入式数据库中读取第二配置内容,包括:
所述Nginx通过所述第二线程读取所述嵌入式数据库中的所有数据表。
4.如权利要求1所述的方法,其特征在于,所述嵌入式数据库的安装位置与所述Nginx的安装位置相同。
5.如权利要求1所述的方法,其特征在于,所述配置项内容的类型包括以下一项或多项:全局配置、事件events配置、http配置、服务server配置、路由location配置。
6.如权利要求1-5任一项所述的方法,其特征在于,在所述嵌入式数据库更新之后,所述方法还包括:
所述Nginx检测到所述第一线程发出第二信息时,暂停所述第一线程;其中,所述第二信息用于指示所述第一线程从所述配置文件中读取所述Nginx对应的第三配置内容;所述第三配置内容用于配置所述Nginx的运行属性
所述Nginx启动所述第二线程,通过所述第二线程从更新后的所述嵌入式数据库中读取第四配置内容,将读取到的所述第四配置内容保存至所述配置空间;其中,所述第四配置内容不同于所述第二配置内容;
所述Nginx停止所述第二线程,启动所述第一线程;控制所述第一线程从所述配置空间中获取所述第四配置内容,根据所述第四配置内容中的第二配置项,配置所述Nginx的运行属性。
7.一种读取配置装置,其特征在于,包括:
处理单元,用于检测到第一线程发出第一信息时,暂停所述第一线程;其中,所述第一信息用于指示所述第一线程从配置文件中读取Nginx对应的第一配置内容,所述第一配置内容用于配置所述Nginx的运行属性;启动第二线程,通过所述第二线程从嵌入式数据库中读取第二配置内容,将读取到的所述第二配置内容保存至配置空间;停止所述第二线程,启动所述第一线程,通过所述第一线程从所述配置空间获取所述第二配置内容,根据所述第二配置内容中的第一配置项,配置所述Nginx的运行属性;
存储单元,用于保存所述第二配置内容;
其中,所述嵌入式数据库中包含有至少一张数据表,所述至少一张数据表中的每张数据表对应保存有一种类型的配置内容,所述至少一种数据表中的不同数据表保存有不同类型的配置内容;所述每张数据表中包含至少一个配置项,所述至少一个配置项中的每个配置项包括一个token与所述token对应的value。
8.如权利要求7所述的装置,其特征在于,在所述处理单元用于检测到第一线程发出第一信息之前,所述处理单元还用于:
通过所述第一线程,在所述Nginx的内存空间中,创建所述配置空间。
9.如权利要求7所述的装置,其特征在于,所述处理单元用于通过所述第二线程从所述嵌入式数据库中读取所述第二配置内容,具体用于:
通过所述第二线程读取所述嵌入式数据库中的所有数据表。
10.如权利要求7所述的装置,其特征在于,所述嵌入式数据库的安装位置与所述Nginx的安装位置相同。
11.如权利要求7所述的装置,其特征在于,所述配置项内容的类型包括以下一项或多项:全局配置、events配置、http配置、server配置、location配置。
12.如权利要求7-11任一项所述的装置,其特征在于,在所述嵌入式数据库更新之后,所述装置还用于:
所述处理单元还用于检测到所述第一线程发出第二信息时,暂停所述第一线程;其中,所述第二信息用于指示所述第一线程从所述配置文件中读取所述Nginx对应的第三配置内容;所述第三配置内容用于配置所述Nginx的运行属性;启动所述第二线程,通过所述第二线程从更新后的所述嵌入式数据库中读取第四配置内容,将读取到的所述第四配置内容保存至所述配置空间;启动所述第四配置内容不同于所述第二配置内容;停止所述第二线程,启动所述第一线程;控制所述第一线程从所述配置空间中获取所述第四配置内容,根据所述第四配置内容中的第二配置项,配置所述Nginx的运行属性;
所述存储单元还用于保存所述第四配置内容。
13.一种电子设备,其特征在于,包括:
至少一个处理器;以及与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述至少一个处理器通过执行所述存储器存储的指令,使得所述电子设备执行如权利要求1-6中任一项所述的方法。
14.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储指令,当所述指令被执行时,使如权利要求1-6中任一项所述的方法被实现。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210190750.4A CN114564250B (zh) | 2022-02-28 | 2022-02-28 | 一种读取配置方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210190750.4A CN114564250B (zh) | 2022-02-28 | 2022-02-28 | 一种读取配置方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114564250A CN114564250A (zh) | 2022-05-31 |
CN114564250B true CN114564250B (zh) | 2023-10-31 |
Family
ID=81715657
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210190750.4A Active CN114564250B (zh) | 2022-02-28 | 2022-02-28 | 一种读取配置方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114564250B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108829459A (zh) * | 2018-05-31 | 2018-11-16 | 康键信息技术(深圳)有限公司 | 基于Nginx服务器的配置方法、装置、计算机设备和存储介质 |
CN109032620A (zh) * | 2018-07-20 | 2018-12-18 | 北京百度网讯科技有限公司 | 应用程序的配置文件生成方法和装置 |
CN109347675A (zh) * | 2018-10-31 | 2019-02-15 | 新华三大数据技术有限公司 | 服务器配置方法、装置以及电子设备 |
CN110795140A (zh) * | 2019-09-26 | 2020-02-14 | 连连银通电子支付有限公司 | 一种配置文件生成方法及装置 |
CN112114866A (zh) * | 2020-09-01 | 2020-12-22 | 苏州紫焰网络科技有限公司 | 一种json文件的数据转换加载方法、装置及存储介质 |
CN113760442A (zh) * | 2020-10-19 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种应用的运行和访问方法、装置及设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8832651B2 (en) * | 2010-03-30 | 2014-09-09 | Hewlett-Packard Development Company, L.P. | Central service provisioning system |
-
2022
- 2022-02-28 CN CN202210190750.4A patent/CN114564250B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108829459A (zh) * | 2018-05-31 | 2018-11-16 | 康键信息技术(深圳)有限公司 | 基于Nginx服务器的配置方法、装置、计算机设备和存储介质 |
CN109032620A (zh) * | 2018-07-20 | 2018-12-18 | 北京百度网讯科技有限公司 | 应用程序的配置文件生成方法和装置 |
CN109347675A (zh) * | 2018-10-31 | 2019-02-15 | 新华三大数据技术有限公司 | 服务器配置方法、装置以及电子设备 |
CN110795140A (zh) * | 2019-09-26 | 2020-02-14 | 连连银通电子支付有限公司 | 一种配置文件生成方法及装置 |
CN112114866A (zh) * | 2020-09-01 | 2020-12-22 | 苏州紫焰网络科技有限公司 | 一种json文件的数据转换加载方法、装置及存储介质 |
CN113760442A (zh) * | 2020-10-19 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 一种应用的运行和访问方法、装置及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114564250A (zh) | 2022-05-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109976761B (zh) | 软件开发工具包的生成方法、装置及终端设备 | |
CN107360224B (zh) | 分布式系统中序列号生成方法、系统、设备及存储介质 | |
CN104391690B (zh) | 一种应用开发系统及方法 | |
US9274782B2 (en) | Automated computer application update analysis | |
CN104881318A (zh) | 一种接口调用方法、装置及终端 | |
CN108287708B (zh) | 一种数据处理方法、装置、服务器及计算机可读存储介质 | |
CN107092491B (zh) | 一种配置加载方法和系统 | |
CN110084486B (zh) | 一种资源管理方法及装置 | |
CN104980454A (zh) | 一种资源数据共享方法、服务器及系统 | |
CN112581018B (zh) | 一种流程任务管理方法、系统、装置以及存储介质 | |
CN113778848A (zh) | 测试代码生成方法、装置、计算机系统及介质 | |
JP2001134526A (ja) | 論理区画クラスタに資源を割り当てる方法および装置 | |
US8984542B2 (en) | Method and system for binding objects in dynamic programming languages using caching techniques | |
CN106873970B (zh) | 一种操作系统的安装方法和装置 | |
CN110928802A (zh) | 基于自动生成用例的测试方法、装置、设备及存储介质 | |
US9870314B1 (en) | Update testing by build introspection | |
CN114090113B (zh) | 数据源处理插件动态加载的方法、装置、设备及存储介质 | |
CN106201859A (zh) | 一种回归测试方法及系统 | |
CN110717050A (zh) | 一种知识图谱数据库的访问方法及装置 | |
CN104700255B (zh) | 多进程处理方法、装置和系统 | |
CN114564250B (zh) | 一种读取配置方法及装置 | |
CN111522881B (zh) | 业务数据处理方法、装置、服务器及存储介质 | |
CN111459474B (zh) | 一种模板化的数据处理方法及装置 | |
US11275571B2 (en) | Unified installer | |
CN112650563A (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 |