# Background
At present, the connection between the Manager API and etcd still follows
the habit of the etcd v2 version, creating a watch connection for each
resource, which will generate a large number of connections.

# Purpose
Reduce connections between Manager API and etcd, to reduce the load on etcd
services.

# Proposal
In the `Generic Store`, each resource still manages its own cache
separately, but no longer connects directly to etcd. Added a unified method
of listing full data and watching changes, and the obtained data is
uniformly distributed to the Store instances of each resource.
After optimization, the workflow of `Generic Store` initialization is as
follows:
1. Create a resource prefix mapping table
2. Initialize each resource Store object and register itself in the
resource prefix mapping table
3. Read the full amount of data, find the corresponding resource according
to the key prefix, and distribute the data to the Store object of each
resource
4. Watch the etcd prefix configured in `conf.yaml`, when obtaining the
changed data, find the corresponding resource according to the key prefix,
and distribute the data to the Store object of the resource.

# Further action
Reduce connections between Apache APISIX and etcd (a new proposal is needed)

I also drew a flow chart of the comparison before and after optimization in
the issue. Welcome to view it and discuss in the issue[1].

Thanks!


[1] https://github.com/apache/apisix-dashboard/issues/2396

Reply via email to