CN112637082A - Distributed current limiting method - Google Patents

Distributed current limiting method Download PDF

Info

Publication number
CN112637082A
CN112637082A CN202011479920.8A CN202011479920A CN112637082A CN 112637082 A CN112637082 A CN 112637082A CN 202011479920 A CN202011479920 A CN 202011479920A CN 112637082 A CN112637082 A CN 112637082A
Authority
CN
China
Prior art keywords
current
time
current limiting
limiting
limit
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
Application number
CN202011479920.8A
Other languages
Chinese (zh)
Other versions
CN112637082B (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.)
Yinsheng Payment Service Co Ltd
Original Assignee
Yinsheng Payment Service 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 Yinsheng Payment Service Co Ltd filed Critical Yinsheng Payment Service Co Ltd
Priority to CN202011479920.8A priority Critical patent/CN112637082B/en
Publication of CN112637082A publication Critical patent/CN112637082A/en
Application granted granted Critical
Publication of CN112637082B publication Critical patent/CN112637082B/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/20Traffic policing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/215Flow control; Congestion control using token-bucket
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Telephonic Communication Services (AREA)
  • Mobile Radio Communication Systems (AREA)

Abstract

The invention provides a distributed current limiting method, which comprises the following steps: s1, calling a tryAcquire method for trying to limit current by a calling party, and inputting method access information; s2, acquiring the current system millisecond time by using system currenttimemillis (), and recording as the current limiting start time trystime; s3, assembling a current limiting key; s4, adopting Redis to execute the Lua script to obtain a return value; s5, judging whether the obtained return value is equal to 1, and when the return value is equal to 1, returning true to the target service, namely releasing; when the return value is not equal to 1, false is returned to the target traffic, i.e., the current limit. The method and the device realize the current limiting of the service interface, effectively shield abnormal requests, reduce system load, realize the distributed current limiting control of calling the external interface, reduce system load, improve system availability and improve interface success rate.

Description

Distributed current limiting method
Technical Field
The invention relates to the technical field of flow management, in particular to a distributed current limiting method.
Background
The existing service system only supports access layer current limiting, for example, through Array hardware load balancing or Nginx load balancing, the application access times of a single IP in a unit time are limited, for example, the application access times of each IP are limited to 300 times/s. However, the service interface lacks limitation, so that when malicious requests or useless requests are too many, the system load is high, and even the downtime risk occurs.
And partial third-party interfaces such as WeChat special business report, the limiting interfaces are called for 1 time per second, a report system generally adopts distributed deployment, a distributed current limiting scheme is required to be adopted, the request rate is controlled, and the system load is reduced. The existing system service current limiting schemes such as Guava and Hystrix only support single token bucket and leaky bucket algorithm current limiting, and though Sentiel supports distributed current limiting, cluster deployment is required, deployment complexity is high, implementation principle is complex, and controllability is low.
Disclosure of Invention
In order to overcome the defects of the prior art, the invention provides a distributed current limiting method to solve the technical problems.
The technical method for solving the technical problem is as follows: the improvement of a distributed current limiting method is as follows: the method comprises the following steps: s1, calling an attempt flow limiting tryAcquire method by a calling party, inputting method parameter entering information, wherein the method parameter entering information comprises but is not limited to a first flow limiting keyword key, a first flow limiting time limitTime, a maximum flow limiting number limitMax in the first flow limiting time, a first current acquired flow number acquireNum and a first attempt waiting time tryTimeMills; s2, acquiring the current system millisecond time by using system currenttimeMillis (), which is recorded as the current system millisecond time in milliseconds of trying to limit the current, tryStartTime, and system currentTimeMillis (), i.e. API provided by Java, and functions to return the current system time in milliseconds; s3, assembling a current limiting key; s4, adopting Redis to execute the Lua script to obtain a return value; s5, judging whether the obtained return value is equal to 1, and when the return value is equal to 1, returning true to the target service, namely releasing; when the return value is not equal to 1, false is returned to the target traffic, i.e., the current limit.
In the above method, step S3 includes the following steps:
s31, acquiring a current system time millisecond value by using a System currentTimeMillis () and recording the current system time millisecond value as current limiting time curLimitTime;
s32, multiplying the first current limit time limit Time by 1000 to obtain the millisecond value of the first current limit time limit Time;
s33, dividing the current limiting time curLimitTime by the millisecond value of the first current limiting time limiTime to obtain a current limiting interval value to which the current system time belongs;
and S34, obtaining a current limiting key by adding the current limiting interval value to which the current system time belongs to the first current limiting key.
In the above method, step S4 includes the following steps:
s41, obtaining Lua script parameter entering information, wherein the Lua script parameter entering information comprises but is not limited to a second current limiting keyword key, a maximum limit number limit Max within a second current limiting time, a second current limiting time limit Time and a second current obtained flow number acquireNum;
s42, executing a Get instruction of Redis by using a Lua script, acquiring a current second current limiting keyword key accumulated value, recording the current second current limiting keyword key accumulated value as current, and returning the accumulated value to the current if the second current limiting keyword key exists; if the second key does not exist, defaulting the second key cumulative value to 0;
s43, judging whether the sum of the current and the second current acquired flow number acquireNum is greater than the maximum limit number limit Max within the second current limiting time, finishing Lua script execution when the sum of the current and the second current acquired flow number acquireNum is greater than the maximum limit number limit Max within the second current limiting time, acquiring a return value 0, and jumping to the step S5; when the sum of the current and the second current acquired traffic number acquireNum is less than or equal to the maximum limit number limiTMax within the second current limit time, jumping to step S44;
s44, executing an Incyby instruction of Redis by using a Lua script, and adding the current second current limiting keyword key accumulated value to a second current acquisition flow number acquireNum;
s45, using Lua script to execute a TTL instruction of Redis, obtaining the residual expiration time of the current second current limiting keyword key, when the residual expiration time value is less than 0, executing an exit instruction of Redis, setting the expiration time of the current second current limiting keyword key as the second current limiting time limitTime plus 2, and obtaining a return value 1; when the remaining expiration time value is greater than or equal to 0, the return value 1 is directly obtained.
In the above method, in step S5, when the return value is not equal to 1, using system currenttimemills () to obtain the current system millisecond time, which is recorded as the attempted current limit end time trynedtime, subtracting the attempted current limit start time tryastarttime from the attempted current limit end time trynedtime to obtain the total attempted current limit time, determining whether the total attempted current limit time is less than the first attempted wait time trynimemills, when the total attempted current limit time is less than the first attempted wait time trynimemills, calling a thread sleep thread (50) method, and after waiting for the current thread time to be 50 milliseconds, jumping to step S3; when the total time taken to attempt current limiting is greater than or equal to the first attempt latency tryTimeMills, false is returned to the target traffic, i.e., current limiting.
The invention has the beneficial effects that: the current limiting of the service interface is realized, the abnormal request is effectively shielded, the system load is reduced, and the system availability is improved; the distributed current limiting control of calling an external interface is realized, the success rate of the interface is improved, and the system load is reduced; and the code logic is simple and effective, a unified tool method is provided, the use is light, no additional machine is needed, only Redis is needed, the system cost is effectively controlled, and the system complexity is reduced.
Drawings
Fig. 1 is a flow chart of a distributed current limiting method according to the present invention.
Fig. 2 is a flowchart illustrating the detailed steps of step S4 in fig. 1.
Fig. 3 is a logic diagram of step S5 in fig. 1.
Detailed Description
The invention is further illustrated with reference to the following figures and examples.
The conception, the specific structure, and the technical effects produced by the present invention will be clearly and completely described below in conjunction with the embodiments and the accompanying drawings to fully understand the objects, the features, and the effects of the present invention. It is obvious that the described embodiments are only a part of the embodiments of the present invention, and not all embodiments, and those skilled in the art can obtain other embodiments without inventive effort based on the embodiments of the present invention, and all embodiments are within the protection scope of the present invention. In addition, all the connection/connection relations referred to in the patent do not mean that the components are directly connected, but mean that a better connection structure can be formed by adding or reducing connection auxiliary components according to specific implementation conditions. All technical characteristics in the invention can be interactively combined on the premise of not conflicting with each other.
Referring to fig. 1, a distributed current limiting method according to the present invention includes the following steps:
s1, the caller calls an attempt flow limiting tryAcquire method to limit flow, and inputs method entry parameter information, wherein the method entry parameter information comprises a first flow limiting keyword key, a first flow limiting time limitTime, a maximum flow limiting number limitMax in the first flow limiting time, a first current acquired flow number acquireNum, a first attempt waiting time tryTimesMill and the like.
The calling party is the service needing to use the current limit, a first current limit keyword key, a first current limit time limitTime, a maximum current limit number limitMax in the first current limit time, a first current acquired traffic number acquireNum and a first attempt waiting time tryTimeMills in the method entry parameter information are used in java, the first current limit keyword key, namely the current limit keyword or name, is unique, such as a merchant number, a channel number or a data main key and the like, the unit of the first current limit time limitt is second, and the unit of the first attempt waiting time tryTimesMill is millisecond.
S2, obtain the current system millisecond time by using system currenttimeMillis (), which is recorded as the current system millisecond time in milliseconds of trying to limit the current flow, trysttartTime, and system currentTimeMillis (), i.e. the API provided by Java, and functions to return the current system time in milliseconds.
And S3, assembling the current limiting key.
Specifically, firstly, a system currenttimeMillis () is used to obtain a current system time millisecond value, and the current system time millisecond value is recorded as a current limit time curLimitTime; multiplying the first current limit time by 1000 to obtain a millisecond value of the first current limit time; dividing the current limit time curLimitTime by the millisecond value of the first current limit time to obtain a current limit interval value to which the current system time belongs; and adding the current limiting interval value to which the current system time belongs to the first current limiting keyword key to obtain a current limiting key.
S4, adopting Redis to execute Lua script, obtaining a return value,
specifically, referring to fig. 2, step S4 includes the following steps:
s41, obtaining Lua script parameter entering information, wherein the Lua script parameter entering information comprises but is not limited to a second current limiting keyword key, a maximum limit number limit Max within a second current limiting time, a second current limiting time limit Time and a second current obtained flow number acquireNum, and the unit of the second current limiting time limit Time is second;
s42, executing a Get instruction of Redis by using a Lua script, acquiring a current second current limiting keyword key accumulated value, recording the current second current limiting keyword key accumulated value as current, wherein the Get instruction of Redis is used for acquiring a value of a specified key, and if the second current limiting keyword key exists, returning the accumulated value to the current; if the second current limiting keyword key does not exist, defaulting the second current limiting keyword key to be 0;
s43, judging whether the sum of current and the second current acquired flow number acquireNum is larger than the maximum limit flow number limitMax in the second current limit time,
when the sum of the current and the second current acquired flow number acquireNum is greater than the maximum limit flow number limiTMax within the second current limit time, ending the Lua script execution, acquiring a return value 0, and jumping to the step S5, wherein the step S5 is to judge whether the acquired return value is equal to 1;
when the sum of the current and the second current acquired traffic number acquireNum is less than or equal to the maximum limit number limitMax within the second current limit time, jumping to the next step, step S44;
s44, executing an Incyby instruction of Redis by using a Lua script, adding a current second current limiting keyword key accumulated value to a second current acquired traffic number acquireNum, adding a specified increment value to a number stored in a second current limiting keyword key by the Incyby instruction, and if the second current limiting keyword key does not exist, initializing the value of the key to 0, and then executing the Incyby instruction;
s45, executing a TTL instruction of Redis by using a Lua script, returning the residual expiration time of a second current limiting keyword key by the TLL instruction in seconds, acquiring the residual expiration time of the current second current limiting keyword key, executing an expires instruction of Redis when the residual expiration time value is less than 0, wherein the Expire instruction is used for setting the expiration time of the second current limiting keyword key, the second current limiting keyword key cannot be used any more after the expiration time, and setting the expiration time of the current second current limiting keyword key to be the sum of the second current limiting time limit time and 2 in seconds to acquire a return value of 1; when the remaining expiration time value is greater than or equal to 0, the return value 1 is directly obtained.
S5, determining whether the obtained return value is equal to 1,
referring to fig. 3, when the return value is equal to 1, then return true to the target service, i.e. pass, and the request of the target service passes;
when the return value is not equal to 1, using system.currenttimeMillis () to obtain the current system millisecond time, which is recorded as the attempted current limit end time tryEndTime, subtracting the attempted current limit start time tryStartTime from the attempted current limit end time tryEndTime to obtain the total attempted current limit time, determining whether the total attempted current limit time is less than the first attempted wait time tryTimeMills, when the total attempted current limit time is less than the first attempted wait time tryTimeMills, calling a thread sleep thread (50) method, waiting for the current thread time to be 50 milliseconds, then jumping to step S3, continuing the flow, and step 3 is a thread API provided by assembling the current limit key, thread sleep (50) method for java, which is used for pausing the current thread, giving out a cpu fragment to other threads, and slowing down the execution of the current thread, wherein the pause time is 50 milliseconds, and re-contending the cpu fragment after 50 milliseconds.
When the return value is not equal to 1, using system currenttimeMillis () to obtain the current system millisecond time, which is recorded as the attempted current limiting end time tryEndTime, subtracting the attempted current limiting start time tryStartTime from the attempted current limiting end time tryEndTime to obtain the total attempted current limiting time, judging whether the total attempted current limiting time is less than the first attempted waiting time tryTimeMills, and when the total attempted current limiting time is greater than or equal to the first attempted waiting time tryTimeMills, returning false to the target service, namely, limiting the current, thereby realizing the distributed current limiting control and reducing the system load.
The distributed current limiting method realizes the current limiting of the service interface, effectively shields abnormal requests, reduces the system load and improves the system availability; the distributed current limiting control of calling an external interface is realized, the success rate of the interface is improved, and the system load is reduced; and the code logic is simple and effective, a unified tool method is provided, the use is light, no additional machine is needed, only Redis is needed, the system cost is effectively controlled, and the system complexity is reduced.
While the preferred embodiments of the present invention have been illustrated and described, it will be understood by those skilled in the art that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined by the appended claims.

Claims (4)

1. A distributed current limiting method is characterized in that: the method comprises the following steps:
s1, calling an attempt flow limiting tryAcquire method by a calling party, inputting method parameter entering information, wherein the method parameter entering information comprises but is not limited to a first flow limiting keyword key, a first flow limiting time limitTime, a maximum flow limiting number limitMax in the first flow limiting time, a first current acquired flow number acquireNum and a first attempt waiting time tryTimeMills;
s2, acquiring the current system millisecond time by using system currenttimeMillis (), which is recorded as the current system millisecond time in milliseconds of trying to limit the current, tryStartTime, and system currentTimeMillis (), i.e. API provided by Java, and functions to return the current system time in milliseconds;
s3, assembling a current limiting key;
s4, adopting Redis to execute the Lua script to obtain a return value;
s5, judging whether the obtained return value is equal to 1, and when the return value is equal to 1, returning true to the target service, namely releasing; when the return value is not equal to 1, false is returned to the target traffic, i.e., the current limit.
2. A distributed current limiting method according to claim 1, wherein: the step S3 includes the following steps:
s31, acquiring a current system time millisecond value by using a System currentTimeMillis () and recording the current system time millisecond value as current limiting time curLimitTime;
s32, multiplying the first current limit time limit Time by 1000 to obtain the millisecond value of the first current limit time limit Time;
s33, dividing the current limiting time curLimitTime by the millisecond value of the first current limiting time limiTime to obtain a current limiting interval value to which the current system time belongs;
and S34, obtaining a current limiting key by adding the current limiting interval value to which the current system time belongs to the first current limiting key.
3. A distributed current limiting method according to claim 1, wherein: the step S4 includes the following steps:
s41, obtaining Lua script parameter entering information, wherein the Lua script parameter entering information comprises but is not limited to a second current limiting keyword key, a maximum limit number limit Max within a second current limiting time, a second current limiting time limit Time and a second current obtained flow number acquireNum;
s42, executing a GET instruction of Redis by using a Lua script, acquiring a current second current limiting keyword key accumulated value, recording the current second current limiting keyword key accumulated value as current, and returning the accumulated value to the current if the second current limiting keyword key exists; if the second key does not exist, defaulting the second key cumulative value to 0;
s43, judging whether the sum of the current and the second current acquired flow number acquireNum is greater than the maximum limit number limit Max within the second current limiting time, finishing Lua script execution when the sum of the current and the second current acquired flow number acquireNum is greater than the maximum limit number limit Max within the second current limiting time, acquiring a return value 0, and jumping to the step S5; when the sum of the current and the second current acquired traffic number acquireNum is less than or equal to the maximum limit number limiTMax within the second current limit time, jumping to step S44;
s44, executing an Incyby instruction of Redis by using a Lua script, and adding the current second current limiting keyword key accumulated value to a second current acquisition flow number acquireNum;
s45, using Lua script to execute a TTL instruction of Redis, obtaining the residual expiration time of the current second current limiting keyword key, when the residual expiration time value is less than 0, executing an exit instruction of Redis, setting the expiration time of the current second current limiting keyword key as the second current limiting time limitTime plus 2, and obtaining a return value 1; when the remaining expiration time value is greater than or equal to 0, the return value 1 is directly obtained.
4. A distributed current limiting method according to claim 2, wherein: in step S5, when the return value is not equal to 1, using system currenttimemills () to obtain a current system millisecond time, which is recorded as an attempted current limiting end time trynedtime, subtracting the attempted current limiting start time tryStartTime from the attempted current limiting end time trynedtime to obtain an attempted current limiting total time, determining whether the attempted current limiting total time is less than a first attempted waiting time trynimemills, when the attempted current limiting total time is less than the first attempted waiting time trynimemills, calling a thread sleep thread (50) method, and after the current thread is allowed to wait for 50 milliseconds at the time limit, jumping to step S3; when the total time taken to attempt current limiting is greater than or equal to the first attempt latency tryTimeMills, false is returned to the target traffic, i.e., current limiting.
CN202011479920.8A 2020-12-15 2020-12-15 Distributed current limiting method Active CN112637082B (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011479920.8A CN112637082B (en) 2020-12-15 2020-12-15 Distributed current limiting method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011479920.8A CN112637082B (en) 2020-12-15 2020-12-15 Distributed current limiting method

Publications (2)

Publication Number Publication Date
CN112637082A true CN112637082A (en) 2021-04-09
CN112637082B CN112637082B (en) 2023-03-31

Family

ID=75313205

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011479920.8A Active CN112637082B (en) 2020-12-15 2020-12-15 Distributed current limiting method

Country Status (1)

Country Link
CN (1) CN112637082B (en)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108418764A (en) * 2018-02-07 2018-08-17 深圳壹账通智能科技有限公司 Current-limiting method, device, computer equipment and storage medium
CN110213173A (en) * 2019-06-06 2019-09-06 北京百度网讯科技有限公司 Flow control methods and device, system, server, computer-readable medium
CN110276182A (en) * 2019-06-10 2019-09-24 必成汇(成都)科技有限公司 The implementation method of API distribution current limliting
CN110554918A (en) * 2019-08-09 2019-12-10 北京字节跳动网络技术有限公司 Current limiting method, current limiting device, electronic equipment and computer readable storage medium
CN111796938A (en) * 2020-06-30 2020-10-20 中国工商银行股份有限公司 Cluster dynamic concurrency control method and device

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108418764A (en) * 2018-02-07 2018-08-17 深圳壹账通智能科技有限公司 Current-limiting method, device, computer equipment and storage medium
CN110213173A (en) * 2019-06-06 2019-09-06 北京百度网讯科技有限公司 Flow control methods and device, system, server, computer-readable medium
CN110276182A (en) * 2019-06-10 2019-09-24 必成汇(成都)科技有限公司 The implementation method of API distribution current limliting
CN110554918A (en) * 2019-08-09 2019-12-10 北京字节跳动网络技术有限公司 Current limiting method, current limiting device, electronic equipment and computer readable storage medium
CN111796938A (en) * 2020-06-30 2020-10-20 中国工商银行股份有限公司 Cluster dynamic concurrency control method and device

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
_LAY: ""Redis + lua分布式限流"", 《HTTPS://WWW.CNBLOGS.COM/LAY2017/P/9074477.HTML 》 *

Also Published As

Publication number Publication date
CN112637082B (en) 2023-03-31

Similar Documents

Publication Publication Date Title
US7096367B2 (en) System and methods for caching in connection with authorization in a computer system
JP2000353103A (en) Method and device for controlling number of servers in multiple-system cluster
CN112181541A (en) Data processing method and device, electronic equipment and storage medium
CN112367268A (en) Current limiting method and device for micro-service
CN112637082B (en) Distributed current limiting method
CN116095013B (en) Service request current limiting method, device and storage medium
US6820176B2 (en) System, method, and computer program product for reducing overhead associated with software lock monitoring
CN103699485A (en) Application program debugging method and device
CN110275780B (en) Method and apparatus for restricting flow
US20220292096A1 (en) Distributed database preprocessing method, agent layer, system and storage medium
CN115373878B (en) Anti-screenshot extension protocol implementation system based on X framework
CN116827976A (en) Terminal equipment interaction management method and system based on Internet of things
US11431711B2 (en) Method, device and computer program product for service access
KR101005593B1 (en) Method and Apparatus for Providing Security Service Using Hook
CN117687763B (en) High concurrency data weak priority processing method and device, electronic equipment and storage medium
CN101964922B (en) Abnormal condition capturing method and device
CN112416798A (en) Data processing method, device, equipment and storage medium
CN112214268A (en) Current limiting method based on Redis
CN111930474B (en) Concurrent limiting method of single service interface based on java atomic operation
CN103873509B (en) A kind of EJB services overload protection method and system
CN115080252B (en) Lock-free illegal memory access detection method and device in iOS platform
CN114157709B (en) Distributed service data encryption and desensitization method
CN114884889B (en) Combined current limiting method for distributed service
CN115002043A (en) Distributed current limiting method, device and storage medium based on registration center
CN113626143A (en) Virtual machine tuning method based on user behavior monitoring

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