nic-chen commented on issue #2700:
URL: https://github.com/apache/apisix/issues/2700#issuecomment-725804599


   > > > > I think the main logic should be:
   > > > > When APISIX starts, read the key `/apisix/jsonschema` of ETCD.
   > > > > If the key does not exist or is empty, then read the JSON schema 
from APISIX and save to the ETCD key `/apisix/jsonschema`.
   > > > > If the key already exists and is not empty, nothing will be done.
   > > > > APISIX provides a command line tool that can be used to manually 
update the JSON schema, like: `apisix sync-schema`,
   > > > > users can use this tool to update JSON schema when needed.
   > > > > What do you think ?
   > > > > cc @membphis @moonming @liuxiran @dabue @tokers @ShiningRush
   > > > 
   > > > 
   > > > So all schemas are put inside a single JSON string here?
   > > > BTW, have you consider the grayscale of APISIX itself? If the new 
version of APISIX has some incompatible changes for some schemas, once the 
schema is synced, all instances which shares the same ETCD cluster will be 
effected. So maybe versioning or other way like naming isolation is required.
   > > 
   > > 
   > > Thanks for suggestion, that's really helpful.
   > > So we could use key like `/apisix/jsonschema/$schemaversion` for 
isolation.
   > > And I think we need to manually maintain the schema version in both 
APISIX and `manager api`.
   > > what do you think ?
   > 
   > What about using a separate key for each schema? just use 
`/apisix/jsonschema/` as the prefix, like other resources?
   > 
   > ```
   > /apisix/jsonschema/route
   > /apisix/jsonschema/upstream
   > /apisix/jsonschema/plugin/echo
   > ```
   > 
   > I am not sure whether the versioning is a good way to solve this, because 
APISIX should remember each schema's version that it needs.
   
   I think separating them will increase the complexity, especially the version 
issue.
   
   
   


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


Reply via email to