Thank you Piotr for bringing this discussion to the mailing list! As it was not 
explicitly mentioned in the first email, I wanted to add that there is also 
already an open PR[1] with my implementation of the basic plugin mechanism for 
FileSystem. Looking forward to some feedback from the community.


[1] https://github.com/apache/flink/pull/8038 
<https://github.com/apache/flink/pull/8038>

Best,
Stefan

> On 10. Apr 2019, at 17:08, zhijiang <wangzhijiang...@aliyun.com.INVALID> 
> wrote:
> 
> Thanks Piotr for proposing this new feature.
> 
> The solution for class loader issue is really helpful in production, and we 
> ofen encountered this pain point before.
> It might bring more possibilities based on this pluggable mechanism.  Hope to 
> see the progress soon. :)
> 
> Best,
> Zhijiang
> ------------------------------------------------------------------
> From:Jeff Zhang <zjf...@gmail.com>
> Send Time:2019年4月10日(星期三) 22:01
> To:dev <dev@flink.apache.org>
> Subject:Re: Introducing Flink's Plugin mechanism
> 
> Thank Piotr for driving this plugin mechanism.  Pluggability is pretty
> important for the ecosystem of flink.
> 
> Piotr Nowojski <pi...@ververica.com> 于2019年4月10日周三 下午5:48写道:
> 
>> Hi Flink developers,
>> 
>> I would like to introduce a new plugin loading mechanism that we are
>> working on right now [1]. The idea is quite simple: isolate services in
>> separate independent class loaders, so that classes and dependencies do not
>> leak between them and/or Flink runtime itself. Currently we have quite some
>> problems with dependency convergence in multiple places. Some of them we
>> are solving by shading (built in file systems, metrics), some we are
>> forcing users to deal with them (custom file systems/metrics) and others we
>> do not solve (connectors - we do not support using different Kafka versions
>> in the same job/SQL). With proper plugins, that are loaded in independent
>> class loaders, those issues could be solved in a generic way.
>> 
>> Current scope of implementation targets only file systems, without a
>> centralised Plugin architecture and with Plugins that are only “statically”
>> initialised at the TaskManager and JobManager start up. More or less we are
>> just replacing the way how FileSystem’s implementations are discovered &
>> loaded.
>> 
>> In the future this idea could be extended to different modules, like
>> metric reporters, connectors, functions/data types (especially in SQL),
>> state backends, internal storage or other future efforts. Some of those
>> would be easier than others: the metric reporters would require some
>> smaller refactor, while connectors would require some bigger API design
>> discussions, which I would like to avoid at the moment. Nevertheless I
>> wanted to reach out with this idea so if some other potential use cases pop
>> up in the future, more people will be aware.
>> 
>> Piotr Nowojski
>> 
>> 
>> [1] https://issues.apache.org/jira/browse/FLINK-11952 <
>> https://issues.apache.org/jira/browse/FLINK-11952>
> 
> 
> 
> -- 
> Best Regards
> 
> Jeff Zhang
> 

Reply via email to