Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in / Register
Toggle navigation
B
brpc
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Packages
Packages
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
submodule
brpc
Commits
1b8d49e1
Commit
1b8d49e1
authored
Aug 16, 2018
by
TousakaRin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Modify the document according to Polish
parent
c6face0f
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
27 additions
and
22 deletions
+27
-22
auto_concurrency_limiter.md
docs/cn/auto_concurrency_limiter.md
+10
-16
server.md
docs/cn/server.md
+15
-6
server.md
docs/en/server.md
+2
-0
No files found.
docs/cn/auto_concurrency_limiter.md
View file @
1b8d49e1
...
@@ -16,27 +16,21 @@
...
@@ -16,27 +16,21 @@
这两点是自适应限流能够良好工作的前提。
这两点是自适应限流能够良好工作的前提。
## 开启方法
## 开启方法
直接使用"auto"替换掉之前的最大并发值:
自适应限流是method级别的限流方式,如果要为某个method开启自适应限流,只需要将它的最大并发设置为"auto"即可。
```
```
c++
//
constant max_concurrency
//
Set auto concurrency limiter for all method
brpc
::
ServerOptions
options
;
brpc
::
ServerOptions
options
;
options.m
ax_concurrency = 100;
options
.
m
ethod_max_concurrency
=
"auto"
;
// auto concurrency limiter
// Set auto concurrency limiter for specific method
brpc::ServerOptions options;
server
.
MaxConcurrencyOf
(
"example.EchoService.Echo"
)
=
"auto"
;
options.max_concurrency = "auto";
```
```
**假如需要使用自适应限流,建议仅在Server级别开启自适应限流**
,各个method都不限流(即使用默认值),或者使用固定的最大并发。不要同时在Server和method都开启自适应限流:
自适应限流的算法能够正常工作的前提是:
1.
客户端开启了重试
```
2.
服务端有多个节点,当一个节点返回过载时,客户端可以向其他节点发起重试
brpc::Server server;
更多细节可以看
[
这里
](
https://github.com/TousakaRin/brpc/blob/auto_concurrency_limiter/docs/cn/auto_concurrency_limiter.md
)
brpc::ServerOptions options;
options.max_concurrency = "auto"; // Use auto concurrenty limiter only at the Server level
server.MaxConcurrencyOf("test.EchoService.Echo") = 100; // constant max concurrency
server.Start(FLAGS_echo_port, &options);
```
## 自适应限流的实现
## 自适应限流的实现
...
...
docs/cn/server.md
View file @
1b8d49e1
...
@@ -587,14 +587,19 @@ QPS是一个秒级的指标,无法很好地控制瞬间的流量爆发。而
...
@@ -587,14 +587,19 @@ QPS是一个秒级的指标,无法很好地控制瞬间的流量爆发。而
设置ServerOptions.max_concurrency,默认值0代表不限制。访问内置服务不受此选项限制。
设置ServerOptions.max_concurrency,默认值0代表不限制。访问内置服务不受此选项限制。
Server.ResetMaxConcurrency()可在server启动后动态修改server级别的max_concurrency。
### 限制method级别并发度
### 限制method级别并发度
server.MaxConcurrencyOf("...") = ...可设置method级别的max_concurrency。可能的设置方法有:
server.MaxConcurrencyOf("...") = ...可设置method级别的max_concurrency。也可以通过设置ServerOptions.method_max_concurrency一次性为所有的method设置最大并发。
当ServerOptions.method_max_concurrency和server.MaxConcurrencyOf("...")=...同时被设置时,使用server.MaxConcurrencyOf()所设置的值。
```
c++
```
c++
server.MaxConcurrencyOf("example.EchoService.Echo") = 10;
ServerOptions.method_max_concurrency = 20; // Set the default maximum concurrency for all methods
server.MaxConcurrencyOf("example.EchoService.Echo") = 10; // Give priority to the value set by server.MaxConcurrencyOf()
server.MaxConcurrencyOf("example.EchoService", "Echo") = 10;
server.MaxConcurrencyOf("example.EchoService", "Echo") = 10;
server.MaxConcurrencyOf(&service, "Echo") = 10;
server.MaxConcurrencyOf(&service, "Echo") = 10;
server.MaxConcurrencyOf("example.EchoService.Echo") = "10"; // You can also assign a string value
```
```
此设置一般**发生在AddService后,server启动前**。当设置失败时(比如对应的method不存在),server会启动失败同时提示用户修正MaxConcurrencyOf设置错误。
此设置一般**发生在AddService后,server启动前**。当设置失败时(比如对应的method不存在),server会启动失败同时提示用户修正MaxConcurrencyOf设置错误。
...
@@ -604,17 +609,21 @@ server.MaxConcurrencyOf(&service, "Echo") = 10;
...
@@ -604,17 +609,21 @@ server.MaxConcurrencyOf(&service, "Echo") = 10;
注意:没有service级别的max_concurrency。
注意:没有service级别的max_concurrency。
### 使用自适应限流算法
### 使用自适应限流算法
实际生产环境中,最大并发并不一定是一成不变的。这个时候可以
在Server级别使用自适应限流算法,同时将Method级别设置为不限制并发(即默认值)
:
实际生产环境中,最大并发并不一定是一成不变的。这个时候可以
使用自适应限流算法。自适应限流是method级别的。要使用自适应限流算法,把method的最大并发度设置为"auto"即可
:
```
c++
```
c++
brpc::Server server;
// Set auto concurrency limiter for all method
brpc::ServerOptions options;
brpc::ServerOptions options;
options.max_concurrency = "auto"; // auto concurrency limiter
options.method_max_concurrency = "auto";
// Set auto concurrency limiter for specific method
server.MaxConcurrencyOf("example.EchoService.Echo") = "auto";
```
```
自适应限流的算法能够正常工作的前提是:
自适应限流的算法能够正常工作的前提是:
1. 客户端开启了重试
1. 客户端开启了重试
2. 服务端有多个节点,当一个节点返回过载时,客户端可以向其他节点发起重试
2. 服务端有多个节点,当一个节点返回过载时,客户端可以向其他节点发起重试
更多细节可以看[这里](https://github.com/TousakaRin/brpc/blob/auto_concurrency_limiter/docs/cn/auto_concurrency_limiter.md)
关于自适应限流的更多细节可以看[这里](https://github.com/brpc/brpc/blob/master/docs/cn/auto_concurrency_limiter.md)
## pthread模式
## pthread模式
...
...
docs/en/server.md
View file @
1b8d49e1
...
@@ -588,6 +588,8 @@ PeakQPS and AverageLatency are queries-per-second and latencies measured in a se
...
@@ -588,6 +588,8 @@ PeakQPS and AverageLatency are queries-per-second and latencies measured in a se
Set ServerOptions.max_concurrency. Default value is 0 which means not limited. Accesses to builtin services are not limited by this option.
Set ServerOptions.max_concurrency. Default value is 0 which means not limited. Accesses to builtin services are not limited by this option.
Call Server.ResetMaxConcurrency() to modify max_concurrency of the server after starting.
### Limit method-level concurrency
### Limit method-level concurrency
server.MaxConcurrencyOf("...") = … sets max_concurrency of the method. Possible settings:
server.MaxConcurrencyOf("...") = … sets max_concurrency of the method. Possible settings:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment