ruanwenjun opened a new issue, #15960: URL: https://github.com/apache/dolphinscheduler/issues/15960
### Search before asking - [X] I had searched in the [DSIP](https://github.com/apache/dolphinscheduler/issues/14102) and found no similar DSIP. ### Motivation In the previous binary package, the plugins are put at server/libs. ``` - dolphinscheduler-bin - api-server - bin - conf - libs - master-server - bin - conf - libs - worker-server - bin - conf - libs - alert-server - bin - conf - libs ``` This will bring below problems: - Multiple copies of the plugin exist within different services, cause the binary package is very big. - Multiple copies of the plugin exist within different services, cause if we want to replace a plugin we need to replace it at different service. - It's difficult to support different version plugins, e.g. hive2, hive3 ### Design Detail Firstly, we need to add a plugin directory, the binary package will be ``` - dolphinscheduler-bin - api-server - master-server - alert-server - worker-server - plugins - task-plugin - alert-plugin - storage-plugin - registry-plugin - xx ``` Then we need to shade the plugins and put them in target plugins. The server should only rely on `plugin-api`, cannot rely on plugins, and use child first classloader to load plugins, each plugin will have a classloader. ### Compatibility, Deprecation, and Migration Plan Compatibility with the previous version ### Test Plan Test by manual/e2e/UT ### Code of Conduct - [X] I agree to follow this project's [Code of Conduct](https://www.apache.org/foundation/policies/conduct) -- 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. To unsubscribe, e-mail: [email protected] For queries about this service, please contact Infrastructure at: [email protected]
