gxthrj opened a new issue #3704: URL: https://github.com/apache/apisix/issues/3704
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? ---------------------------------------------------------------- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. For queries about this service, please contact Infrastructure at: [email protected]
