This is an automated email from the ASF dual-hosted git repository.

membphis pushed a commit to branch membphis/doc-faq-cn
in repository https://gitbox.apache.org/repos/asf/apisix.git

commit e315cb9da241549368736d3224f38df1602c7325
Author: YuanSheng Wang <[email protected]>
AuthorDate: Wed Nov 25 14:30:04 2020 +0800

    doc(faq):  uses etcd to implement millisecond configuration sync
---
 FAQ_CN.md | 26 ++++++++++++++------------
 1 file changed, 14 insertions(+), 12 deletions(-)

diff --git a/FAQ_CN.md b/FAQ_CN.md
index 66587d1..3423324 100644
--- a/FAQ_CN.md
+++ b/FAQ_CN.md
@@ -240,21 +240,23 @@ Apache APISIX 的插件支持热加载。
 
 2.重启抑或 reload APISIX
 
-## APISIX利用etcd如何实现毫秒级别的配置同步
-etcd提供接口wait、waitdir接口用于监听指定关键字、目录是否发生变更,如果发生变更,返回更新的数据。
+## APISIX 利用 etcd 如何实现毫秒级别的配置同步
+
+etcd 提供订阅接口用于监听指定关键字、目录是否发生变更(比如: 
[watch](https://github.com/api7/lua-resty-etcd/blob/master/api_v3.md#watch)、[watchdir](https://github.com/api7/lua-resty-etcd/blob/master/api_v3.md#watchdir))。
 
-以waitdir接口为例:
-`syntax: res, err = cli:waitdir(dir:string [, modified_index:uint [, 
timeout:uint] ])`
-其中timeout参数表示调用进程和etcd长连接的时间。
 
-APISIX关于etcd长连接时间的配置如下:
 ```
+# APISIX 关于 etcd 的配置如下(conf/config.yaml):
 etcd:
-  host:                           # it's possible to define multiple etcd 
hosts addresses of the same etcd cluster.
-    - "http://127.0.0.1:2379";     # multiple etcd address
-  prefix: "/apisix"               # apisix configurations prefix
-  timeout: 30                     # 30 seconds
+  host:                           
+    - "http://127.0.0.1:2379";     
+  prefix: "/apisix"               
+  timeout: 30                     # 30 seconds timeout
 ```
-APISIX使用waitdir接口监视目录的变更,timeout默认配置为30秒,即APISIX调用进程和etcd保持30秒的长连接。
 
-若APISIX进程调用该函数时,监听的目录没有更新,函数直接返回,长连接保持,调用进程可处理其他事件。30秒内有数据更新,etcd通过该函数返回更新结果,调用进程处理更新数据,30秒内无数据返回,到达超时时间30秒时,etcd通过该函数返回一条超时消息,调用进程处理超时信息,然后再次调用waitdir函数监听指定目录。APISIX通过以上过程实现配置的实时更新。
+APISIX 主要使用 `etcd.watchdir` 接口监视目录的变更,默认超时时间为 30 秒。
+
+APISIX 调用函数 `etcd.watchdir`:
+
+* 如果监听的目录没有数据更新,该调用会被阻塞,直到超时或其他错误返回。
+* 如果监听的目录有数据更新,etcd 将立刻返回订阅到的新数据,APISIX 将它更新到内存缓存。借助 etcd 增量通知毫秒级特性,APISIX 
也就完成了毫秒级的配置同步。

Reply via email to