CN111756831A - 服务器预加载方法、装置、服务器及存储介质 - Google Patents
服务器预加载方法、装置、服务器及存储介质 Download PDFInfo
- Publication number
- CN111756831A CN111756831A CN202010573639.4A CN202010573639A CN111756831A CN 111756831 A CN111756831 A CN 111756831A CN 202010573639 A CN202010573639 A CN 202010573639A CN 111756831 A CN111756831 A CN 111756831A
- Authority
- CN
- China
- Prior art keywords
- preloading
- server
- preloaded
- request
- thread pool
- 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.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- 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/44568—Immediately runnable code
- G06F9/44578—Preparing or optimising for loading
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/104—Peer-to-peer [P2P] networks
- H04L67/1044—Group management mechanisms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/30—Profiles
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/321—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority
- H04L9/3213—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving a third party or a trusted authority using tickets or tokens, e.g. Kerberos
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本公开关于一种服务器预加载方法、装置、服务器及存储介质,所述方法包括:预加载任务进程中的主线程向预加载任务进程中的线程池提交预加载请求;线程池响应于预加载请求,从配置服务器中获取预加载服务配置信息;线程池根据预加载服务配置信息生成HTTP请求;线程池将HTTP请求发送至与预加载服务配置信息对应的待预加载服务器。通过该方法不会占用服务器本身的资源,从而不会影响服务器性能;且该方法通过使线程池根据预加载服务配置信息生成真实的HTTP请求,进而将HTTP请求发送至相应的待预加载服务器,对待预加载服务器进行预加载,可以最大可能地覆盖到服务的全部流程,从而实现对待预加载服务器的充分预加载。
Description
技术领域
本公开涉及互联网技术领域,尤其涉及一种服务器预加载方法、装置、服务器及存储介质。
背景技术
服务器API(Application Programming Interface,应用程序接口)层一般都是基于HTTP协议(Hyper Text Transfer Protocol,超文本传输协议)进行开发,协议层的细节被封装在Web(World Wide Web,全球广域网)容器里,开发者需要基于Web容器编写特定的业务代码。在服务器开发完成后需要上线到生产环境,其响应延迟是验证服务器性能的一个重要指标。影响延迟的因素有很多,比如服务器本身的资源,机房带宽、远程调用以及服务器预加载不充分等等。
对于服务器预加载不充分导致的延迟,通常是因为服务器启动后,依赖的外部资源可能没有被加载,比如数据库连接,本地缓存的建立等,导致最初接收的请求由于要建立外部依赖往往会有较高延迟。或者,服务器启动了一段时间后但一直没有接收到请求,此时一些非持久化的连接资源会被释放,当下一批请求到达时,需要重新建立连接,导致延迟升高。服务器预加载不充分导致的延迟在一些具有瞬时峰值流量的服务上(比如春晚、秒杀活动等)会更加明显,这类服务平时没有流量,但会在某一时刻出现流量突增。如果不进行预加载,可能导致服务器线程池被打满,造成服务不可用,引起雪崩效应,拖垮整个集群。
图1示例性示出了相关技术中的一种预加载方案的架构图,通过建立一个服务器内部的预加载机制,在服务器内部针对所有需要预加载的资源建立一个WarmUp(预加载)接口,接口内部建立各个资源的预加载逻辑。在Web服务器启动后,同时启动服务器内部的预加载线程,线程周期性通过Spring(一个开放源代码的应用程序框架,是针对Bean的生命周期进行管理的轻量级容器)的Bean(Spring容器管理的对象)工厂取出WarmUp接口的实例,逐个调用其预加载方法实现资源预加载。上述方案一定程度上解决了服务器预加载不充分的问题,但是没有覆盖到服务器处理请求的全部流程,例如,过滤器内部的依赖资源无法被预加载。且,上述方案是在服务器内部进行预加载的,预加载的执行会消耗服务器本身的资源,如果需要预加载的资源较多,会影响服务器性能,无法进行高频率的预加载。可见,上述方案存在预加载不够充分的问题。
发明内容
本公开提供一种服务器预加载方法、装置、服务器及存储介质,以至少解决相关技术中服务器预加载不充分的问题。本公开的技术方案如下:
根据本公开实施例的第一方面,提供一种服务器预加载方法,包括:
预加载任务进程中的主线程向预加载任务进程中的线程池提交预加载请求;
线程池响应于预加载请求,从配置服务器中获取预加载服务配置信息,配置服务器用于存储预加载服务配置信息;
线程池根据预加载服务配置信息生成HTTP请求;
线程池将HTTP请求发送至与预加载服务配置信息对应的待预加载服务器。
在其中一个实施例中,预加载服务配置信息包括预加载频率;预加载任务进程中的主线程向预加载任务进程中的线程池提交预加载请求,包括:
主线程从配置服务器中获取预先配置的预加载频率;
主线程获取预加载频率的倒数,作为提交预加载请求的速率;
主线程根据提交预加载请求的速率向预加载任务进程中的线程池提交预加载请求。
在其中一个实施例中,主线程根据提交预加载请求的速率向预加载任务进程中的线程池提交预加载请求,包括:
主线程将提交预加载请求的速率作为下发令牌的速率;
主线程根据下发令牌的速率向令牌桶下发令牌;
主线程当令牌桶中存在令牌时,则向预加载任务进程中的线程池提交预加载请求。
在其中一个实施例中,预加载频率是根据主线程的提交频率和线程池中工作线程的发送频率确定的;若主线程的提交频率大于等于线程池中工作线程的发送频率,则将线程池中工作线程的发送频率作为预加载频率;若主线程的提交频率小于线程池中工作线程的发送频率,则将主线程的提交频率作为预加载频率。
在其中一个实施例中,预加载服务配置信息包括接口信息和集群信息,接口信息包括资源路径,集群信息包括待预加载服务器的地址;线程池根据预加载服务配置信息生成HTTP请求,包括:
线程池采用待预加载服务器的地址和资源路径配置HTTP请求的请求报文,生成HTTP请求。
在其中一个实施例中,集群信息还包括待预加载服务器的端口;线程池将HTTP请求发送至与预加载服务配置信息对应的待预加载服务器,包括:
线程池根据集群信息中待预加载服务器的地址及端口,将HTTP请求发送至待预加载服务器。
在其中一个实施例中,接口信息还包括接口公共参数和/或接口特定参数;根据集群信息中待预加载服务器的地址及端口,将HTTP请求发送至待预加载服务器,包括:
线程池对接口信息中的接口公共参数和/或接口特定参数进行转换,生成对应的待校验信息;
线程池根据集群信息中待预加载服务器的地址及端口,将携带有待校验信息的HTTP请求发送至待预加载服务器,以使待预加载服务器在确定待校验信息与已获取的接口签名校验信息一致时,接收HTTP请求。
在其中一个实施例中,接口签名校验信息是客户端根据接口公共参数和/或接口特定参数生成的对应的哈希值,待校验信息是线程池根据接口公共参数和/或接口特定参数生成对应的哈希值。
在其中一个实施例中,预加载任务进程包括至少一个;预加载任务进程是周期性运行的离线任务。
根据本公开实施例的第二方面,提供一种服务器预加载装置,包括:
预加载请求提交模块,被配置为执行通过预加载任务进程中的主线程向预加载任务进程中的线程池提交预加载请求;
获取模块,被配置为执行通过线程池响应于预加载请求,从配置服务器中获取预加载服务配置信息,配置服务器用于存储预加载服务配置信息;
HTTP请求生成模块,被配置为执行通过线程池根据预加载服务配置信息生成HTTP请求;
预加载模块,被配置为执行通过线程池将HTTP请求发送至与预加载服务配置信息对应的待预加载服务器。
在其中一个实施例中,预加载服务配置信息包括预加载频率;获取模块,被配置为执行通过主线程从配置服务器中获取预先配置的预加载频率;
预加载请求提交模块,被配置为执行通过主线程获取预加载频率的倒数,作为提交预加载请求的速率;根据提交预加载请求的速率向预加载任务进程中的线程池提交预加载请求。
在其中一个实施例中,预加载请求提交模块,包括:
令牌下发速率确定单元,被配置为执行通过主线程将提交预加载请求的速率作为下发令牌的速率;
令牌下发单元,被配置为执行通过主线程根据下发令牌的速率向令牌桶下发令牌;
预加载请求提交单元,被配置为执行当令牌桶中存在令牌时,则通过主线程向预加载任务进程中的线程池提交预加载请求。
在其中一个实施例中,预加载频率是根据主线程的提交频率和线程池中工作线程的发送频率确定的,若主线程的提交频率大于等于线程池中工作线程的发送频率,则将线程池中工作线程的发送频率作为预加载频率,若主线程的提交频率小于线程池中工作线程的发送频率,则将主线程的提交频率作为预加载频率。
在其中一个实施例中,预加载服务配置信息包括接口信息和集群信息,接口信息包括资源路径,集群信息包括待预加载服务器的地址;
HTTP请求生成模块,被配置为执行通过线程池采用待预加载服务器的地址和资源路径配置HTTP请求的请求报文,生成HTTP请求。
在其中一个实施例中,集群信息还包括待预加载服务器的端口;预加载模块,被配置为执行通过线程池根据集群信息中待预加载服务器的地址及端口,将HTTP请求发送至待预加载服务器。
在其中一个实施例中,预加载请求携带有接口签名校验信息,接口信息还包括接口公共参数和/或接口特定参数;预加载模块,包括:
待校验信息生成单元,被配置为执行通过线程池对接口信息中的接口公共参数和/或接口特定参数进行转换,生成对应的待校验信息;
预加载单元,被配置为执行通过线程池根据集群信息中待预加载服务器的地址及端口,将携带有待校验信息的HTTP请求发送至待预加载服务器,以使待预加载服务器在确定待校验信息与已获取的接口签名校验信息一致时,接收HTTP请求。
在其中一个实施例中,接口签名校验信息是客户端根据接口公共参数和/或接口特定参数生成的对应的哈希值,待校验信息是线程池根据接口公共参数和/或接口特定参数生成对应的哈希值。
在其中一个实施例中,预加载任务进程包括至少一个;预加载任务进程是周期性运行的离线任务。
根据本公开实施例的第三方面,提供一种服务器,包括:
处理器;用于存储处理器可执行指令的存储器;
其中,处理器被配置为执行指令,以实现第一方面的任一项实施例中的服务器预加载方法。
根据本公开实施例的第四方面,提供一种存储介质,当存储介质中的指令由服务器的处理器执行时,使得服务器能够执行第一方面的任一项实施例中的服务器预加载方法。
根据本公开实施例的第五方面,提供一种计算机程序产品,所述程序产品包括计算机程序,所述计算机程序存储在可读存储介质中,设备的至少一个处理器从所述可读存储介质读取并执行所述计算机程序,使得设备执行第一方面的任一项实施例中所述的服务器预加载方法。
本公开的实施例提供的技术方案至少带来以下有益效果:
通过建立外部预加载服务的方案,即单独部署与服务器相互隔离预加载服务进程,不会占用服务器本身的资源,从而不会影响服务器性能;通过预先配置化的方式配置预加载服务配置,尽可能地保证了预加载服务的通用性,从而便于扩展到其他需要预加载的服务中;通过使线程池根据预加载服务配置信息生成真实的HTTP请求,进而将HTTP请求发送至待预加载服务器,对待预加载服务器进行预加载,可以最大可能地覆盖到服务的全部流程,从而实现对待预加载服务器的充分预加载。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理,并不构成对本公开的不当限定。
图1是根据一示例性实施例示出的一种相关技术中服务器预加载的架构图。
图2是根据一示例性实施例示出的一种服务器预加载的方法的应用环境图。
图3是根据一示例性实施例示出的一种服务器预加载方法的架构图。
图4是根据一示例性实施例示出的一种服务器预加载方法的流程图。
图5是根据一示例性实施例示出的一种提交预加载请求步骤的流程图。
图6是根据一示例性实施例示出的一种提交预加载请求步骤的流程图。
图7是根据一示例性实施例示出的一种校验接口信息步骤的流程图。
图8是根据一示例性实施例示出的一种服务器预加载方法的流程图。
图9是根据一示例性实施例示出的一种服务器预加载装置的框图。
图10是根据一示例性实施例示出的一种服务器的内部结构图。
具体实施方式
为了使本领域普通人员更好地理解本公开的技术方案,下面将结合附图,对本公开实施例中的技术方案进行清楚、完整地描述。
需要说明的是,本公开的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开的实施例能够以除了在这里图示或描述的那些以外的顺序实施。以下示例性实施例中所描述的实施方式并不代表与本公开相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本公开的一些方面相一致的装置和方法的例子。
本公开所提供的服务器预加载方法,可以应用于如图2所示的应用环境中。其中,终端210通过网络与服务器220进行交互。服务器220中部署有配置平台以及预加载任务进程。开发人员可以通过终端210展示的配置平台的可视化界面配置预加载服务配置信息,并将预加载服务配置信息存储至配置服务器中。预加载服务配置信息不限于包括接口相关参数、集群信息、预加载启动条件、预加载频率。图3示例性示出了一个实施例中单个预加载服务的架构图。如图3所示,当满足预加载启动条件时,启动预加载服务;预加载任务进程中的主线程Producer向预加载任务进程中的线程池提交预加载请求;线程池工作线程Worker从任务队列WorkQueue里取出预加载请求;响应于预加载请求,从配置服务器中获取预加载服务配置信息;根据预加载服务器配置信息生成HTTP请求;将HTTP请求发送至与预加载服务配置信息对应的待预加载服务器,对待预加载服务器进行预加载。其中,终端210可以是但不限于各种个人计算机、笔记本电脑、智能手机、平板电脑和便携式可穿戴设备,服务器220可以用独立的服务器或者多个服务器组成的服务器集群来实现。
图4是根据一示例性实施例示出的一种服务器预加载方法的流程图,如图4所示,服务器预加载方法用于服务端220中,包括以下步骤。
在步骤S410中,预加载任务进程中的主线程向预加载任务进程中的线程池提交预加载请求。
其中,进程是程序执行的最小单位。每个进程有各自独立的资源和内存空间,使得各个进程之间相互隔离。当一个程序启动时,就有一个进程***作***创建,与此同时一个线程也立刻运行,该线程通常叫做程序的主线程。每个进程至少都有一个主线程。线程池是一种多线程处理形式,处理过程中将任务添加到任务队列,然后在创建线程后自动启动这些任务。线程池线程都是后台线程。具体地,当满足预加载启动条件时,预加载任务进程中的主线程向线程池提交预加载请求,以请求线程池向待预加载服务器发送预加载流量,对预加载服务器进行预加载。预加载启动条件可以预先设置,例如设置按照一定的时间周期进行周期性预加载。
在步骤S420中,线程池响应于预加载请求,从配置服务器中获取预加载服务配置信息,配置服务器用于存储预加载服务配置信息。
在步骤S430中,线程池根据预加载服务配置信息生成HTTP请求。
其中,传统概念的HTTP请求为从客户端到服务器端的请求消息。本实施例中的HTTP请求是线程池根据预加载服务配置信息生成的请求消息。具体地,可以预先通过配置平台配置预加载服务配置信息,并将预加载服务配置信息存储在配置服务器中。当线程池中的工作线程取出任务队列中的预加载请求后,从配置服务器中获取预加载服务配置信息,并根据预加载服务配置信息中用于生成HTTP请求的相关信息生成HTTP请求。示例性地,通常发送HTTP请求需要服务器的地址、接口资源路径和相关参数。因此,可以通过配置平台配置待预加载服务器的地址、接口资源路径和相关参数,以使线程池中的工作线程根据待预加载服务器的地址、接口资源路径和相关参数生成HTTP请求。
在步骤S440中,线程池将HTTP请求发送至与预加载服务配置信息对应的待预加载服务器。
其中,待预加载服务器是指待进行预加载的服务器。具体地,在线程池中的工作线程生成HTTP请求后,可以获取预加载服务配置信息中用于接收HTTP请求的相关信息,将HTTP请求发送至待预加载服务器,从而对待预加载服务器进行预加载。
上述服务器预加载方法中,通过建立外部预加载服务的方案,即单独部署与服务器相互隔离预加载服务进程,不会占用服务器本身的资源,从而不会影响服务器性能;通过预先配置化的方式配置预加载服务信息,尽可能地保证了预加载服务的通用性,从而便于扩展到其他需要预加载的服务中;通过使线程池根据预加载服务配置信息生成真实的HTTP请求,进而将HTTP请求发送至相应的待预加载服务器进行预加载,可以最大可能地覆盖到服务的全部流程,从而实现对服务器的充分预加载。
在一示例性实施例中,预加载服务配置信息包括预加载频率;如图5所示,在步骤S410中,预加载任务进程中的主线程向预加载任务进程中的线程池提交预加载请求,包括以下步骤:
在步骤S411中,主线程从配置服务器中获取预先配置的预加载频率。
在步骤S412中,主线程获取预加载频率的倒数,作为提交预加载请求的速率。
在步骤S413中,主线程根据提交预加载请求的速率向预加载任务进程中的线程池提交预加载请求。
其中,预加载频率用于控制一定时间内主线程提交的预加载请求的数量,预加载频率可以是每秒查询率(QPS,Query Per Second)。每秒查询率是对服务器在规定时间内所处理流量多少的衡量标准,是衡量吞吐量的一个常用指标,即服务器在一秒的时间内处理了多少个HTTP请求。通常每秒查询率数字越大代表服务器的负荷越高、处理能力越强。
具体地,开发人员可以根据预加载服务进程的处理能力配置相应的预加载频率,对一定时间内主线程提交的预加载请求的数量进行控制,从而保证预加载服务运行的稳定性和持续性。当预加载服务启动后,预加载任务进程中的主线程获取预加载频率。主线程计算预加载频率的倒数,作为提交预加载请求的速率。根据预加载请求的速率向线程池提交预加载请求。例如,预加载频率为QPS,则提交预加载请求的速率可以是1/QPS,即如果QPS为100,则提交预加载请求的速率为10ms/个。本实施例中,通过以一定的速率提交预加载请求,进而促使线程池中的工作线程向待预加载服务器发送HTTP请求,对待预加载服务器进行预加载,可以确保发送预加载流量的持续性和稳定性,从而能够充分预加载服务器。
在一示例性实施例中,如图6所示,在步骤S413中,主线程根据提交预加载请求的速率向预加载任务进程中的线程池提交预加载请求,具体包括以下步骤:
在步骤S4131中,主线程将提交预加载请求的速率作为下发令牌的速率。
在步骤S4132中,主线程根据下发令牌的速率向令牌桶下发令牌。
在步骤S4133中,当令牌桶中存在令牌时,则主线程向预加载任务进程中的线程池提交预加载请求。
具体地,在本实施例中,可以采用令牌桶算法控制预加载请求提交的速率。令牌桶算法基于令牌桶中是否存在令牌来指示发送流量。令牌桶中的每一个令牌都代表一个字节。如果令牌桶中存在令牌,则表示允许发送流量,主线程则可以进行提交预加载请求;而如果令牌桶中不存在令牌,则不允许发送流量。令牌桶算法通常周期性以恒定的速率向令牌桶中增加令牌,使令牌桶中的令牌不断增多。若令牌桶中令牌数已到达到令牌桶大小,则丢弃多余令牌。本实施例中,主线程可以将预加载请求提交的速率作为下发令牌的速率;根据下发令牌的速率向令牌桶下发令牌;当令牌桶中存在令牌时,则向预加载任务进程中的线程池提交预加载请求。进一步地,除了令牌桶算法,本实施例中还可以采用漏桶算法,或者漏桶算法和令牌桶算法结合的方式控制主线程提交预加载请求的速率,在此不做具体阐述。本实施例中,通过采用令牌桶算法控制流量产生的速率,能够在限制预加载请求提交速率的同时还允许某种程度的突发传输,从而提高了预加载服务的灵活性。
在一示例性实施例中,预加载频率是根据主线程的提交频率和线程池中工作线程的发送频率确定的;若主线程的提交频率大于等于线程池中工作线程的发送频率,则将线程池中工作线程的发送频率作为预加载频率;若主线程的提交频率小于线程池中工作线程的发送频率,则将主线程的提交频率作为预加载频率。
可以理解的是,工作线程的处理频率和主线程提交预加载请求的提交频率相关。主线程提交预加载请求的提交频率越快,工作线程发送HTTP请求的发送频率也越快,即,工作线程发送HTTP请求的发送频率等于主线程提交预加载请求的提交频率。在这种情况下,可以根据主线程的提交频率配置预加载频率。但是由于单个预加载任务进程资源是有限的,因此,工作线程的处理能力有限。若主线程提交预加载请求的提交频率超出工作线程的处理频率,在这种情况下,可以根据工作线程的发送频率配置预加载频率。本实施例中,通过根据预加载任务进程的主线程和工作线程的处理能力确定提交预加载请求的频率,使预加载任务进程能够充分进行服务器预加载任务,保证了预加载服务的稳定性。
在一示例性实施例中,预加载服务配置信息包括接口信息和集群信息,接口信息包括资源路径,集群信息包括待预加载服务器的地址;根据预加载服务配置信息生成HTTP请求,包括:线程池采用待预加载服务器的地址和资源路径配置HTTP请求的请求报文,生成HTTP请求。
其中,接口信息不限于包括各个接口需要的参数。集群信息不限于包括集群名称、集群内机器的地址等信息。具体地,发送HTTP请求通常至少包括以下三部分:scheme(方案):代表访问服务器以获取资源时要使用哪种协议,例如:HTTP;host(主机):资源宿主服务器的主机名,例如,服务器的ip地址;接口path(资源路径):服务器上的资源本地名。因此,可以通过可视化界面配置接口信息和集群信息,在接口信息中配置接口资源路径,在集群信息中配置集群中待预加载服务器的地址。当线程池中工作线程提取预加载请求后,可以获取接口信息中的资源路径和集群信息中的待预加载服务器的地址,并根据待预加载服务器的地址和资源路径配置HTTP请求的请求报文,从而生成相应的HTTP请求。本实施例中,通过配置资源路径和待预加载服务器的地址,可以使预加载服务能够最大可能地覆盖到服务的全部流程,从而对服务器进行充分预加载。
在一示例性实施例中,集群信息还包括待预加载服务器的端口;线程池将HTTP请求发送至与预加载服务配置信息对应的待预加载服务器,包括:线程池根据集群信息中待预加载服务器的地址及端口,将HTTP请求发送至待预加载服务器。
具体地,可以通过可视化界面在集群信息中配置待预加载服务器的地址及端口。在线程池中的工作线程生成HTTP请求后,根据集群信息中配置的待预加载服务器的地址及端口,将HTTP请求发送至对应的待预加载服务器。本实施例中,通过指定需要预加载的服务器的地址及端口,可以避免接入层流量分发导致某些服务器预加载不充分的问题。
在一示例性实施例中,预加载请求携带有接口签名校验信息,接口信息还包括接口公共参数和/或接口特定参数;如图7所示,线程池根据集群信息中待预加载服务器的地址及端口,将HTTP请求发送至待预加载服务器,包括:
在步骤S710中,线程池对接口信息中的接口公共参数和/或接口特定参数进行转换,生成对应的待校验信息。
在步骤S720中,线程池根据集群信息中待预加载服务器的地址及端口,将携带有待校验信息的HTTP请求发送至待预加载服务器,以使待预加载服务器在确定待校验信息与已获取的接口签名校验信息一致时,接收HTTP请求。
其中,接口公共参数和接口特定参数是一个相对概念。接口公共参数是指每个接口都需要使用到的请求参数。接口特定参数则是指各个接口特有的参数。通过配置接口公共参数,将各个接口所需要的公共参数等抽象到配置模块中,可以方便地接入其他需要预加载的集群的接口。待校验信息是指待进行校验的信息。接口签名校验信息是指与接口对应的标准信息。具体地,由于对待预加载服务器进行预加载的HTTP请求本身并不是客户端产生,而是预加载服务内部根据预加载服务配置构造的,因此,为了保证HTTP请求的可靠性,在本实施例中,发送至待预加载服务器的HTTP请求携带有待检验信息,以使待预加载服务器对接收到的HTTP请求进行校验。待预加载服务器将待校验信息与接口对应的接口签名校验信息进行比较,若一致,那么可以判断该HTTP请求为待预加载服务器的真实请求,进而可以接收HTTP请求。进一步地,若待预加载服务器判断待校验信息和接口校验信息不一致,则说明该HTTP请求无效,则丢弃该HTTP请求。本实施例中,通过使待预加载服务器根据接口签名校验信息验证接收到的HTTP请求的真实性,可以提高预加载服务的可靠性,从而使预加载服务能够有效地对待预加载服务器进行充分预加载。
在一示例性实施例中,接口签名校验信息是客户端根据接口公共参数和/或接口特定参数生成的对应的哈希值,待校验信息是线程池根据接口公共参数和/或接口特定参数生成对应的哈希值。
具体地,在客户端接收到通过其可视化界面配置的接口公共参数和/或接口特定参数后,采用哈希算法将接口公共参数和/或接口特定参数转换成相应的哈希值,作为接口签名校验信息。预加载任务进程启动预加载服务后,通过线程池采用与客户端同样的哈希算法将获取到的接口公共参数和/或接口特定参数转换成相应的相应的哈希值,作为待校验信息。在待预加载服务器接收到HTTP请求后,将预加载任务进程生成的哈希值与客户端生成的哈希值进行比较。若相同,则接收HTTP请求;若不相同,则说明该HTTP请求无效,丢弃该HTTP请求。本实施例中采用的哈希算法不限于是MD4(Message Digest,消息摘要)、MD5和SHA-1(Secure Hash Algorithm1,安全散列算法1)。
在一示例性实施例中,预加载任务进程包括至少一个;预加载任务进程是周期性运行的离线任务。
具体地,由于单个预加载任务进程的处理能力有限,因此,可以同时启动多个预加载任务进程,通过提高主线程提交预加载请求的频率增强对待预加载服务器进行预加载的能力。另外,可以通过设定预设服务启动周期,使预加载任务进程周期性地离线运行,可以提高预加载服务的自动化程度。
图8是根据一示例性实施例示出的一种具体地服务器预加载方法的流程图,如图8所示,包括以下步骤。
在步骤801中,通过配置平台的可视化界面配置预加载服务配置信息。
其中,预加载服务配置信息不限于包括接口信息、集群信息和预加载信息。接口信息不限于包括资源路径、接口的接口公共参数和接口特定参数;集群信息不限于包括待预加载服务器的地址及端口;预加载信息不限于包括预加载频率、预加载线程数目等。预加载频率可以通过QPS值表征。进一步地,通过配置平台还可以对预加载服务配置信息进行修改、权限校验、类型检查、配置回滚等操作。
在步骤802中,触发启动预加载任务进程。其中,预加载任务进程可以是周期性离线的任务。根据服务器实际需求,可以同时启动多个预加载任务进程,从而提高预加载能力。
在步骤803中,预加载任务进程中的主线程从配置服务器中获取预加载信息中的QPS值。
在步骤804中,主线程获取QPS值的倒数,作为提交预加载请求的速率,将提交预加载请求的速率作为下发令牌的速率。
在步骤805中,主线程根据下发令牌的速率向令牌桶下发令牌。
在步骤806中,当令牌桶中存在令牌时,则主线程向预加载任务进程中的线程池提交预加载请求。将预加载请求提交至线程池的工作队列中。
在步骤807中,线程池中的工作线程从工作队列中取出预加载请求,获取预加载服务配置信息中的接口信息和集群信息。其中,接口信息包括资源路径,集群信息包括待预加载服务器的地址。
在步骤808中,线程池中的工作线程根据待预加载服务器的地址和资源路径配置HTTP请求的请求报文,生成HTTP请求。
在步骤809中,线程池中的工作线程将接口信息中的接口公共参数和/或接口特定参数进行转换得到对应的哈希值,作为待校验信息。
在步骤810中,线程池中的工作线程根据集群信息中待预加载服务器的地址及端口,将携带有待校验信息的HTTP请求发送至待预加载服务器。待预加载服务器将待校验信息与接口签名校验信息进行比较,若一致,则接收HTTP请求;否则,丢弃HTTP请求。其中,接口签名校验信息是客户端根据所述接口公共参数和/或接口特定参数生成的对应的哈希值。
应该理解的是,虽然图1-8的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-8中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的子步骤或者阶段的至少一部分轮流或者交替地执行。
图9是根据一示例性实施例示出的一种服务器预加载装置900框图。参照图9,该装置包括预加载请求提交模块901、获取模块902、HTTP请求生成模块903和预加载模块904。
预加载请求提交模块901,被配置为执行通过预加载任务进程中的主线程向预加载任务进程中的线程池提交预加载请求;
获取模块902,被配置为执行通过线程池响应于预加载请求,从配置服务器中获取预加载服务配置信息,配置服务器用于存储预加载服务配置信息;
HTTP请求生成模块903,被配置为执行通过线程池根据预加载服务配置信息生成HTTP请求;
预加载模块904,被配置为执行通过线程池将HTTP请求发送至与预加载服务配置信息对应的待预加载服务器。
在一示例性实施例中,预加载服务配置信息包括预加载频率;获取模块902,被配置为执行通过主线程从配置服务器中获取预先配置的预加载频率;预加载请求提交模块901,被配置为执行通过主线程获取预加载频率的倒数,作为提交预加载请求的速率;根据提交预加载请求的速率向预加载任务进程中的线程池提交预加载请求。
在一示例性实施例中,预加载请求提交模块901,包括:令牌下发速率确定单元,被配置为执行通过主线程将提交预加载请求的速率作为下发令牌的速率;令牌下发单元,被配置为执行通过主线程根据下发令牌的速率向令牌桶下发令牌;预加载请求提交单元,被配置为执行当令牌桶中存在令牌时,则通过主线程向预加载任务进程中的线程池提交预加载请求。
在一示例性实施例中,预加载频率是根据主线程的提交频率和线程池中工作线程的发送频率确定的,若主线程的提交频率大于等于线程池中工作线程的发送频率,则将线程池中工作线程的发送频率作为预加载频率,若主线程的提交频率小于线程池中工作线程的发送频率,则将主线程的提交频率作为预加载频率。
在一示例性实施例中,预加载服务配置信息包括接口信息和集群信息,接口信息包括资源路径,集群信息包括待预加载服务器的地址;HTTP请求生成模块903,被配置为执行通过线程池采用待预加载服务器的地址和资源路径配置HTTP请求的请求报文,生成HTTP请求。
在一示例性实施例中,集群信息还包括待预加载服务器的端口;预加载模块904,被配置为执行通过线程池根据集群信息中待预加载服务器的地址及端口,将HTTP请求发送至待预加载服务器。
在一示例性实施例中,预加载请求携带有接口签名校验信息,接口信息还包括接口公共参数和/或接口特定参数;预加载模块904,包括:待校验信息生成单元,被配置为执行通过线程池对接口信息中的接口公共参数和/或接口特定参数进行转换,生成对应的待校验信息;预加载单元,被配置为执行通过线程池根据集群信息中待预加载服务器的地址及端口,将携带有待校验信息的HTTP请求发送至待预加载服务器,以使待预加载服务器在确定待校验信息与已获取的接口签名校验信息一致时,接收HTTP请求。
在一示例性实施例中,接口签名校验信息是客户端根据接口公共参数和/或接口特定参数生成的对应的哈希值,待校验信息是线程池根据接口公共参数和/或接口特定参数生成对应的哈希值。
在一示例性实施例中,预加载任务进程包括至少一个;预加载任务进程是周期性运行的离线任务。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图10是根据一示例性实施例示出的一种用于服务器预加载的设备1000的框图。例如,设备1000可以为一服务器。参照图10,设备1000包括处理组件1020,其进一步包括一个或多个处理器,以及由存储器1022所代表的存储器资源,用于存储可由处理组件1020的执行的指令,例如应用程序。存储器1022中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件1020被配置为执行指令,以执行上述服务器预加载的方法。
设备1000还可以包括一个电源组件1024被配置为执行设备1000的电源管理,一个有线或无线网络接口1026被配置为将设备1000连接到网络,和一个输入输出(I/O)接口1028。设备1000可以操作基于存储在存储器1022的操作***,例如Windows Server,Mac OSX,Unix,Linux,FreeBSD或类似。
在示例性实施例中,还提供了一种包括指令的存储介质,例如包括指令的存储器1022,上述指令可由设备1000的处理器执行以完成上述方法。存储介质可以是非临时性计算机可读存储介质,例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本公开的其它实施方案。本公开旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (10)
1.一种服务器预加载方法,其特征在于,包括:
预加载任务进程中的主线程向所述预加载任务进程中的线程池提交预加载请求;
所述线程池响应于所述预加载请求,从配置服务器中获取预加载服务配置信息,所述配置服务器用于存储预加载服务配置信息;
所述线程池根据所述预加载服务配置信息生成HTTP请求;
所述线程池将所述HTTP请求发送至与所述预加载服务配置信息对应的待预加载服务器。
2.根据权利要求1所述的服务器预加载方法,其特征在于,所述预加载服务配置信息包括预加载频率;所述预加载任务进程中的主线程向所述预加载任务进程中的线程池提交预加载请求,包括:
所述主线程从所述配置服务器中获取预先配置的所述预加载频率;
所述主线程获取所述预加载频率的倒数,作为提交所述预加载请求的速率;
所述主线程根据提交所述预加载请求的速率向所述预加载任务进程中的线程池提交所述预加载请求。
3.根据权利要求2所述的服务器预加载方法,其特征在于,所述预加载频率是根据所述主线程的提交频率和所述线程池中工作线程的发送频率确定的;若所述主线程的提交频率大于等于所述线程池中工作线程的发送频率,则将所述线程池中工作线程的发送频率作为所述预加载频率;若所述主线程的提交频率小于所述线程池中工作线程的发送频率,则将所述主线程的提交频率作为所述预加载频率。
4.根据权利要求1所述的服务器预加载方法,其特征在于,所述预加载服务配置信息包括接口信息和集群信息,所述接口信息包括资源路径,所述集群信息包括待预加载服务器的地址;所述线程池根据所述预加载服务配置信息生成HTTP请求,包括:
所述线程池采用所述待预加载服务器的地址和所述资源路径配置所述HTTP请求的请求报文,生成所述HTTP请求。
5.根据权利要求4所述的服务器预加载方法,其特征在于,所述集群信息还包括待预加载服务器的端口;所述线程池将所述HTTP请求发送至与所述预加载服务配置信息对应的待预加载服务器,包括:
所述线程池根据所述集群信息中所述待预加载服务器的地址及端口,将所述HTTP请求发送至所述待预加载服务器。
6.根据权利要求5所述的服务器预加载方法,其特征在于,所述接口信息还包括接口公共参数和/或接口特定参数;所述线程池根据所述集群信息中所述待预加载服务器的地址及端口,将所述HTTP请求发送至所述待预加载服务器,包括:
所述线程池对所述接口信息中的接口公共参数和/或接口特定参数进行转换,生成对应的待校验信息;
所述线程池根据所述集群信息中所述待预加载服务器的地址及端口,将携带有所述待校验信息的HTTP请求发送至所述待预加载服务器,以使所述待预加载服务器在确定所述待校验信息与已获取的接口签名校验信息一致时,接收所述HTTP请求。
7.根据权利要求1~6任一项所述的服务器预加载方法,其特征在于,所述预加载任务进程包括至少一个;所述预加载任务进程是周期性运行的离线任务。
8.一种服务器预加载装置,其特征在于,包括:
预加载请求提交模块,被配置为执行通过预加载任务进程中的主线程向所述预加载任务进程中的线程池提交预加载请求;
获取模块,被配置为执行通过所述线程池响应于所述预加载请求,从配置服务器中获取预加载服务配置信息,所述配置服务器用于存储预加载服务配置信息;
HTTP请求生成模块,被配置为执行通过所述线程池根据所述预加载服务配置信息生成HTTP请求;
预加载模块,被配置为执行通过所述线程池将所述HTTP请求发送至与所述预加载服务配置信息对应的待预加载服务器。
9.一种服务器,其特征在于,包括:
处理器;
用于存储所述处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述指令,以实现如权利要求1至7中任一项所述的服务器预加载方法。
10.一种存储介质,其特征在于,当所述存储介质中的指令由服务器的处理器执行时,使得服务器能够执行如权利要求1至7中任一项所述的服务器预加载方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010573639.4A CN111756831B (zh) | 2020-06-22 | 2020-06-22 | 服务器预加载方法、装置、服务器及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010573639.4A CN111756831B (zh) | 2020-06-22 | 2020-06-22 | 服务器预加载方法、装置、服务器及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111756831A true CN111756831A (zh) | 2020-10-09 |
CN111756831B CN111756831B (zh) | 2023-05-30 |
Family
ID=72674865
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010573639.4A Active CN111756831B (zh) | 2020-06-22 | 2020-06-22 | 服务器预加载方法、装置、服务器及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111756831B (zh) |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104426964A (zh) * | 2013-08-29 | 2015-03-18 | 腾讯科技(深圳)有限公司 | 数据传输方法、装置及终端、计算机存储介质 |
CN105260374A (zh) * | 2015-07-17 | 2016-01-20 | 中国科学院计算技术研究所 | 异步流水线式的图查询方法及*** |
CN107729139A (zh) * | 2017-09-18 | 2018-02-23 | 北京京东尚科信息技术有限公司 | 一种并发获取资源的方法和装置 |
WO2018161813A1 (zh) * | 2017-03-08 | 2018-09-13 | 阿里巴巴集团控股有限公司 | 一种资源加载方法及装置 |
CN108549673A (zh) * | 2018-03-29 | 2018-09-18 | 优视科技有限公司 | 网页资源的预加载方法、客户端、服务器及网络*** |
CN109471677A (zh) * | 2018-10-30 | 2019-03-15 | 努比亚技术有限公司 | 一种快速启动方法、移动终端以及计算机存储介质 |
CN110636367A (zh) * | 2019-07-12 | 2019-12-31 | 北京无限光场科技有限公司 | 一种视频加载方法、装置、终端设备及介质 |
-
2020
- 2020-06-22 CN CN202010573639.4A patent/CN111756831B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104426964A (zh) * | 2013-08-29 | 2015-03-18 | 腾讯科技(深圳)有限公司 | 数据传输方法、装置及终端、计算机存储介质 |
CN105260374A (zh) * | 2015-07-17 | 2016-01-20 | 中国科学院计算技术研究所 | 异步流水线式的图查询方法及*** |
WO2018161813A1 (zh) * | 2017-03-08 | 2018-09-13 | 阿里巴巴集团控股有限公司 | 一种资源加载方法及装置 |
CN107729139A (zh) * | 2017-09-18 | 2018-02-23 | 北京京东尚科信息技术有限公司 | 一种并发获取资源的方法和装置 |
CN108549673A (zh) * | 2018-03-29 | 2018-09-18 | 优视科技有限公司 | 网页资源的预加载方法、客户端、服务器及网络*** |
CN109471677A (zh) * | 2018-10-30 | 2019-03-15 | 努比亚技术有限公司 | 一种快速启动方法、移动终端以及计算机存储介质 |
CN110636367A (zh) * | 2019-07-12 | 2019-12-31 | 北京无限光场科技有限公司 | 一种视频加载方法、装置、终端设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111756831B (zh) | 2023-05-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7197612B2 (ja) | オンデマンドネットワークコード実行システム上での補助機能の実行 | |
CN112119374B (zh) | 使用替代服务器名称选择性地提供相互传输层安全 | |
US20210297410A1 (en) | Mec platform deployment method and apparatus | |
CN111431740B (zh) | 数据的传输方法、装置、设备及计算机可读存储介质 | |
US8606897B2 (en) | Systems and methods for exporting usage history data as input to a management platform of a target cloud-based network | |
KR102328193B1 (ko) | 가상 데스크탑 서비스를 위한 장치 및 방법 | |
WO2018006872A1 (zh) | 一种混合云的接口调用方法及装置 | |
CN112104723B (zh) | 一种多集群的数据处理***及方法 | |
JP2020502895A (ja) | メッセージングプロトコル通信の管理 | |
CN111258627B (zh) | 一种接口文档生成方法和装置 | |
US11632247B2 (en) | User security token invalidation | |
CN112612629A (zh) | 一种组件式的数据接口实现方法与*** | |
US8849947B1 (en) | IT discovery of virtualized environments by scanning VM files and images | |
CN115604120B (zh) | 一种多云集群资源共享方法、装置、设备及存储介质 | |
CN110445615A (zh) | 网络请求安全性验证方法、装置、介质及电子设备 | |
US11861386B1 (en) | Application gateways in an on-demand network code execution system | |
US20190356648A1 (en) | Resource extension method and device for a zone of a cloud service platform, apparatus and computer-readable storage medium | |
CN111831402B (zh) | 用于管理软件功能的方法、设备和计算机程序产品 | |
CN114785526B (zh) | 基于区块链的多用户多批次权重分配计算及存储处理*** | |
CN111756831B (zh) | 服务器预加载方法、装置、服务器及存储介质 | |
CN110768855B (zh) | 链路化性能测试的方法和装置 | |
CN109379444B (zh) | 一种基于自动适配来提供私有云服务的方法及*** | |
CN116089020B (zh) | 虚拟机运行方法、扩容方法、扩容*** | |
US20240022641A1 (en) | Apparatus and methods for dynamic scaling and orchestration | |
CN115174665B (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 |