poorbarcode commented on code in PR #19012:
URL: https://github.com/apache/pulsar/pull/19012#discussion_r1057779817


##########
site2/docs/cookbooks-message-throttling.md:
##########
@@ -0,0 +1,86 @@
+---
+id: message-throttling
+title: Message throttling
+sidebar_label: "Message throttling"
+---
+
+## Message Dispatch throttling
+Message dispatch throttling is a mechanism that limits the speed at which 
messages are delivered to the client.
+
+### When should I use message dispatch throttling?
+* Messages are persisted on disk, `Storage` is the component for this part of 
the work. If a large number of read
+  requests fail to match the cache, the Storage becomes too busy and cannot 
work properly. Use message dispatch
+  throttling makes Pulsar work steadily by keeping Storage's read request load 
stable.
+* An instance of 'Broker' serves multiple topics at the same time, and if a 
topic is too busy, it will occupy
+  almost all of the IO resources, other topics will not work well. Use message 
dispatch throttling can balance
+  the allocation of resources to agents across topics.
+* There have large backlog of messages to consume, clients may receive a large 
amount of data in a short period of time,
+  thus monopolizing the client computer resources. Message dispatch throttling 
can also be used to balance the resource
+  allocation of the client computer.
+
+### Concepts of message dispatch throttling
+- `ratePeriodInSecond` The unit of the rate limiting period is second. The 
default is 1s.
+- `dispatchThrottlingRateInMsg` Specifies the maximum number of messages to be 
delivered in each rate limiting period. 
+   The default is' -1 ', which means no limit.
+- `dispatchThrottlingRateInByte` The maximum number of bytes of messages 
delivered per rate-limiting period. The default
+   is' -1 ', which means no limit.
+
+> If set ` dispatchThrottlingRateInMsg` and ` dispatchThrottlingRateInByte` 
both, then the message delivery is required 
+> at the same time satisfy the rules of the two, in other words the two rules 
are not mutually exclusive.
+
+### How it works
+Message dispatch throttling works divided into these steps:
+1. Calculate the number of messages or bytes to be delivered.
+2. Estimate the amount of data to be read from the Storage (This estimate 
logic is not accurate, as described below).
+3. Update the counter of message dispatch throttling.
+4. Actually deliver the message to the client.
+
+> If the quota in the current rate limiting period is not used up, the quota 
will not be used in the next rate limiting
+> period. However, if the quota in the current rate limiting period is 
exceeded, the quota in the next rate limiting
+> period is reduced. For example, if the rate-limiting rule is set to `10 /s`, 
`11` messages are delivered to the client

Review Comment:
   Already add a section Why are messages over-delivered?"



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to