Skip to content

feat(zookeeper): support zookeeper service discovery#6751

Merged
spacewander merged 9 commits into
apache:masterfrom
shuaijinchao:feat/support/zookeeper/discovery
Apr 7, 2022
Merged

feat(zookeeper): support zookeeper service discovery#6751
spacewander merged 9 commits into
apache:masterfrom
shuaijinchao:feat/support/zookeeper/discovery

Conversation

@shuaijinchao

Copy link
Copy Markdown
Member

Description

support zookeeper service discovery

Checklist

  • I have explained the need for this PR and the problem it solves
  • I have explained the changes or the new features added to this PR
  • I have added tests corresponding to this change
  • I have updated the documentation to reflect this change
  • I have verified that this change is backward compatible (If not, please discuss on the APISIX mailing list first)

Comment thread docs/en/latest/discovery/zookeeper.md Outdated
Comment on lines +39 to +40
$ git clone https://github.com/api7/apisix-seed.git
$ go build

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
$ git clone https://github.com/api7/apisix-seed.git
$ go build
git clone https://github.com/api7/apisix-seed.git
go build

Comment thread docs/en/latest/discovery/zookeeper.md Outdated
2. Start the Zookeeper service

```bash
$ docker run -itd --rm --name=dev-zookeeper -p 2181:2181 zookeeper:3.7.0

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
$ docker run -itd --rm --name=dev-zookeeper -p 2181:2181 zookeeper:3.7.0
docker run -itd --rm --name=dev-zookeeper -p 2181:2181 zookeeper:3.7.0

Comment thread docs/en/latest/discovery/zookeeper.md Outdated

### How apisix-seed works

![APISIX-SEED](../../../assets/images/apisix-seed.png)

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think explaining the architecture diagram can help users understand.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sure. And better to avoid adding an uneditable PNG image.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

change to svg

Comment thread docs/en/latest/discovery/zookeeper.md Outdated
3. Start `apisix-seed` to monitor service changes

```bash
$ ./apisix-seed

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
$ ./apisix-seed
./apisix-seed

Comment thread docs/en/latest/discovery/zookeeper.md Outdated
is `APISIX-ZK`.

```shell
$ curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -i -d '

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
$ curl http://127.0.0.1:9080/apisix/admin/routes/1 -H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -i -d '
curl http://127.0.0.1:9080/apisix/admin/routes/1 \
-H 'X-API-KEY: edd1c9f034335f136f87ad84b625c8f1' -X PUT -i -d '

Comment thread docs/en/latest/discovery/zookeeper.md Outdated
}'
```

### Register service and verify request

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ditto

Comment on lines +95 to +100
```bash
$ docker exec -it ${ContainerID} /bin/bash
oot@ae2f093337c1:/apache-zookeeper-3.7.0-bin# ./bin/zkCli.sh
[zk: localhost:2181(CONNECTED) 0] create /zookeeper/APISIX-ZK '{"host":"127.0.0.1:1980","weight":100}'
Created /zookeeper/APISIX-ZK
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think it's a good idea to put the command and return in the same block of code.

Comment thread docs/en/latest/discovery/zookeeper.md Outdated
1. Service registration using Zookeeper CLI

```bash
$ docker exec -it ${ContainerID} /bin/bash

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
$ docker exec -it ${ContainerID} /bin/bash
docker exec -it ${ContainerID} /bin/bash

Comment on lines +105 to +113
curl -i http://127.0.0.1:9080/zk/hello
HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: text/html; charset=utf-8
Date: Tue, 29 Mar 2022 08:51:28 GMT
Server: APISIX/2.12.0
Transfer-Encoding: chunked

hello

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ditto

Comment on lines +51 to +66
```bash
$ vim conf/conf.yaml
etcd: # APISIX ETCD Configure
host:
- "http://127.0.0.1:2379"
prefix: /apisix
timeout: 30

discovery:
zookeeper: # Zookeeper Service Discovery
hosts:
- "127.0.0.1:2181"
prefix: /zookeeper
weight: 100 # default weight for node
timeout: 10 # default 10s
```

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think it's a good idea to put the command and return in the same block of code.

@shuaijinchao
shuaijinchao marked this pull request as ready for review April 1, 2022 09:14
@shuaijinchao

Copy link
Copy Markdown
Member Author

@hf400159 all updated, please review

Comment thread docs/en/latest/discovery/zookeeper.md Outdated
@@ -0,0 +1,144 @@
---
title: nacos

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bad title

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated

Comment thread docs/en/latest/discovery/zookeeper.md Outdated

![APISIX-SEED](../../../assets/images/apisix-seed.png)

`apisix-seed` completes data exchange by watch the changes of `etcd` and `zookeeper` at the same time.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
`apisix-seed` completes data exchange by watch the changes of `etcd` and `zookeeper` at the same time.
`apisix-seed` completes data exchange by watching the changes of `etcd` and `zookeeper` at the same time.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated

Comment thread docs/en/latest/discovery/zookeeper.md Outdated

The process is as follows:

1. `APISIX` registers a route and specifies the service discovery type as `zookeeper` to `etcd`.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not route, it is upstream.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated

Comment thread docs/en/latest/discovery/zookeeper.md Outdated
The process is as follows:

1. `APISIX` registers a route and specifies the service discovery type as `zookeeper` to `etcd`.
2. `apisix-seed` watch the resource changes of `APISIX` in `etcd` and filters the discovery type and obtains the service name.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
2. `apisix-seed` watch the resource changes of `APISIX` in `etcd` and filters the discovery type and obtains the service name.
2. `apisix-seed` watches the resource changes of `APISIX` in `etcd` and filters the discovery type and obtains the service name.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@shuaijinchao shuaijinchao Apr 3, 2022

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@juzhiyuan thx~

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated

@spacewander
spacewander requested a review from juzhiyuan April 2, 2022 02:26
@shuaijinchao
shuaijinchao requested a review from spacewander April 3, 2022 06:21
Comment thread docs/assets/images/apisix-seed.svg Outdated
@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="833px" height="322px" viewBox="-0.5 -0.5 833 322" content="&lt;mxfile host=&quot;Electron&quot; modified=&quot;2022-04-03T05:49:18.486Z&quot; agent=&quot;5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/17.2.4 Chrome/96.0.4664.174 Electron/16.1.0 Safari/537.36&quot; etag=&quot;wXR8hLJQ5RhEoX-8Eujk&quot; version=&quot;17.2.4&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;229I2xH1ZpOIAD6xua3H&quot; name=&quot;第 1 页&quot;&gt;5Vpbc5s4FP41zHQf3EESYPzoOE6b3exMp8lOk7zJIANbQBTkxO6vr2TETWDHFxxnkhcbHV0sne87n46ENTSJll9SnPj/UpeEGtTdpYYuNQjBCCH+JSyr3GKPYG7w0sCVjSrDbfCbSKMurYvAJVmjIaM0ZEHSNDo0jonDGjacpvS52WxOw+avJtgjLcOtg8O29UfgMl+uAg4r+1cSeH7xy8Aa5TURLhrLlWQ+dulzzYSmGpqklLL8KVpOSCicV/gl73e1obacWEpitkuH77/w47Xxz+UUPd7rd3+TH3GEBsXknnC4kCsef7u+vb4f3E6nl3LibFV4I6WL2CViQKChi2c/YOQ2wY6ofeb4c5vPolBWZyylP0uv8fVezGnMrnAUhIIMd9inERbWIAwnNKTp+jeQaxLbNcr+tRobzpBl8Ro5Z5IystzoDVD6mJOT0IiwdMWbyA7IkCuXvASWLD9XKAMkbX4NYVPasCSWVw5d+Z4/SPfvAwVquZu4nIuySFPmU4/GOJxW1osKEJ2XqjY3lCYShv8JYysZWHjBaBMksgzYfe35QQz12ZSly6UceV1YFYWYr7fsJAq1XqJYdVuXin7d8LdpkvtBLH47uNxXdJE6ZJtTC83AqUfYtoawmy4pCTELnpoz6cJ+3XWcpnhVa5DQIGZZbeRvwlCx0EJNFhqmEsNq++Fx7ZFhKjzNZ1yxtlz6EUQGGzTlPHKCiT13uuTEcmwym/cjJyZQgEHnlhNkn1NOKgl5qNW8ICc1BXloCMjbkRO4q5xsoMvOcnIU9obVisChNkWarWs2+E7mKcl8kaKQiMpfU2lyg2c8kWtAi8PAi/mzw71GeAhdiIAJeKY0lhVR4Lo5i0gW/Maz9XgCKKmCfHDzQjMvN0K3MQ5lcieHrFKqOoRbgmBj1A70zzAXxD11vhLaogmdzzPOCBW5PuQUtsCc3k3OlJudRUwRPLeYQqOFQTtsYncsDhwiREKcZYHTdHlTWw/NoXYFrluIS+3tFOKzCKXeTYUa1OYWpA8N24JplsI0oDAoX6jstSXRMmzlODFSBsod0RqoN5EwWwR9pJwoJOFS/X6VApj2W1OKYe9KUUTyHie0nVXiwNSrT6XQd1UK85xKgZCpBPjwMKWAykAIKAOdWCmM484F4MhzwSHXDLr25q8Z7CNJfNprBgDVawNzK0fV9q9zbWC3lHNyc/2BNq83cGfQziJ62rz2uV48dvMCL+hDn3Fv7hr3Z01zoa2mSdZhmxdS0lwIlIFOvXl1ncOskAnWJDhuMNX6tRCvVtbkGWTrjWnMGwCYLPnXmgf6DDs/vTVjB04e5KJJ6s0+QbFP8sXyeerQGFXPpv5XNTZ/8sS3Wd6ufBGXAHpG0qeAMwfqjo9jj2TFLPmq84nm/Tq34vdy97Jhq6vuXnSAmrwcgF7ormRqsNn/dDc1qPfcf38p3C9VOuS6tk/53Dn3h+eUTwONFNUbHSafpj5s6vBry2d7f7dK5fovcTETkkWY475rYRq+JExwNLSawmT0sw+/mhKNWkCD2gsAL8gEWnw9dCEgV7Dmnmang1kcDvPtuJaiFyl2TGOi5OOFaT927J6Gt96RDjvScNChLvBUaXjx14QaerBE74qHp3h54waZQ/nCxUrYKhGBi2O3kXvEOPro4JrKSRZ2nLGg8argtt+Oo67QrGAMhUnktuSJyH3h4wIK9JcBBfarAgpbgBpdgFLxsSg22RLeD43mwIRN7R11oDnsB01erP5sl2+01V8W0fQP&lt;/diagram&gt;&lt;/mxfile&gt;" style="background-color: rgb(255, 255, 255);"><defs><style type="text/css">@import url(https://fonts.googleapis.com/css?family=Nanum+Gothic);&#xa;</style></defs><g><rect x="392" y="1" width="130" height="50" rx="7.5" ry="7.5" fill="#d5e8d4" stroke="#82b366" stroke-width="2" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 26px; margin-left: 393px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">APISIX-SEED</div></div></div></foreignObject><text x="457" y="30" fill="rgb(0, 0, 0)" font-family="Tahoma" font-size="12px" text-anchor="middle">APISIX-SEED</text></switch></g><path d="M 692 296 L 682 296 L 682 291 L 722 291 L 722 186 L 700.24 186" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 694.24 186 L 702.24 182 L 700.24 186 L 702.24 190 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><rect x="562" y="271" width="130" height="50" rx="7.5" ry="7.5" fill="#dae8fc" stroke="#6c8ebf" stroke-width="2" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 296px; margin-left: 563px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">APISIX</div></div></div></foreignObject><text x="627" y="300" fill="rgb(0, 0, 0)" font-family="Tahoma" font-size="12px" text-anchor="middle">APISIX</text></switch></g><path d="M 627 211 L 627 262.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 627 268.76 L 623 260.76 L 627 262.76 L 631 260.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 235px; margin-left: 628px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">7、Refresh memory</div></div></div></foreignObject><text x="628" y="238" fill="rgb(0, 0, 0)" font-family="Tahoma" font-size="11px" text-anchor="middle">7、Refresh memory</text></switch></g><rect x="562" y="161" width="130" height="50" rx="7.5" ry="7.5" fill="#dae8fc" stroke="#6c8ebf" stroke-width="2" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 186px; margin-left: 563px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ETCD</div></div></div></foreignObject><text x="627" y="190" fill="rgb(0, 0, 0)" font-family="Tahoma" font-size="12px" text-anchor="middle">ETCD</text></switch></g><path d="M 627 161 L 527.06 32.5" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 523.37 27.76 L 531.44 31.62 L 527.06 32.5 L 525.13 36.54 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><rect x="210" y="161" width="130" height="50" rx="7.5" ry="7.5" fill="#dae8fc" stroke="#6c8ebf" stroke-width="2" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 186px; margin-left: 211px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Zookeeper</div></div></div></foreignObject><text x="275" y="190" fill="rgb(0, 0, 0)" font-family="Tahoma" font-size="12px" text-anchor="middle">Zookeeper</text></switch></g><path d="M 392 26 L 280.39 154.78" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 276.46 159.31 L 278.68 150.65 L 280.39 154.78 L 284.73 155.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><path d="M 210 296 L 182 296 Q 172 296 172 286 L 172 196 Q 172 186 182 186 L 201.76 186" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 207.76 186 L 199.76 190 L 201.76 186 L 199.76 182 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><rect x="210" y="271" width="130" height="50" rx="7.5" ry="7.5" fill="#dae8fc" stroke="#6c8ebf" stroke-width="2" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 296px; margin-left: 211px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">CLI</div></div></div></foreignObject><text x="275" y="300" fill="rgb(0, 0, 0)" font-family="Tahoma" font-size="12px" text-anchor="middle">CLI</text></switch></g><path d="M 340 186 L 451.61 57.22" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 455.54 52.69 L 453.32 61.35 L 451.61 57.22 L 447.27 56.12 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 133px; margin-left: 404px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><span style="font-size: 12px ; background-color: rgb(248 , 249 , 250)">5、Get service changes</span></div></div></div></foreignObject><text x="404" y="136" fill="rgb(0, 0, 0)" font-family="Tahoma" font-size="11px" text-anchor="middle">5、Get service changes</text></switch></g><path d="M 457 51 L 556.94 179.5" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 560.63 184.24 L 552.56 180.38 L 556.94 179.5 L 558.87 175.46 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 101px; margin-left: 493px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">6、Update etcd</div></div></div></foreignObject><text x="493" y="105" fill="rgb(0, 0, 0)" font-family="Tahoma" font-size="11px" text-anchor="middle">6、Update etcd</text></switch></g><rect x="722" y="211" width="110" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 221px; margin-left: 777px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">1、Register route</div></div></div></foreignObject><text x="777" y="225" fill="rgb(0, 0, 0)" font-family="Tahoma" font-size="12px" text-anchor="middle">1、Register route</text></switch></g><rect x="572" y="71" width="240" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 81px; margin-left: 692px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">2、Fetch discovery type and service name</div></div></div></foreignObject><text x="692" y="85" fill="rgb(0, 0, 0)" font-family="Tahoma" font-size="12px" text-anchor="middle">2、Fetch discovery type and service name</text></switch></g><rect x="152" y="71" width="180" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 81px; margin-left: 242px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">3、Register service listen event</div></div></div></foreignObject><text x="242" y="85" fill="rgb(0, 0, 0)" font-family="Tahoma" font-size="12px" text-anchor="middle">3、Register service listen event</text></switch></g><rect x="0" y="231" width="170" height="20" fill="none" stroke="none" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 241px; margin-left: 85px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: nowrap;">4、Register or update service</div></div></div></foreignObject><text x="85" y="245" fill="rgb(0, 0, 0)" font-family="Tahoma" font-size="12px" text-anchor="middle">4、Register or update service</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some arrows are pointing in the wrong direction, like zookeeper gets service from seed...

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

updated

@shuaijinchao
shuaijinchao requested a review from spacewander April 6, 2022 03:20
Comment thread docs/assets/images/apisix-seed.svg Outdated
@@ -0,0 +1,3 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="686px" height="322px" viewBox="-0.5 -0.5 686 322" content="&lt;mxfile host=&quot;Electron&quot; modified=&quot;2022-04-06T02:22:41.679Z&quot; agent=&quot;5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) draw.io/17.2.4 Chrome/96.0.4664.174 Electron/16.1.0 Safari/537.36&quot; etag=&quot;euXTh_QUrkwchpiIlyS1&quot; version=&quot;17.2.4&quot; type=&quot;device&quot;&gt;&lt;diagram id=&quot;229I2xH1ZpOIAD6xua3H&quot; name=&quot;第 1 页&quot;&gt;7Vpbc5s4FP41zHQf3AEJMH50HKebbnam06TTJG8yyMAGEAXZsffXVwJxEWDHDr5kvPtio6MbR+fTdy62Aifh6kuCYu9v4uBAAaqzUuC1AoCmqSb74pJ1LrFGIBe4ie+IQZXg3v8XC6EqpAvfwak0kBISUD+WhTaJImxTSYaShLzKw+YkkHeNkYtbgnsbBW3pT9+hntACDCv5n9h3vWJnzRzlPSEqBgtNUg855LUmglMFThJCaP4UriY44IdXnEs+72ZDb/liCY7oLhO+/0LPt/pf11P4/Kg+fMU/oxAOipdbomAhNB5/u72/fRzcT6fX4sXpujiNhCwiB/MFNQVevXo+xfcxsnnvK7M/k3k0DER3ShPyUp4a0/dqTiJ6g0I/4GB4QB4JEZf6QTAhAUmyPaBjYMvRy/m1HgvMoGmynrbq4jSWOKF4VROJo/iCSYhpsmZDRC/UheYCl5op2q+VlTUoZF7NwoaQIQEst1y6Onv2II5/H1PA1nFjh2FRNElCPeKSCAXTSnpVGURlrWrMHSGxMMM/mNK1uFhoQYlsJLzy6WPt+Ykv9dkQreuVWDlrrItGxPQtJ/FGbRZvVtOyVjGv2/xtmGw0b0oWiY23nWFBEShxMd02ULAQP+GtcElwgKi/lNmgy/bZ1HGSoHVtQEz8iKa1lb9xQYVCE8oo1I3GHW6OH/YbD3WjgdP8jSvUlqrvBOSX59l0Oban7hrd3MVw/OPZigajFqUowAwoN3WMIgnh5q8Fp78MGYO5gMZY4axkojDOsAAhJwOaw6Up5kOzz2yFNEM5n6+BeFX2zZD94mY3ZWDnbMKHJO7sE9CtbDOmqAr0UfVsqH9Ub8eeXP6tKVOoWKpiad+x66cUJ3wZsqC4UJCdV65jPqHzQt+hGfOR0iVEge9G7NlmgGeLwivOYz5zQmPREfqOk993zHREs2w9rp0AGFvcuFKM63LPFhGWHlJMrvxS/Z5tIaaNTKp+Zs7akGA2EFvud3la6B3JE8h8nrJL3eTZ/RC7lTZaXvA8DhBha253OUDTtvBsfhgHaGgNKoHndoDQOqcDrJzeU63nDQdY83lPkss7mwMEuzpA7dAOsJftdbN1A4c1tp0z3vN4UI1DInY7Ma12m25HBi2QvTMrb7y1A8a2Rj9yPQGdgpYxpw+TM2UTZyFTCM5NpgVKajZ4JuwAcMyjlos1hGZYH80Qw45wuMlfkTPmtQrOVQFKU9+Wj1x2cqXH2iNl29Vo7/VsPTyWuqvHMnb0WDVTG1ss3TM4hVCOebXRUF4i11zM2pKjgcZCUGsslJ9Ma6FDpWtd+LyIdA12pWspTpY+AyRQAy7i+uElB+1FZ3DDt4IKTTc1CYUD/SC3pKS/40cder/0QeuZPrynfqYqH61+Zh2ajI9bP9NAsx4m1bfeHH+SelgR/F8cwepdBEv4xyJ2EK+KVXR7weyaE8+W+piqqXJU2rM8doIMro3Zyd3tfyhv+ADVsIPnDfvnAPu5p/dU0k6RN4APlTfocCQhjSUO78sbDHXYyBvMY+UN3bTXrjCYpUP4UTgATG3nHDTfr15X3L2D1OtGQ/MYoTU4QmDdGb/AQxNRr5L7nr85b4qOG2xwktrF2ShHlaNeAzSc1q6UU/zcXHrJYWOhI5cq9A4kXkQkbZTEecMI05PqFLaHIhenlxJCb6aYrRG0AWQO/UghdKdKbe948PCt13933lXgPTFrgv9Z8wBIbP+0eiGsCVqs6fipTRgxcZTQdczpE0WORKcRCi+mHLGZeLYFpKo1lMkUHuS+NFBeEGAfpmXN6v+x+fDqX8Zw+hs=&lt;/diagram&gt;&lt;/mxfile&gt;" style="background-color: rgb(255, 255, 255);"><defs/><g><rect x="299" y="1" width="130" height="50" rx="7.5" ry="7.5" fill="#d5e8d4" stroke="#82b366" stroke-width="2" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 26px; margin-left: 300px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">APISIX-SEED</div></div></div></foreignObject><text x="364" y="30" fill="rgb(0, 0, 0)" font-family="Tahoma" font-size="12px" text-anchor="middle">APISIX-SEED</text></switch></g><path d="M 599 296 L 589 296 L 589 291 L 629 291 L 629 186 L 607.24 186" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 601.24 186 L 609.24 182 L 607.24 186 L 609.24 190 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 232px; margin-left: 640px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><span style="font-family: &quot;tahoma&quot; ; font-size: 12px ; background-color: rgb(248 , 249 , 250)">1、Register route</span></div></div></div></foreignObject><text x="640" y="235" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">1、Register route</text></switch></g><rect x="469" y="271" width="130" height="50" rx="7.5" ry="7.5" fill="#dae8fc" stroke="#6c8ebf" stroke-width="2" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 296px; margin-left: 470px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">APISIX</div></div></div></foreignObject><text x="534" y="300" fill="rgb(0, 0, 0)" font-family="Tahoma" font-size="12px" text-anchor="middle">APISIX</text></switch></g><path d="M 534 211 L 534 262.76" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 534 268.76 L 530 260.76 L 534 262.76 L 538 260.76 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 235px; margin-left: 535px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">7、Refresh memory</div></div></div></foreignObject><text x="535" y="238" fill="rgb(0, 0, 0)" font-family="Tahoma" font-size="11px" text-anchor="middle">7、Refresh memory</text></switch></g><rect x="469" y="161" width="130" height="50" rx="7.5" ry="7.5" fill="#dae8fc" stroke="#6c8ebf" stroke-width="2" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 186px; margin-left: 470px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">ETCD</div></div></div></foreignObject><text x="534" y="190" fill="rgb(0, 0, 0)" font-family="Tahoma" font-size="12px" text-anchor="middle">ETCD</text></switch></g><rect x="117" y="161" width="130" height="50" rx="7.5" ry="7.5" fill="#dae8fc" stroke="#6c8ebf" stroke-width="2" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 186px; margin-left: 118px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">Zookeeper</div></div></div></foreignObject><text x="182" y="190" fill="rgb(0, 0, 0)" font-family="Tahoma" font-size="12px" text-anchor="middle">Zookeeper</text></switch></g><path d="M 299 26 L 187.39 154.78" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 183.46 159.31 L 185.68 150.65 L 187.39 154.78 L 191.73 155.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 81px; margin-left: 220px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><span style="font-family: &quot;tahoma&quot; ; font-size: 12px ; background-color: rgb(248 , 249 , 250)">3、Register service listen event</span></div></div></div></foreignObject><text x="220" y="85" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">3、Register service listen event</text></switch></g><path d="M 117 296 L 89 296 Q 79 296 79 286 L 79 196 Q 79 186 89 186 L 108.76 186" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 114.76 186 L 106.76 190 L 108.76 186 L 106.76 182 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 241px; margin-left: 79px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><span style="font-family: &quot;tahoma&quot; ; font-size: 12px ; background-color: rgb(248 , 249 , 250)">4、Register or update service</span></div></div></div></foreignObject><text x="79" y="244" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">4、Register or update service</text></switch></g><rect x="117" y="271" width="130" height="50" rx="7.5" ry="7.5" fill="#dae8fc" stroke="#6c8ebf" stroke-width="2" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 128px; height: 1px; padding-top: 296px; margin-left: 118px;"><div data-drawio-colors="color: rgb(0, 0, 0); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 12px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; white-space: normal; overflow-wrap: normal;">CLI</div></div></div></foreignObject><text x="182" y="300" fill="rgb(0, 0, 0)" font-family="Tahoma" font-size="12px" text-anchor="middle">CLI</text></switch></g><path d="M 364 51 L 463.94 179.5" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 467.63 184.24 L 459.56 180.38 L 463.94 179.5 L 465.87 175.46 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 101px; margin-left: 400px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Tahoma; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;">6、Update etcd</div></div></div></foreignObject><text x="400" y="105" fill="rgb(0, 0, 0)" font-family="Tahoma" font-size="11px" text-anchor="middle">6、Update etcd</text></switch></g><path d="M 364 51 L 252.39 179.78" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 248.46 184.31 L 250.68 175.65 L 252.39 179.78 L 256.73 180.88 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 120px; margin-left: 304px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><span style="font-family: &quot;tahoma&quot; ; font-size: 12px ; background-color: rgb(248 , 249 , 250)">5、Fetch service changes</span></div></div></div></foreignObject><text x="304" y="123" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">5、Fetch service changes</text></switch></g><path d="M 429 26 L 528.94 154.5" fill="none" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="stroke"/><path d="M 532.63 159.24 L 524.56 155.38 L 528.94 154.5 L 530.87 150.46 Z" fill="rgb(0, 0, 0)" stroke="rgb(0, 0, 0)" stroke-width="2" stroke-miterlimit="10" pointer-events="all"/><g transform="translate(-0.5 -0.5)"><switch><foreignObject pointer-events="none" width="100%" height="100%" requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility" style="overflow: visible; text-align: left;"><div xmlns="http://www.w3.org/1999/xhtml" style="display: flex; align-items: unsafe center; justify-content: unsafe center; width: 1px; height: 1px; padding-top: 81px; margin-left: 530px;"><div data-drawio-colors="color: rgb(0, 0, 0); background-color: rgb(255, 255, 255); " style="box-sizing: border-box; font-size: 0px; text-align: center;"><div style="display: inline-block; font-size: 11px; font-family: Helvetica; color: rgb(0, 0, 0); line-height: 1.2; pointer-events: all; background-color: rgb(255, 255, 255); white-space: nowrap;"><span style="font-family: &quot;tahoma&quot; ; font-size: 12px ; background-color: rgb(248 , 249 , 250)">2、Fetch discovery type and service name</span></div></div></div></foreignObject><text x="530" y="85" fill="rgb(0, 0, 0)" font-family="Helvetica" font-size="11px" text-anchor="middle">2、Fetch discovery type and service name</text></switch></g></g><switch><g requiredFeatures="http://www.w3.org/TR/SVG11/feature#Extensibility"/><a transform="translate(0,-5)" xlink:href="https://www.diagrams.net/doc/faq/svg-export-text-problems" target="_blank"><text text-anchor="middle" font-size="10px" x="50%" y="100%">Text is not SVG - cannot display</text></a></switch></svg>

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A tiny issue: etcd doesn't refresh memory of APISIX

@shuaijinchao
shuaijinchao requested a review from spacewander April 6, 2022 08:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants