CN117834410A - 信息获取方法、装置、设备和计算机可读存储介质 - Google Patents

信息获取方法、装置、设备和计算机可读存储介质 Download PDF

Info

Publication number
CN117834410A
CN117834410A CN202211184576.9A CN202211184576A CN117834410A CN 117834410 A CN117834410 A CN 117834410A CN 202211184576 A CN202211184576 A CN 202211184576A CN 117834410 A CN117834410 A CN 117834410A
Authority
CN
China
Prior art keywords
software package
dns server
configuration file
information
command
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
CN202211184576.9A
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 Mobile Communications Group Co Ltd
China Mobile Chengdu ICT Co Ltd
Original Assignee
China Mobile Communications Group Co Ltd
China Mobile Chengdu ICT 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 Mobile Communications Group Co Ltd, China Mobile Chengdu ICT Co Ltd filed Critical China Mobile Communications Group Co Ltd
Priority to CN202211184576.9A priority Critical patent/CN117834410A/zh
Publication of CN117834410A publication Critical patent/CN117834410A/zh
Pending legal-status Critical Current

Links

Landscapes

  • Information Transfer Between Computers (AREA)

Abstract

本发明实施例公开了一种信息获取方法、装置、设备和计算机可读存储介质。该方法包括:读取配置文件;根据配置文件中设置的注册表地址,确定域名系统DNS服务器。响应于关于目标软件包的执行命令,向DNS服务器发送基于用户数据报协议UDP的服务请求,使得DNS服务器根据服务请求确定目标软件包的属性信息;接收DNS服务器发送的属性信息。终端基于UDP协议与DNS服务器进行通信连接即可获取软件包的属性信息,UDP协议没有TCP协议的握手、确认、窗口、重传、拥塞控制等机制,提高了获取软件包的属性信息的效率。在UDP协议的数据报文中无需添加序号、确认信号、控制标志等信息,降低了网络流量消耗。

Description

信息获取方法、装置、设备和计算机可读存储介质
技术领域
本发明涉及计算机技术领域,尤其涉及一种信息获取方法、装置、设备和计算机可读存储介质。
背景技术
远程仓库中存储有多个软件包(也可以称为依赖包、安装包),当终端需要安装软件包时,需要向远程仓库发送基于传输控制协议(Transmission Control Protocol,TCP)的超文本传输协议(Hyper Text Transfer Protocol,HTTP)请求。第一次向远程仓库发送HTTP请求,获取软件包的基础信息(也可以成为属性信息),对基础信息进行解析,得到软件包的存储地址,然后根据存储地址,第二次向远程仓库发送HTTP请求(即安装请求),从而下载到软件包。
上述终端基于TCP协议与远程仓库建立通信联系,获取软件包的基础信息的方式,由于基于TCP协议的通信方式,在正式通信前必须要先经过三次握手机制建立网络连接,因此导致了每个HTTP请求消耗的时间过长,降低了获取软件包的基础信息的效率。而且,在进行数据发送时,由于TCP协议是一种可靠的通信协议,具有确认、窗口、重传、拥塞控制等机制,因此TCP协议数据报文中会包含序号、确认信号、控制标志等与软件包不相关的其他信息,将使用更多的网络流量,增加了网络流量消耗。
发明内容
本发明实施例提供一种信息获取方法、装置、设备和计算机可读存储介质,提高了获取软件包的属性信息的效率,降低了网络流量消耗。
本发明实施例的技术方案是这样实现的:
第一方面,本发明实施例提供一种信息获取方法,所述方法包括:读取配置文件;根据所述配置文件中设置的注册表地址,确定域名系统DNS服务器;响应于关于目标软件包的执行命令,向所述DNS服务器发送基于用户数据报协议UDP的服务请求,使得所述DNS服务器根据所述服务请求确定所述目标软件包的属性信息;接收所述DNS服务器发送的所述属性信息。
第二方面,本发明实施例提供一种信息获取装置,所述装置包括:读取模块,用于读取配置文件;确定模块,用于根据所述配置文件中设置的注册表地址,确定域名系统DNS服务器;发送模块,用于响应于关于目标软件包的执行命令,向所述DNS服务器发送基于用户数据报协议UDP的服务请求,使得所述DNS服务器根据所述服务请求确定所述目标软件包的属性信息;接收模块,用于接收所述DNS服务器发送的所述属性信息。
第三方面,本发明实施例提供一种信息获取设备,所述设备包括:存储器,用于存储可执行计算机程序;处理器,用于执行所述存储器中存储的可执行计算机程序时,实现上述信息获取方法。
第四方面,本发明实施例提供一种计算机可读存储介质,存储有计算机程序,用于被处理器执行时,实现上述信息获取方法。
本发明实施例提供了一种信息获取方法、装置、设备和计算机可读存储介质。根据本发明实施例提供的方案,读取配置文件;根据配置文件中设置的注册表地址,确定域名系统DNS服务器,由于DNS服务器是本地搭建的、预先存储有多个软件包的属性信息的服务器,使得终端与DNS服务器进行通信即可获取软件包的属性信息。响应于关于目标软件包的执行命令,向DNS服务器发送基于用户数据报协议UDP的服务请求,使得DNS服务器根据服务请求确定目标软件包的属性信息;接收DNS服务器发送的属性信息。在获取软件包的属性信息时,由于DNS服务器是本地搭建,其DNA注册表中存储有多个软件包的属性信息,终端可以基于UDP协议与其进行通信连接;UDP协议没有握手机制。基于UDP协议的服务请求的数据报文传输更快,缩短了每个服务请求的时间,提高了获取软件包的属性信息的效率。基于UDP协议的数据报文没有确认、窗口、重传、拥塞控制等机制,在UDP协议的数据报文中无需添加序号、确认信号、控制标志等信息,相较于TCP协议的数据报文,UDP协议的数据报文占用网络资源更少,降低了网络流量消耗。
附图说明
图1为本发明实施例提供的一种终端和服务端之间的通信交互的可选的示意图;
图2为本发明实施例提供的一种信息获取方法的可选的步骤流程图;
图3为本发明实施例提供的一种命令执行过程的可选的示意图;
图4为本发明实施例提供的另一种信息获取方法的可选的步骤流程图;
图5为本发明实施例提供的一种报文段结构的示例性的示意图;
图6为本发明实施例提供的再一种信息获取方法的可选的步骤流程图;
图7为本发明实施例提供的一种信息获取装置的可选的结构示意图;
图8为本发明实施例提供的一种信息获取设备组成结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述。应当理解的是,此处所描述的一些实施例仅仅用以解释本发明的技术方案,并不用于限定本发明的技术范围。
为了更好地理解本发明实施例中提供的信息获取方法,在对本发明实施例的技术方案进行介绍之前,先对相关技术进行说明。
相关技术如图1所示,图1为本发明实施例提供的一种终端和服务端之间的通信交互的可选的示意图,图1中示出了终端(也可以称为客户端、用户端)与服务端(Server)之间的通信交互示意图,终端(Client)利用软件包管理npm工具(Node Package Manager)对Nodejs软件包(也可以称为安装包、依赖包、依赖软件包)进行管理(安装、更新等),npm是Nodejs软件包管理和分发的工具。当初始化一个前端项目或者Nodejs项目时,需要先新建一个本地文件,本地文件可以表示成package.json文件,在该package.json文件中写入该项目的基本信息,例如:作者、版本信息、依赖软件包列表等信息。其中,Nodejs是一个基于Chrome V8引擎的JavaScript运行环境,json是一种开放的标准文件格式和数据交换格式。package.json文件用于存储多个依赖软件包的包信息(也可以称为属性信息),在package.json文件中,dependencies/devDependencies设置了作为依赖安装的npm软件包的列表。在图1中,当npm工具执行安装或更新命令时,npm工具检查npmrc文件(对应于配置文件)获取其配置设置,根据配置文件中设置的注册表地址(即服务端的地址),向服务端(可以理解为存储多个依赖软件包以及其包信息的远程仓库)发送基于TCP协议的HTTP请求。示例性的,服务端可以是CouchDB Server,CouchDB是一个开源的面向文档的非关系型(NoSQL)数据库。
在图1中,终端和服务端之间基于TCP协议建立TCP通信连接(Establish TCPconnection),当npm工具执行安装或更新命令时,对于package.json中设置的每一个依赖软件包,npm工具都会发出一个基于TCP协议的HTTP请求来获取该依赖软件包的包信息(即属性信息),图1中以终端发送HTTPS请求、获取依赖软件包信息事件(event)示出,该HTTP请求将返回一个包括依赖软件包的所有包信息的JSON文档,即Respond 200OK:返回包含所有包信息一个JSON文档。然后,终端和服务端之间断开TCP通信连接(Disconnect TCPconnection)。JSON文档包括该依赖软件包的名称、描述、作者、版本信息、存储库对应的统一资源定位器(uniform resource locator,URL)信息等包信息,其中,URL也可以称为全球广域网(World Wide Web,Web)地址,存储库URL信息也可以理解为依赖软件包的下载地址、URL地址或存储地址等。npm工具解析JSON文档,获取JSON文档中依赖软件包的包信息,包信息包括但不限于名称、描述、版本信息、存储库URL信息、作者等,根据解析到的版本信息和存储库URL信息,对依赖软件包进行下载,安装该依赖软件包。
需要说明的是,图1中在基于TCP协议发起请求和返回JSON文档之前,建立通信连接需要经过三次握手,终止(断开)通信连接需要经过四次握手,图1中仅是以建立通信连接、断开通信连接为例进行示出,对其详细过程未展开描述。
示例性的,以在package.json设置了lodash依赖软件包为例,当npm工具执行安装或更新命令时,发出http://registry.npmjs.com/lodash请求(即HTTP请求),该HTTP请求将返回一个JSON文档,JSON文档包括loadsh软件包的作者、版本信息、下载地址(即存储库URL信息)等信息。当npm工具执行安装命令时,npm工具将直接根据JSON文档中的下载地址,对loadsh软件包进行下载,安装loadsh软件包。当npm工具执行更新命令时,npm工具将JSON文档中返回的包信息中版本信息与package.json文件中设置的loadsh版本信息进行对比,若JSON文档中的版本号高于package.json文件中的版本号,npm将根据JSON文档中的下载地址重新对loadsh软件包进行下载,安装loadsh软件包。
由于现在每个项目开发都会依赖大量的软件包,npm工具每次执行安装、更新命令都会发出大量的HTTP请求,以获取依赖软件包的信息,降低了npm工具的执行效率,同时也占用了大量的网络资源。由于上述发送的http://registry.npmjs.com/lodash请求(即HTTP请求)中的registry.npmjs.com是远程仓库的网站,因此还存在获取依赖包信息失败的情况,依赖包信息获取失败也就意味着安装、更新该依赖包失败,上述问题都将降低软件开发、软件部署的成功率和执行效率。
采用上述图1中所示的通信方式,每当npm工具执行安装、更新命令时,针对每个依赖软件包,都会发出一个基于TCP协议的HTTP请求,而TCP协议在正式通信前必须要先经过三次握手机制建立网络连接,导致每个HTTP请求消耗的时间过长。在发送数据(即JSON文档)时,TCP协议具有确认、窗口、重传、拥塞控制等机制,因此,TCP协议数据报文中包括与软件包不相关的其他信息,将使用更多的网络流量。服务端根据HTTP请求响应头部信息“CouchDB/1.5.0”确定该请求实质上是对npm数据库进行(快速缓存)HTTP查询。HTTP请求返回的主体是一个JSON文档,其包含所有包信息(名称、描述、作者、版本信息、存储库URL信息等),即使终端只是想检查项目中依赖软件包的版本信息,终端依旧必须在查询每个软件包时,每次都解析一个完整的大型JSON文档,造成了网络资源的浪费。
本发明实施例提供一种信息获取方法,如图2所示,图2为本发明实施例提供的一种信息获取方法的步骤流程图,信息获取方法包括以下步骤:
S101、读取配置文件。
S102、根据配置文件中设置的注册表地址,确定域名系统DNS服务器。
在本发明实施例中,可以由终端任一软件包管理模块执行本发明实施例提供的信息获取方法,示例性的,可以采用终端中npm工具执行本发明实施例提供的信息获取方法(安装和更新软件包)。配置文件(npmrc)是npm工具的配置设置,配置文件中设置注册表地址,注册表地址可以理解为服务端的通信路径,npm工具可以通过读取配置文件,获得其可以进行通信的服务端,也就是知道向哪个服务端发送服务请求。这里的服务端是本地搭建的域名系统(Domain Name System,DNS)服务器。npm工具通过读取配置文件,根据配置文件中设置的注册表地址,确定DNS服务器,实现了终端和本地搭建的服务端之间的通信,而不是终端向远程仓库进行通信。相关技术中发送的http://registry.npmjs.com/lodash请求(即HTTP请求)中的registry.npmjs.com是远程仓库的网站,远程仓库未部署在本地,在通信连接时,必须与系管理员协商或使用代理才能够访问,会存在被防火墙拦截的问题,而本地搭建的服务端(DNS服务器搭建在了本地)不会阻止,减少了防火墙拦截的问题,避免了查询registry.npmjs.com对应的服务器被拦截等问题,提高了信息获取效率。
在一些实施例中,配置文件包括优先级从低到高的内置配置文件、全局配置文件、用户配置文件和项目配置文件;上述图2中S101和S102可以通过以下方式实现。按照优先级从低到高的顺序依次读取配置文件;若读取到内置配置文件设置有注册表地址,则根据内置配置文件中设置的注册表地址,确定DNS服务器;若读取到内置配置文件和全局配置文件均设置有注册表地址,则根据全局配置文件中设置的注册表地址,确定DNS服务器;若读取到内置配置文件、全局配置文件和用户配置文件均设置有注册表地址,则根据用户配置文件中设置的注册表地址,确定DNS服务器;若读取到内置配置文件、全局配置文件、用户配置文件和项目配置文件均设置有注册表地址,则根据项目配置文件中设置的注册表地址,确定DNS服务器。
在本发明实施例中,配置文件优先级如下:项目配置文件>用户配置文件>全局配置文件>内置配置文件。npm工具会按照优先级从低到高依次读取配置文件,若多个配置文件都配置了注册表(registry)地址,后读取的会覆盖之前的配置文件,也就是说,优先级高的配置文件会覆盖优先级低的配置文件。示例性的,在用户配置文件和全局配置文件中都配置了注册表地址,npm工具会先读取全局配置文件,再读取用户配置文件,用户配置文件中设置的注册表地址会覆盖全局配置文件中的注册表地址。
需要说明的是,不是每个配置文件中都配置有注册表地址,内置配置文件是默认的配置文件,内置配置文件中设置了注册表地址,在软件包下载之后,安装该依赖包所对应的默认配置文件。其他配置文件(全局配置文件、用户配置文件和项目配置文件)中是否配置有注册表地址,需要由用户进行设置。示例性的,全局配置文件表示内置配置文件外围的配置文件,可以供用户自己更改,例如,用户频繁使用镜像源,某公司一直将下载的依赖包存储在本公司的镜像源中,在全局配置文件中可以将镜像源地址修改为本公司的镜像源地址。用户配置文件表示不同的用户登陆电脑,对应的配置信息不同,即对于不同的用户,其配置文件不同。项目配置文件表示不同的项目所对应的配置信息不同,即对于不同的项目,其配置文件不同。
在本发明实施例中,若读取到内置配置文件设置有注册表地址,其他配置文件中均没有设置注册表地址,则根据内置配置文件中设置的注册表地址,确定DNS服务器。若读取到内置配置文件和全局配置文件均设置有注册表地址,而其他配置文件中没有设置注册表地址,则全局配置文件中设置的注册表地址会覆盖内置配置文件中的注册表地址,根据全局配置文件中设置的注册表地址,确定DNS服务器。若读取到内置配置文件、全局配置文件和用户配置文件均设置有注册表地址,而其他配置文件中没有设置注册表地址,则用户配置文件中设置的注册表地址覆盖其他配置文件中设置的注册表地址,根据用户配置文件中设置的注册表地址,确定DNS服务器。若读取到内置配置文件、全局配置文件、用户配置文件和项目配置文件均设置有注册表地址,则项目配置文件中设置的注册表地址覆盖其他配置文件中设置的注册表地址,根据项目配置文件中设置的注册表地址,确定DNS服务器。
在本发明实施例中,npm工具按照优先级从低到高的顺序依次读取配置文件,根据优先级高的配置文件中设置的注册表地址确定DNS服务器,提高了所确定DNS服务器的准确性。
在一些实施例中,上述图2中S101之前,该信息获取方法还包括以下步骤。在配置文件的用户配置文件或全局配置文件中,将目标软件包的注册表地址修改为DNS服务器对应的注册表地址;对应的执行命令包括本地安装命令、全局安装命令、本地更新命令和全局更新命令;或者,在配置文件的项目配置文件、用户配置文件或全局配置文件中,将目标软件包的注册表地址修改为DNS服务器对应的注册表地址;对应的执行命令包括本地安装命令和本地更新命令。
在本发明实施例中,npm工具对应的配置文件中设置有注册表地址,使得在执行npm安装、更新命令时,将向配置文件中设置的注册表地址发起请求。内置配置文件是默认的配置文件,其设置的注册表地址可以是依赖软件包(目标软件包是依赖软件包中任意一个软件包)的注册表地址。本发明实施例中终端的npm工具还根据实际需要(例如执行命令的需求)在其他配置文件(用户配置文件或全局配置文件)中,添加获取注册表地址,例如:@myscope:registry=dns.npmjs.com,@myscope:registry表示依赖软件包所在远程仓库的注册表地址,dns.npmjs.com表示依赖软件包所在DNS服务器对应的注册表地址。也就是将依赖软件包的注册表地址(即依赖软件包所在的远程仓库)修改为DNS服务器对应的注册表地址,使得npm工具读取配置文件,确定DNS服务器。该注册表地址的修改方案(修改项目配置文件、用户配置文件或全局配置文件中的注册表地址)所对应的执行命令可以包括本地安装命令和本地更新命令。
在本发明实施例中,由于npm工具在执行全局安装命令和全局更新命令时,不会读取每个项目中的配置文件(对应于项目配置文件)设置的参数,因此,该参数不能设置在每个项目的配置文件上,需要设置在每个用户的配置文件(对应于用户配置文件)上或者优先级更低的配置文件(例如,全局配置文件)上。该注册表地址的修改方案(修改用户配置文件或全局配置文件中的注册表地址)所对应的执行命令可以包括本地安装命令、全局安装命令、本地更新命令和全局更新命令。
在本发明实施例中,按照优先级从低到高的顺序将目标软件包的注册表地址修改为DNS服务器的地址。将依赖软件包的注册表地址写进合适的配置文件中,使得在后续根据依赖软件包的更改情况,在较小范围内,对配置文件中的注册表信息进行修改,例如,根据分配权重修改全局配置文件,根据个人喜好信息修改用户配置文件,根据项目信息修改项目配置文件,从而提高了处理效率。
S103、响应于关于目标软件包的执行命令,向DNS服务器发送基于用户数据报协议UDP的服务请求,使得DNS服务器根据服务请求确定目标软件包的属性信息。
在一些实施例中,DNS服务器是基于运行环境Node模块进行搭建的;DNS服务器的DNS注册表中存储有多个软件包的属性信息,多个软件包包括目标软件包。
在本发明实施例中,终端中npm工具响应于执行命令,向DNS服务器发送基于用户数据报协议(User Datagram Protocol,UDP)的服务请求,DNS服务器的DNS注册表中存储有多个软件包的属性信息,DNS服务器可以根据服务请求确定目标软件包的属性信息,然后DNS服务器向npm工具发送目标软件包的属性信息。
在本发明实施例中,该技术方案包括DNS服务器(基于UDP请求协议的服务器)的搭建以及npm工具的执行过程两个部分。可以使用node-dns(即运行环境Node模块)搭建一个DNS服务器,并将最新版本的软件包或特定版本的软件包的存储库URL地址、版本号、描述信息等信息放入DNS服务器对应的DNS注册表中。终端可以通过DNS注册表查询依赖软件包特定的信息(例如,版本信息、存储信息等)。示例性的,以软件包是依赖软件包lodash为例,终端的npm工具在执行命令dig+short-t TXT lodash.versions.0.3.0.dist.dns.npmjs.com时,DNS服务器将返回{shasum:"e7db413e8b50d48834e86f82c52fd64f0a9e5d6e",tarball:"http://registry.np mjs.org/lodash/-/lodash-0.3.0.tgz"},即返回依赖软件包lodash的存储库URL信息,终端的npm工具在执行命令dig+short-t TXT lodash.dist-tags.latest.dns.npmjs.com时,将返回3.10.1,即返回依赖软件包lodash的版本信息。本发明实施例将npm工具根据依赖声明检查包是否已安装或者是否需要更新问题转变为从DNS注册表中查询信息(版本信息或存储信息)的问题,提高了信息获取效率。
S104、接收DNS服务器发送的属性信息。
在本发明实施例中,针对HTTP请求消耗的时间过长、需要更多的网络流量和网络资源浪费等技术问题,本发明实施例中将基于UDP协议的服务请求替换原来基于TCP协议的HTTP服务请求来获取软件包信息(即属性信息)。UDP协议没有握手、确认、窗口、重传、拥塞控制等机制。由于UDP协议的服务请求没有TCP协议的握手机制,数据报文传输更快,缩短了每个服务请求的时间,提高了npm的执行效率。而且,由于UDP协议的数据报文没有确认、窗口、重传、拥塞控制等机制,在UDP协议的数据报文中无需添加序号、确认信号、控制标志等信息。示例性的,TCP协议的数据报文首部开销为20字节,而UDP协议的数据报首部开销为8个字节,相较于TCP协议的数据报文,UDP协议的数据报文更小,占用网络资源更少。通过从DNS服务器的注册表查询依赖软件包的单项信息替换原获取依赖软件包的全量信息(即所有包信息)的方式进行包信息获取,示例性的,终端在检查项目中依赖软件包的版本信息(是单项信息)时,只需要获取该依赖软件包的版本信息即可,无需获取该依赖软件包的全部信息(例如名称、描述、作者、版本信息、存储库URL信息等),减少了网络资源的浪费。
根据本发明实施例提供的方案,读取配置文件;根据配置文件中设置的注册表地址,确定域名系统DNS服务器,由于DNS服务器是本地搭建的、预先存储有多个软件包的属性信息的服务器,使得终端与DNS服务器进行通信即可获取软件包的属性信息。响应于关于目标软件包的执行命令,向DNS服务器发送基于用户数据报协议UDP的服务请求,使得DNS服务器根据服务请求确定目标软件包的属性信息;接收DNS服务器发送的属性信息。在获取软件包的属性信息时,由于DNS服务器是本地搭建,其DNA注册表中存储有多个软件包的属性信息,终端可以基于UDP协议与其进行通信连接;UDP协议没有握手机制。基于UDP协议的服务请求的数据报文传输更快,缩短了每个服务请求的时间,提高了获取软件包的属性信息的效率。基于UDP协议的数据报文没有确认、窗口、重传、拥塞控制等机制,在UDP协议的数据报文中无需添加序号、确认信号、控制标志等信息,相较于TCP协议的数据报文,UDP协议的数据报文占用网络资源更少,降低了网络流量消耗。
在一些实施例中,属性信息包括版本信息和存储信息;在上述图2中S104之后,该信息获取方法还包括以下步骤。根据版本信息,在本地缓存库中查询目标软件包的下载状态;当满足下载状态是未下载的情况时,基于存储信息下载目标软件包。
在本发明实施例中,npm工具的执行过程包括配置文件检查阶段、获取包信息阶段和下载资源包阶段,如图3所示,图3为本发明实施例提供的一种命令执行过程的可选的示意图,当npm工具在执行安装、更新命令时,需要经过配置文件检查、获取包信息、获取包内容(即下载资源包)这3个阶段。图3中在npm安装(npm install)之后,npm工具通过对配置文件进行检查,确定DNS服务器,然后基于UDP协议从DNS服务器获取目标软件的包信息,然后基于包信息进行目标软件的资源包下载。在下载资源包阶段,npm工具会优先查询本地缓存库中是否已下载该依赖软件包(即目标软件包的下载状态),若本地缓存库中存在该依赖软件包,则通过本地缓存库获取该目标软件包;若本地缓存库中不存在该依赖软件包,则根据在获取包信息阶段所得到的目标软件包的存储库URL信息,向第三方(远程仓库)发送安装请求,基于安装请求下载目标软件包。
在本发明实施例中,通过版本信息查询目标软件包的下载状态,进而确定下载方式,从远程仓库中下载该目标软件包或者从本地缓存库中获取该目标软件包,减少重复性,提高处理效率。
在一些实施例中,在上述基于存储信息下载目标软件包之后,该信息获取方法还包括以下步骤。对目标软件包进行检查,得到检查结果;当检查结果满足预设条件时,将目标软件包存储在本地缓存库中。
在本发明实施例中,以预设条件是软件包完整性为例进行说明,在下载目标软件包之后,对目标软件包进行检查,通过软件包完整性检查后,再将该目标软件包解压到node_modules中并添加到本地缓存库中。其中,node_modules是安装node后用来存放用包管理工具下载安装的包的文件夹,npm install执行完毕后,可以在node_modules中看到所有依赖的包。
在本发明实施例中,通过对目标软件包进行检查,存储在本地缓存库中的过程,减少了重复获取目标软件包的情况,提高了处理效果。例如,以同一公司的多个终端为例进行说明,若某一终端已经根据上述S101-S104获取到目标软件包的属性信息,并基于属性信息向远程仓库下载到目标软件包,将其存储在本地缓存库中,若该公司中另一终端需要下载该目标软件包,发起基于UDP协议的服务请求,获取到目标软件包的版本信息,通过版本号比对的方式,确定本地缓存库中存在该目标软件包,则可以在本地缓存库中获取该目标软件包,无需再向远程仓库下载目标软件包,减少了向远程仓库的下载次数,减少远程交互,提高了处理效率。
在一些实施例中,该信息获取方法可以应用于软件包管理npm工具,npm工具用于对项目进行管理时,将已下载或已安装的软件包的属性信息写入本地文件中。
在本发明实施例中,终端中npm工具可以作为该信息获取方法的执行主体。npm工具可以对终端的项目中软件包进行管理(例如,安装、更新等)。当初始化一个项目时,npm工具先新建一个本地文件,并在该本地文件中写入该项目下软件包(可以是已下载或已安装的软件包)的属性信息,例如:版本信息、存储信息等。本地文件用于存储多个软件包的属性信息,对于属性信息中的版本信息,可以便于后续与npm工具重新接收到的版本信息进行对比,判断是否需要进一步发送存储服务请求。由npm工具对项目进行管理,实现与DNS服务器之间的通信,获取软件包的属性信息,以执行安装或更新任务,提高npm工具的执行效率。
在一些实施例中,执行命令包括安装命令和更新命令,服务请求包括存储服务请求和版本服务请求,属性信息包括版本信息和存储信息;上述图2中S103可以通过以下两个示例实现。第一个示例,npm工具响应于安装命令,向DNS服务器发送基于UDP协议的存储服务请求,使得DNS服务器根据存储服务请求确定目标软件包的存储信息。第二个示例,npm工具响应于更新命令,向DNS服务器发送基于UDP协议的版本服务请求,使得DNS服务器根据版本服务请求确定目标软件包的版本信息。
在本发明实施例中,属性信息包括版本信息和存储信息;在图3中的获取包信息阶段,当npm工具执行安装命令时,npm工具将向dns.npmjs.com服务器发起基于UDP协议的存储服务请求,获取软件包的存储库URL信息(即目标软件包的存储信息);当npm工具执行更新命令时,npm工具将向dns.npmjs.com服务器(即DNS服务器)发起基于UDP协议的版本服务请求,获取软件包的版本信息(即目标软件包的版本信息)。由于UDP协议没有握手机制,npm工具基于UDP协议的服务请求的数据报文传输更快,缩短了每个服务请求的时间,提高了npm工具执行安装、更新的效率,降低了网络流量消耗。
在一些实施例中,执行命令是安装命令,属性信息包括存储信息,服务请求包括存储服务请求。基于上述图2和第一个示例,本发明实施例提供一种由npm工具作为执行主体的信息获取方法。如图4所示,图4为本发明实施例提供的另一种信息获取方法的可选的步骤流程图。
S201、npm工具读取配置文件。
S202、npm工具根据配置文件中设置的注册表地址,确定DNS服务器。
需要说明的是,图4中的S201、S202与上述图2中的S101、S102所描述的技术方案和所达到的技术效果一致,在此不再赘述。
S203、npm工具响应于安装命令,向DNS服务器发送基于UDP协议的存储服务请求,使得DNS服务器根据存储服务请求确定目标软件包的存储信息。
S204、npm工具接收DNS服务器发送的存储信息。
在本发明实施例中,在图3中的获取包信息阶段,当npm工具执行安装命令时,npm工具将向dns.npmjs.com服务器发起基于UDP协议的存储服务请求,获取软件包的存储库URL信息(即目标软件包的存储信息)。根据获取到的软件包的存储库URL信息,向第三方(远程仓库)发送安装请求,基于安装请求下载目标软件包。
在本发明实施例中,由于获取依赖软件包信息采用的是基于UDP协议的服务请求,相较于相关技术中的TCP服务请求,不需要经过三次握手机制建立连接后再进行数据传递,提高了获取软件包信息的效率。另外,在信息传输过程中,由于UDP协议无需序号、确认信号、控制标志等信息,不会对数据报文进行任何拆分和拼接等操作,从而减少了数据报文的大小,节约了网络流量。
在本发明实施例中,为便于比较TCP协议数据报文和UDP协议数据报文之间的大小,本发明实施例还提供一种报文段结构示意图,如图5所示,图5为本发明实施例提供的一种报文段结构的示例性的示意图,图5中,相关技术中TCP报文段结构中源端口号和目的端口号,各占2字节,端口是运输层与应用层的服务接口,运输层的复用和分用功能都要通过端口才能实现。TCP报文段结构中序号(也可以称为序号字段)占4字节,TCP连接中传输的数据流中的每一个字节都编上一个序号,序号字段的值指的是本报文段所发送的数据的第一个字节的序号。TCP报文段结构中确认号(也可以称为确认号字段)占4字节,是期望接收到对方的下一个报文段的数据的第一个字节的序号。TCP报文段结构中首部长度(也可以称为数据偏移)占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。TCP报文段结构中保留未用(也可以称为保留字段)占6位,保留为今后使用。TCP报文段结构包括确认比特ACK和拥塞窗口CWR等(例如紧急比特URG、推送比特PSH、复位比特RST、同步比特SYN、终止比特FIN),其中,只有当ACK=1时确认号字段才有效;CWR表示拥塞窗口减少标志,用来表明它接收到了设置ECE标志的TCP包,CWR用来管理发送窗口大小。TCP报文段结构中接收窗口(也可以称为窗口字段),用来控制对方发送的数据量,TCP连接的一端根据设置的缓存空间大小确定自己的接收窗口大小,然后通知对方以确定对方的发送窗口的上限。TCP报文段结构中因特网检验和(也可以称为检验和字段),其检验的范围包括首部和数据这两部分。TCP报文段结构中紧急数据指针,指出在本报文段中的紧急数据的最后一个字节的序号。TCP报文段结构中选项,TCP首部可以有多达40字节的可选信息,用于把附加信息传递给终点,或用来对齐其它选项。TCP报文段结构还包括应用数据。
在本发明实施例中,上述图5中,本方案中的UDP报文段结构包括源端口号、目的端口号、其他首部字段和应用数据。UDP协议是无连接的,在传输数据之前,不需要进行复杂的三次握手来建立连接。在传输数据时,没有协议间通信流量(确认信号),也不需要浪费不必要的处理时间(接收确认信号再发一下)。在传输结束后,也不用再用四次握手来结束连接。
在本发明实施例中,一个基于TCP协议的HTTP查询平均是250B(byte,字节)+包名长度,一个基于UDP协议的DNS查询消息是16B+域长度,数据报文减少了90%以上。基于TCP的HTTP平均响应是250B,而基于UDP的DNS响应消息是10B+域长度+数据,因此,相较于基于TCP协议的依赖软件包的属性信息的获取方式,基于UDP协议的依赖软件包的属性信息的获取方式,减少了流量消耗。UDP协议无需三次握手建立连接即可传输数据,使UDP流量更快、更易于管理,并减少延迟。使用DNS注册表查询依赖软件包指定信息(版本信息或存储信息)的方式,避免了每次检查包版本时需要解析整个JSON文档,减少了网络资源的浪费,可以更快地更新、部署和安装。由于相关技术中registry.npmjs.com服务器(对应于远程仓库)未部署在本地,几乎不与系统管理员协商或使用代理,而本发明实施例中搭建的DNS服务器是通过本地服务器完成的,不会被阻止,无需更多配置,减少防火墙拦截的问题,提高了信息获取效率。
在一些实施例中,安装命令包括表征安装在目标项目上的本地安装命令,以及表征安装在终端的全局安装命令。在上述图4中S204之后,该信息获取方法还包括以下步骤。npm工具基于存储信息下载目标软件包;当安装命令是本地安装命令时,npm工具将目标软件包安装在目标项目对应目录的路径下;当安装命令是全局安装命令时,npm工具将目标软件包安装在终端对应目录的路径下。
在本发明实施例中,安装命令包括本地安装命令和全局安装命令,安装命令不同,其安装(也可以理解为下载)的文件夹不同。其中,本地安装是指在该(项目)目录下使用或者通过命令行(command line)进入到该(项目)目录下,npm工具使用命令行npm install(例如npm install axios、npm install-save axios)的方法。然后在该(项目)目录下会生成一个node_modules文件夹,安装的东西就会安装(也可以理解为下载)到这个node_modules文件夹里。在本地安装后可以直接通过require的方式引入项目中node_modules目录下的模块。
在本发明实施例中,全局安装是指在任何地方(即无论进入的是哪一层目录),使用了命令行npm install webpack-g或者npm install webpack–global,参数-g的含义是代表安装到全局环境里面,在安装npm工具的目录下(这里是npm这款工具的安装目录)会有一个node_modules文件夹,执行npm install xxx-g安装的东西就会安装(也可以理解为下载)到这个node_modules文件夹里。在全局安装后可以供命令行使用,用户可以在命令行中直接运行该组件包支持的命令。
在本发明实施例中,采用本地安装方式,将目标软件包安装在目标项目对应目录的路径下,可以在该(项目)目录下使用或者通过命令行进入到该(项目)目录下。采用全局安装方式,将目标软件包安装在终端对应目录的路径下,可以在任何目录下使用这个软件包,可以在本地任何时候使用这个工具或者软件,可以在任何位置调用该软件的命令行执行命令。npm工具执行不同的安装命令,将目标软件包根据实际需求安装在不同的目录下,以便在后续根据需求进行目标软件包的调用,提高了安装方式的多样性。
在一些实施例中,执行命令是更新命令,属性信息包括版本信息和存储信息,服务请求包括存储服务请求和版本服务请求。基于上述图2和第二个示例,本发明实施例提供一种由npm工具作为执行主体的信息获取方法。如图6所示,图6为本发明实施例提供的再一种信息获取方法的可选的步骤流程图。
S301、npm工具读取配置文件。
S302、npm工具根据配置文件中设置的注册表地址,确定DNS服务器。
需要说明的是,图6中的S301、S302与上述图2中的S101、S102所描述的技术方案和所达到的技术效果一致,在此不再赘述。
S303、npm工具响应于更新命令,向DNS服务器发送基于UDP协议的版本服务请求,使得DNS服务器根据版本服务请求确定目标软件包的版本信息。
S304、npm工具接收DNS服务器发送的版本信息。
S305、当满足版本信息中版本号低于本地文件中目标软件包的版本号的情况时,npm工具向DNS服务器发送基于UDP协议的存储服务请求,使得DNS服务器根据存储服务请求确定存储信息。
S306、npm工具接收DNS服务器发送的存储信息。
在本发明实施例中,在图3中的获取包信息阶段,当npm工具执行更新命令时,npm工具将向dns.npmjs.com服务器(即DNS服务器)发起基于UDP协议的版本服务请求,获取软件包的版本信息(即目标软件包的版本信息)。将获取的版本信息和package.json(对应于本地文件)中声明的软件包版本信息对比,若package.json声明的版本号低于版本服务请求获取的版本号,则需更新该目标软件包。npm工具将再通过基于UDP协议的存储服务请求,获取软件包的存储库URL信息(即目标软件包的存储信息),根据获取到的软件包的存储库URL信息,向第三方(远程仓库)发送安装请求,基于安装请求下载目标软件包。
相较于相关技术中每次都是获取的依赖软件包的全量信息,需要解析一个完整的大型JSON文档所造成的网络资源浪费,本发明实施例通过基于UDP协议获取版本信息和存储信息,无需解析大型JSON文档,降低了网络流量消耗。
在一些实施例中,更新命令包括表征在目标项目中进行目标软件包更新的本地更新命令,以及表征在终端中进行目标软件包更新的全局更新命令。在上述图6中S306之后,该信息获取方法还包括以下步骤。npm工具基于存储信息下载目标软件包;当更新命令是本地更新命令时,npm工具在目标项目中对目标软件包进行更新;当更新命令是全局更新命令时,npm工具在终端中对目标软件包进行更新。
在本发明实施例中,采用本地更新方式,npm工具在该(项目)目录下,对目标软件包进行更新。采用全局安装方式,npm工具在终端中对目标软件包进行更新,在任何目录下该目标软件包均被更新,使得在本地任何时候和任何位置所使用的软件是更新后的软件,减少了更新次数。npm工具执行不同的更新命令,对不同目录下的目标软件包进行更新,提高了更新方式的多样性。
在本发明实施例中,对于本地模式(本地安装和本地更新),npm工具在默认情况下会将软件包安装到当前目录下,或者对当前目录下的软件包进行更新,避免了不同程序依赖不同版本包的冲突,减少了包开发者API的兼容性的问题。对于全局模式(全局安装和全局更新),提高程序重复利用,避免一个程序多个版本的情况。
在本发明实施例中,在目标软件包安装完成或更新完成后,将目标软件包的属性信息存储在本地文件中。本发明实施例提供的信息获取方法属于前端工程化领域,是一种使用UDP网络协议优化NPM包管理工具的方法,提高了npm工具的执行效率。在实际应用中,可以通过产品说明书、用户手册等资料,结合构造模拟场景,模拟用户使用,对数据的输入输出进行抓包分析等测试类技术手段确定是否采用了本发明实施例所提供的信息获取方法。
在本发明实施例中,在实际软件开发和软件持续集成交付等应用场景中,安装依赖软件包是一件非常耗时且容易被防火墙拦截的过程。在npm工具执行安装、更新命令时,需经过远程获取依赖软件包的包信息(对应于属性信息)、检查缓存、下载安装软件包等过程。本发明实施例提供的信息获取方法应用于获取依赖软件包的包信息阶段,能够提高npm工具的执行效率,减少网络资源的开销,提高了依赖软件包的安装效率和成功率,从而提高了开发效率和产品部署交付的效率。
本发明实施例提供的技术方案利用了UDP网络协议相较于TCP网络协议传输数据的优势,以及本地服务器(DNS服务器)的特性,对安装依赖软件包过程中获取依赖软件包的包信息阶段进行优化,降低了防火墙拦截网络请求导致安装依赖软件包失败的概率。示例性的,采用了UDP协议服务请求替代了相关技术中TCP协议服务请求,相较于TCP协议的服务请求,UDP没有握手、确认、窗口、重传、拥塞控制等机制,不会对数据报文进行任何拆分和拼接等操作,从而减少了数据报文的大小,节约了网络流量,提高了数据传输的速度,从而提高了npm工具执行安装、更新命令的效率。通过直接在DNS注册表查询信息软件依赖包信息,采用特定信息获取的方式替换原来的全量信息获取的方式,可以减少每次安装、更新操作都会获取大量与当前操作不相关的信息,减少了网络资源的浪费。
为实现本发明实施例的信息获取方法,本发明实施例还提供一种信息获取装置,如图7所示,图7为本发明实施例提供的一种信息获取装置的可选的结构示意图,该信息获取装置70包括:读取模块701,用于读取配置文件;确定模块702,用于根据配置文件中设置的注册表地址,确定域名系统DNS服务器;发送模块703,用于响应于关于目标软件包的执行命令,向DNS服务器发送基于用户数据报协议UDP的服务请求,使得DNS服务器根据服务请求确定目标软件包的属性信息;接收模块704,用于接收DNS服务器发送的属性信息。
在一些实施例中,信息获取装置70应用于软件包管理npm工具,npm工具用于对项目进行管理时,将已下载或已安装的软件包的属性信息写入本地文件中。
在一些实施例中,执行命令包括安装命令和更新命令,服务请求包括存储服务请求和版本服务请求,属性信息包括版本信息和存储信息;
发送模块703,还用于响应于安装命令,向DNS服务器发送基于UDP协议的存储服务请求,使得DNS服务器根据存储服务请求确定目标软件包的存储信息;或者,响应于更新命令,向DNS服务器发送基于UDP协议的版本服务请求,使得DNS服务器根据版本服务请求确定目标软件包的版本信息。
在一些实施例中,执行命令是安装命令;
接收模块704,还用于接收DNS服务器发送的存储信息。
在一些实施例中,信息获取装置70还包括下载模块705和安装模块706;
安装命令包括表征安装在目标项目上的本地安装命令,以及表征安装在终端的全局安装命令;
下载模块705,用于基于存储信息下载目标软件包;
安装模块706,用于当安装命令是本地安装命令时,将目标软件包安装在目标项目对应目录的路径下;当安装命令是全局安装命令时,将目标软件包安装在终端对应目录的路径下。
在一些实施例中,执行命令是更新命令;
接收模块704,还用于接收DNS服务器发送的版本信息;
发送模块703,还用于当满足版本信息中版本号低于本地文件中目标软件包的版本号的情况时,向DNS服务器发送基于UDP协议的存储服务请求,使得DNS服务器根据存储服务请求确定存储信息;
接收模块704,还用于接收DNS服务器发送的存储信息。
在一些实施例中,信息获取装置70还包括更新模块707;
更新命令包括表征在目标项目中进行目标软件包更新的本地更新命令,以及表征在终端中进行目标软件包更新的全局更新命令;
下载模块705,还用于基于存储信息下载目标软件包;
更新模块707,还用于当更新命令是本地更新命令时,在目标项目中对目标软件包进行更新;当更新命令是全局更新命令时,在终端中对目标软件包进行更新。
在一些实施例中,属性信息包括版本信息和存储信息;
下载模块705,还用于根据版本信息,在本地缓存库中查询目标软件包的下载状态;当满足下载状态是未下载的情况时,基于存储信息下载目标软件包。
在一些实施例中,信息获取装置70还包括存储模块708;
存储模块708,还用于对目标软件包进行检查,得到检查结果;当检查结果满足预设条件时,将目标软件包存储在本地缓存库中。
在一些实施例中,配置文件包括优先级从低到高的内置配置文件、全局配置文件、用户配置文件和项目配置文件;
读取模块701,还用于按照优先级从低到高的顺序依次读取配置文件;
确定模块702,还用于若读取到内置配置文件设置有注册表地址,则根据内置配置文件中设置的注册表地址,确定DNS服务器;若读取到内置配置文件和全局配置文件均设置有注册表地址,则根据全局配置文件中设置的注册表地址,确定DNS服务器;若读取到内置配置文件、全局配置文件和用户配置文件均设置有注册表地址,则根据用户配置文件中设置的注册表地址,确定DNS服务器;若读取到内置配置文件、全局配置文件、用户配置文件和项目配置文件均设置有注册表地址,则根据项目配置文件中设置的注册表地址,确定DNS服务器。
在一些实施例中,信息获取装置70还包括修改模块709;
修改模块709,还用于在配置文件的用户配置文件或全局配置文件中,将目标软件包的注册表地址修改为DNS服务器对应的注册表地址;对应的执行命令包括本地安装命令、全局安装命令、本地更新命令和全局更新命令;或者,在配置文件的项目配置文件、用户配置文件或全局配置文件中,将目标软件包的注册表地址修改为DNS服务器对应的注册表地址;对应的执行命令包括本地安装命令和本地更新命令。
在一些实施例中,DNS服务器是基于运行环境Node模块进行搭建的;DNS服务器的DNS注册表中存储有多个软件包的属性信息,多个软件包包括目标软件包。
需要说明的是,上述实施例提供的信息获取装置在进行通信时,仅以上述各程序模块的划分进行举例说明,实际应用中,可以根据需要而将上述处理分配由不同的程序模块完成,即将装置的内部结构划分成不同的程序模块,以完成以上描述的全部或者部分处理。另外,上述实施例提供的信息获取装置与信息获取方法实施例属于同一构思,其具体实现过程及有益效果详见方法实施例,这里不再赘述。对于本装置实施例中未披露的技术细节,请参照本发明方法实施例的描述而理解。
在本发明实施例中,图8为本发明实施例提出的信息获取设备组成结构示意图,如图8所示,本发明实施例提出的信息获取设备80包括处理器801、存储可执行计算机程序的存储器802,处理器801,用于执行存储器802中存储的可执行计算机程序时,实现本发明实施例提供的信息获取方法。在一些实施例中,信息获取设备80还可以包括通信接口803,以及用于连接处理器801、存储器802和通信接口803的总线804。
在本发明实施例中,上述处理器801可以为特定用途集成电路(ApplicationSpecific Integrated Circuit,ASIC)、数字信号处理器(Digital Signal Processor,DSP)、数字信号处理装置(Digital Signal Processing Device,DSPD)、可编程逻辑装置(ProgRAMmable Logic Device,PLD)、现场可编程门阵列(Field ProgRAMmable GateArray,FPGA)、中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器中的至少一种。可以理解地,对于不同的设备,用于实现上述处理器功能的电子器件还可以为其它,本发明实施例不作具体限定。
在本发明实施例中,总线804用于连接通信接口803、处理器801以及存储器802,实现这些器件之间的相互通信。
存储器802用于存储可执行计算机程序和数据,该可执行计算机程序包括计算机操作指令,存储器802可能包含高速RAM存储器,也可能还包括非易失性存储器,例如,至少两个磁盘存储器。在实际应用中,上述存储器802可以是易失性存储器(volatile memory),例如随机存取存储器(Random-Access Memory,RAM);或者非易失性存储器(non-volatilememory),例如只读存储器(Read-Only Memory,ROM),快闪存储器(flash memory),硬盘(Hard Disk Drive,HDD)或固态硬盘(Solid-State Drive,SSD);或者上述种类的存储器的组合,并向处理器801提供可执行计算机程序和数据。
另外,在本实施例中的各功能模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
集成的单元如果以软件功能模块的形式实现并非作为独立的产品进行销售或使用时,可以存储在一个计算机可读取存储介质中,基于这样的理解,本实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或processor(处理器)执行本实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例提供一种计算机可读存储介质,存储有计算机程序,用于被处理器执行时实现如上任一实施例所述的信息获取方法。
示例性的,本实施例中的一种信息获取方法对应的程序指令可以被存储在光盘,硬盘,U盘等存储介质上,当存储介质中的与一种信息获取方法对应的程序指令被一电子设备读取或被执行时,可以实现如上述任一实施例所述的信息获取方法。
本领域内的技术人员应明白,本发明实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用硬件实施例、软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的实现流程示意图和/或方框图来描述的。应理解可由计算机程序指令实现流程示意图和/或方框图中的每一流程和/或方框、以及实现流程示意图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在实现流程示意图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述,仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。

Claims (15)

1.一种信息获取方法,其特征在于,所述方法包括:
读取配置文件;
根据所述配置文件中设置的注册表地址,确定域名系统DNS服务器;
响应于关于目标软件包的执行命令,向所述DNS服务器发送基于用户数据报协议UDP的服务请求,使得所述DNS服务器根据所述服务请求确定所述目标软件包的属性信息;
接收所述DNS服务器发送的所述属性信息。
2.根据权利要求1所述的方法,其特征在于,所述方法应用于软件包管理npm工具,npm工具用于对项目进行管理时,将已下载或已安装的软件包的属性信息写入本地文件中。
3.根据权利要求2所述的方法,其特征在于,所述执行命令包括安装命令和更新命令,所述服务请求包括存储服务请求和版本服务请求,所述属性信息包括版本信息和存储信息;
所述响应于关于目标软件包的执行命令,向所述DNS服务器发送基于用户数据报协议UDP的服务请求,使得所述DNS服务器根据所述服务请求确定所述目标软件包的属性信息,包括:
所述npm工具响应于所述安装命令,向所述DNS服务器发送基于UDP协议的所述存储服务请求,使得所述DNS服务器根据所述存储服务请求确定所述目标软件包的所述存储信息;
或者,
所述npm工具响应于所述更新命令,向所述DNS服务器发送基于UDP协议的所述版本服务请求,使得所述DNS服务器根据所述版本服务请求确定所述目标软件包的所述版本信息。
4.根据权利要求3所述的方法,其特征在于,所述执行命令是所述安装命令;
所述接收所述DNS服务器发送的所述属性信息,包括:
所述npm工具接收所述DNS服务器发送的所述存储信息。
5.根据权利要求4所述的方法,其特征在于,所述安装命令包括表征安装在目标项目上的本地安装命令,以及表征安装在终端的全局安装命令;
所述npm工具接收所述DNS服务器发送的所述存储信息之后,所述方法还包括:
所述npm工具基于所述存储信息下载所述目标软件包;
当所述安装命令是所述本地安装命令时,所述npm工具将所述目标软件包安装在所述目标项目对应目录的路径下;
当所述安装命令是所述全局安装命令时,所述npm工具将所述目标软件包安装在所述终端对应目录的路径下。
6.根据权利要求3所述的方法,其特征在于,所述执行命令是所述更新命令;
所述接收所述DNS服务器发送的所述属性信息,包括:
所述npm工具接收所述DNS服务器发送的所述版本信息;
当满足所述版本信息中版本号低于所述本地文件中所述目标软件包的版本号的情况时,所述方法还包括:
所述npm工具向所述DNS服务器发送基于所述UDP协议的存储服务请求,使得所述DNS服务器根据所述存储服务请求确定存储信息;
所述npm工具接收所述DNS服务器发送的所述存储信息。
7.根据权利要求6所述的方法,其特征在于,所述更新命令包括表征在目标项目中进行目标软件包更新的本地更新命令,以及表征在终端中进行目标软件包更新的全局更新命令;
所述npm工具接收所述DNS服务器发送的所述存储信息之后,所述方法还包括:
所述npm工具基于所述存储信息下载所述目标软件包;
当所述更新命令是所述本地更新命令时,所述npm工具在所述目标项目中对所述目标软件包进行更新;
当所述更新命令是所述全局更新命令时,所述npm工具在所述终端中对所述目标软件包进行更新。
8.根据权利要求1-3任一项所述的方法,其特征在于,所述属性信息包括版本信息和存储信息;
所述接收所述DNS服务器发送的所述属性信息之后,所述方法还包括:
根据所述版本信息,在本地缓存库中查询所述目标软件包的下载状态;
当满足所述下载状态是未下载的情况时,基于所述存储信息下载所述目标软件包。
9.根据权利要求8所述的方法,其特征在于,所述基于所述存储信息下载所述目标软件包之后,所述方法还包括:
对所述目标软件包进行检查,得到检查结果;
当所述检查结果满足预设条件时,将所述目标软件包存储在所述本地缓存库中。
10.根据权利要求1-7任一项所述的方法,其特征在于,所述配置文件包括优先级从低到高的内置配置文件、全局配置文件、用户配置文件和项目配置文件;
所述读取配置文件;根据所述配置文件中设置的注册表地址,确定域名系统DNS服务器,包括:
按照优先级从低到高的顺序依次读取所述配置文件;
若读取到所述内置配置文件设置有注册表地址,则根据所述内置配置文件中设置的注册表地址,确定所述DNS服务器;
若读取到所述内置配置文件和所述全局配置文件均设置有注册表地址,则根据所述全局配置文件中设置的注册表地址,确定所述DNS服务器;
若读取到所述内置配置文件、所述全局配置文件和所述用户配置文件均设置有注册表地址,则根据所述用户配置文件中设置的注册表地址,确定所述DNS服务器;
若读取到所述内置配置文件、所述全局配置文件、所述用户配置文件和所述项目配置文件均设置有注册表地址,则根据所述项目配置文件中设置的注册表地址,确定所述DNS服务器。
11.根据权利要求1-7任一项所述的方法,其特征在于,所述读取配置文件之前,所述方法还包括:
在所述配置文件的用户配置文件或全局配置文件中,将所述目标软件包的注册表地址修改为所述DNS服务器对应的注册表地址;对应的所述执行命令包括本地安装命令、全局安装命令、本地更新命令和全局更新命令;
或者,
在所述配置文件的项目配置文件、用户配置文件或全局配置文件中,将所述目标软件包的注册表地址修改为所述DNS服务器对应的注册表地址;对应的所述执行命令包括本地安装命令和本地更新命令。
12.根据权利要求1-7任一项所述的方法,其特征在于,所述DNS服务器是基于运行环境Node模块进行搭建的;所述DNS服务器的DNS注册表中存储有多个软件包的属性信息,所述多个软件包包括所述目标软件包。
13.一种信息获取装置,其特征在于,所述装置包括:
读取模块,用于读取配置文件;
确定模块,用于根据所述配置文件中设置的注册表地址,确定域名系统DNS服务器;
发送模块,用于响应于关于目标软件包的执行命令,向所述DNS服务器发送基于用户数据报协议UDP的服务请求,使得所述DNS服务器根据所述服务请求确定所述目标软件包的属性信息;
接收模块,用于接收所述DNS服务器发送的所述属性信息。
14.一种信息获取设备,其特征在于,所述设备包括:
存储器,用于存储可执行计算机程序;
处理器,用于执行所述存储器中存储的可执行计算机程序时,实现权利要求1-12任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,存储有计算机程序,用于被处理器执行时,实现权利要求1-12任一项所述的方法。
CN202211184576.9A 2022-09-27 2022-09-27 信息获取方法、装置、设备和计算机可读存储介质 Pending CN117834410A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211184576.9A CN117834410A (zh) 2022-09-27 2022-09-27 信息获取方法、装置、设备和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211184576.9A CN117834410A (zh) 2022-09-27 2022-09-27 信息获取方法、装置、设备和计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN117834410A true CN117834410A (zh) 2024-04-05

Family

ID=90519573

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211184576.9A Pending CN117834410A (zh) 2022-09-27 2022-09-27 信息获取方法、装置、设备和计算机可读存储介质

Country Status (1)

Country Link
CN (1) CN117834410A (zh)

Similar Documents

Publication Publication Date Title
US10331501B2 (en) USB device redirection for remote systems
CN101662503B (zh) 网络中的信息传输方法、代理服务器和服务系统
US7930692B2 (en) Updating information in network devices
US8171118B2 (en) Application streaming over HTTP
CN105765526A (zh) 通过网络从远程磁盘镜像进行引导
KR20020079425A (ko) 피어 투 피어 네트워크 환경내에서 자원들을 안전하고검증가능하게 공유하는 시스템 및 방법
JP4860070B2 (ja) ファイル伝送方法及びファイル伝送システム
KR20120083903A (ko) 더 빠르고 더 효율적인 데이터 통신을 제공하는 시스템 및 방법
WO2011076146A1 (zh) 下载应用数据的方法、数字电视接收终端及系统
US20140143339A1 (en) Method, apparatus, and system for resource sharing
CN103533080A (zh) 用于lvs的服务器调度方法及装置
CN103744699A (zh) 一种智能电器设备软件升级的方法及其装置
CN110855746A (zh) 中间件管理方法、电子装置及存储介质
CN111367685B (zh) 接口调用的方法及装置、计算机设备、存储介质
US9781222B2 (en) Method, system and server device for transmitting a digital resource in a client-server communication system
US9172744B2 (en) Scalable storage with programmable networks
CN112583760B (zh) 一种对象存储的访问方法、装置、设备和计算机存储介质
CN108600378B (zh) 一种文件下载方法、装置、终端和存储介质
CN102025782A (zh) 一种点对点通信方法、装置及系统
CN117834410A (zh) 信息获取方法、装置、设备和计算机可读存储介质
JP2008065611A (ja) ソフトウェア更新方式及びソフトウェア更新プログラム
US8499023B1 (en) Servlet-based grid computing environment using grid engines and switches to manage resources
US20080140687A1 (en) Socket structure simultaneously supporting both toe and ethernet network interface card and method of forming the socket structure
KR101145608B1 (ko) 네트워크의 토렌트 트래픽 선별 차단 방법
CN112988126A (zh) Cdn业务定制方法及系统

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