Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(zookeeper): support zookeeper service discovery #6751

Merged

Conversation

shuaijinchao
Copy link
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 on lines 39 to 40
$ git clone https://github.com/api7/apisix-seed.git
$ go build
Copy link
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

2. Start the Zookeeper service

```bash
$ docker run -itd --rm --name=dev-zookeeper -p 2181:2181 zookeeper:3.7.0
Copy link
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


### How apisix-seed works

![APISIX-SEED](../../../assets/images/apisix-seed.png)
Copy link
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
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
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

3. Start `apisix-seed` to monitor service changes

```bash
$ ./apisix-seed
Copy link
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

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
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 '

}'
```

### Register service and verify request
Copy link
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
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.

1. Service registration using Zookeeper CLI

```bash
$ docker exec -it ${ContainerID} /bin/bash
Copy link
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
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
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
Member Author

@hf400159 all updated, please review

@@ -0,0 +1,144 @@
---
title: nacos
Copy link
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
Member Author

Choose a reason for hiding this comment

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

updated


![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
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
Member Author

Choose a reason for hiding this comment

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

updated


The process is as follows:

1. `APISIX` registers a route and specifies the service discovery type as `zookeeper` to `etcd`.
Copy link
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
Member Author

Choose a reason for hiding this comment

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

updated

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
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
Member

Choose a reason for hiding this comment

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

Hi @shuaijinchao, to avoid typos, we could use https://www.grammarly.com/ to check our content :)

Copy link
Member Author

@shuaijinchao shuaijinchao Apr 3, 2022

Choose a reason for hiding this comment

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

@juzhiyuan thx~

Copy link
Member Author

Choose a reason for hiding this comment

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

updated

@@ -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
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
Member Author

Choose a reason for hiding this comment

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

updated

@@ -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
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

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