I also created a discuss issue here:
https://github.com/apache/apisix/issues/3704

wei jin <[email protected]> 于2021年3月1日周一 上午11:45写道:

> Currently APISIX contains many objects, route/service/upstream/plugin, and
> they are related by ID.
> Although using ID to manager relations between objects is easy to
> understand and can accomplish most things, but I think the way of ID is not
> a final solution, we should use the form of label-selector to associate
> objects.
>
> There are two reasons:
>
> 1. Using ID means adding a relationship, or an object will need to add a
> xxx_id field to other existed objects, such as service_id, upstream_id, or
> other id in route. If it is a many-to-many relationship, you also need a
> xxx_ids, or a template_id, and then encapsulate multiple ids in the
> template, such as plugin_config_id in route.
>
> 2. Service deployment and some batch processing (such as multi-cluster
> replication) is a multi-dimensional structure, for example, multiple
> clusters, multiple partitions, multiple issuance sequences, application
> hierarchical management and other practical situations, especially due to
> infrastructure rather than The multi-dimensional structure caused by the
> logical division of users. We cannot use id to pass in the
> multi-dimensional structure, resulting in the configuration cannot be
> passed and reused.
>
> Of course, using label-selector to organize object relationships brings
> some benefits, but it also increases the complexity of the implementation.
> For example, when a label is modified or the selection condition of a
> selector is modified, the corresponding object needs to be notified. Of
> course, this can also be implemented in other life cycles, such as query or
> timing operations.
> What do you think?
>

Reply via email to