-
Notifications
You must be signed in to change notification settings - Fork 26.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Proposal]Metadata(URL) problems and possible solutions #2030
Comments
|
Remove some unused info and use compression maybe better. |
I tend to choose the Dubbo framework itself to decide which attribute should be added to Registry, no need to be an option for users.
Compression is a good idea. Maybe we can try simplification first, then see if we need compression. |
Config Center is not necessary in Dubbo, sometime I want to directly connect to the provider. |
As for many company use config center. I think it can be an option for user |
We need to keep compatibility with current Overrides policies. I listed 'Apollo', 'Archaius', 'Diamond' above, but Zookeeper can still be an option for configuration, Archaius itself also doesn't need too much effort to deploy. So it's not mandatory to deploy a Config Center. Besides, Config Center seems to be a common system for a Microservice architecture, users usually don't need to deploy it for Dubbo purpose, it is usually already there. What do you think now, @carryxyh ? |
@chickenlj |
hi, I think chose URL as the carrier for Dubbo is ingenious, and the goal you descripted here is keep Registry clean. but I have some questions:
|
@carryxyh make a abstract composite for integration with different config centers, and then every contributor will be PR a specified one. |
@kimmking |
The Registry URL for dubbo may contanins many information. I simply divided into several categories: 1.Service registration
2.Service configWe can use configuration in provider side to give a suggestion behavior of the remote call.
3.Provider Config
4.Feature depends on registry
5.Runtimemethods, timstamp, dubbo, pid, revision, side... I think we may retain the Service registration and Feature depends on registry in registry URL. And finally, there will also be many keys |
Parameters need to transfer to RegistryThe URL for provider parameters comes from:
ApplicationConfigapplication(name) need to transfer. ModuleConfigModule info may not need to transfer to registry. ProviderConfigProviderConfig ‘ keys are subsets of keys in ServiceConfig and ProtocolConfig, And It's ProtocolConfig
ServiceConfig
MethodConfig&ArgumentConfigMethod & Argument Config should not transfer to registry. Use configurators instead. All transfer to Consumer side othersothers: side/dubbo/timestamp/pid/generic/methods/revision/default/notify/dynamic the TranferKeys
Parameters to search center
|
Hello, community
We have previously roughly discussed the problems with Dubbo's metadata in GitHub issues and mailing list, here when saying metadata I mainly refer to URL in Dubbo. Now I think it's time to bring the discussion onto the table and consider solving it. Below is the proposal I've drafted:
Problems
URL works as the carrier for Dubbo internal data transfer at runtime, and is also works as a protocol integrating with the external system: registration center, service query, service management, etc., resulting in serious coupling between the configuration and the registration center, and the data load pushed by the registration center is too large.
Targets
Solutions
Here is a typical URL in Registry:
We can see this URL showed here is really long and redundant, here are my suggestions to refactor it step by step:
For example:
For example:
Typical Override protocol to change timeout value at runtime:
We can instead integrate with thirdparty Config Center to do that, like Apollo, Archaius, Diamond and so on, these systems are more likely to be used in a miscroservice architecture.
Furthermore, we can also consider separate the routing rule config from Registry and switch to Config Center, using Config Center to dynamically add new group policies that can group service instances into different groups according to environments.
Kindly ask for your suggestions, don't hesitate to let us know if you have any different ideas.
The text was updated successfully, but these errors were encountered: