Add design doc for dynamic config (#23115)

Signed-off-by: Enwei Jiao <enwei.jiao@zilliz.com>
pull/23133/head
Enwei Jiao 2023-03-30 08:48:21 +08:00 committed by GitHub
parent 50dab2d394
commit 66f50fd354
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 56 additions and 5 deletions

View File

@ -1,10 +1,9 @@
# MEP(Milvus Enhancement Proposals) Templates
Current state: [One of "Under Discussion", "Accepted", "Rejected"]
ISSUE: link to the GitHub issue
PRs: link to the GitHub PRs
Keywords: list keywords about this MEP
Released: <Milvus Release Version>
@ -26,12 +25,12 @@ Briefly list any new interfaces that will be introduced as part of this proposal
Describe the new thing you want to do in appropriate detail. This may be fairly extensive and have large subsections of its own. Or it may be a few sentences. Use judgment based on the scope of the change.
## Compatibility, Deprecation, and Migration Plan(optional)
- What impact (if any) will there be on existing users?
- If we are changing behaviors how will we phase out the older behavior?
- If we need special migration tools, describe them here.
- When will we remove the existing behavior?
## Test Plan(required)
Describe in a few sentences how the MEP will be tested. We are mostly interested in system tests (since unit tests are specific to implementation details). How will we know that the implementation works as expected? How will we know nothing broke?
@ -43,5 +42,3 @@ If there are alternative ways of accomplishing the same thing, what were they? T
## References(optional)
Briefly list all references

View File

@ -0,0 +1,54 @@
# MEP: Dynamic Configuration
Current state: "Accepted"
ISSUE: https://github.com/milvus-io/milvus/issues/18300
Keywords: config etcd
Released: 2.3.0
## Summary(required)
At present, there are numerous configurations in Milvus that require a restart of Milvus to take effect. This can interrupt service in production environments and is not friendly to operations and maintenance. In this MEP, a solution for dynamically updating configurations will be provided so that users can make configuration changes without restarting the cluster.
## Motivation(required)
Ability to dynamically modify configurations and expose current configuration information through API, simplifying operational complexity.
## Public Interfaces(optional)
No new public interfaces changed.
## Design Details(required)
### Goal
1. Support multiple config sources, including Etcd, environment variables, and configuration files. On this basis, add watch events for changes in the Etcd config path and file changes. When a change event occurs, broadcast it to subscribers through an event handler. Subscribers can decide on subsequent logic based on this to achieve the requirement of dynamically modifying configurations.
2. Configuration priority: Etcd > Environment > milvus.yaml; higher-priority configurations override lower-priority ones. Even if a higher-priority configuration is deleted, lower-priority configurations can still be used.
3. To ensure compatibility, ignore case sensitivity and characters such as / . \_ when dealing with configuration item keys.
![flowchart](graphs/dynamic_config_flowchart.jpg)
ref: https://github.com/go-chassis/go-archaius/
No-Goal (Not in this release plan)
1. Configuration grading
1. Node override config
1. Collection override config
1. Support for more cloud configs such as Consul, Zookeeper, etc.
## Compatibility, Deprecation, and Migration Plan(optional)
Compatible with old versions.
## Test Plan(required)
- Verify the ability to dynamically modify configurations in etcd.
- Verify the ability of helm and operator to deploy milvus.yaml and modify configurations.
- Verify the effectiveness of business operations after partially modifying dynamic configurations.
- Verify version compatibility under dynamic configuration.
## Rejected Alternatives(optional)
## References(optional)

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB