I prefer Plan A too.







--

Yi Yang(Sion)
Apache ShardingSphere



At 2020-01-03 00:13:07, "zhangli...@apache.org" <zhangli...@apache.org> wrote:
>I have 2 ideas for the pluggable platform.
>
>Plan A:
>
>Design a unify DataSource to process all rules, it should be a transparent
>DataSource if no rule provided (but it should be valid). We can name it as
>`ShardingSphereDataSource`.
>There are lots of hooks in `ShardingSphereDataSource`, such as:
>  - route hook: for sharding, master-slave and shadow;
>  - SQL rewrite hook: for sharding, encrypt and shadow;
>  - execution hook: for sharding and transaction;
>  - merge hook: for sharding and encrypt;
>  - init hook: for orchestration;
>  - config refresh hook: for orchestration;
>
>The hook should load feature implementations via SPI and appended
>by pluggable platform automatically. (SPI should design the process order)
>
>Advantage:
>  - Only one API for `ShardingSphereDataSource` which should not confuse
>the users;
>  - Process logics internally, pretty high performance for this solution;
>  - Can be reused for Proxy.
>
>Disadvantage:
>  - Difficult for developers, they need to know every hooks.
>
>Plan B:
>
>Provide independent DataSources, every DataSources process oneself only.
>And we may have lots of DataSource, such as ShardingDataSource,
>MasterSlaveDataSource, EncryptDataSource, ShadowDataSource,
>TransactionDataSource, OrchestrationDataSource and so on.
>Every DataSources should composite by users themselves, ShardingSphere can
>privide a Facade class to simplify the usage.
>
>Advantage:
>  - Isolation by design level, every DataSource has clear and simple
>responsibility;
>  - Simple for developer, they need to know independent logic for one
>DataSource only, do not need expose internal implementations.
>
>Disadvantage:
>  - Can not reuse by Proxy;
>  - Difficult for user to find every possible combination of DataSource;
>  - Hide the internal implementation may cause low performance;
>
>By the way, I just discuss about how to design Proxy for Plan B. It should
>be every features have a independent proxy process (may consider about put
>them into one process in future).
>ShardingProxy visit EncryptProxy, and EncryptProxy visit ShadowProxy,
>the performance should not enough.
>
>Conclusion:
>Even the Plan B has better design, but I worry about the performance and
>the difficulty for user. So I prefer Plan A for now.
>
>------------------
>
>Liang Zhang (John)
>Apache ShardingSphere & Dubbo
>
>
>guangyuan wang <wangguangy...@apache.org> 于2019年12月11日周三 下午2:21写道:
>
>> +1 It sounds great.
>> And is the platform suitable for JDTX? And Sharding may not be a necessary
>> function, maybe transaction will be more widely used. So, will JDTX will be
>> a plugin which is easily used in the platform?
>>
>> Zonglei Dong <dzllike...@163.com> 于2019年12月9日周一 下午9:24写道:
>>
>> > +1, That sounds great!
>> >
>> >
>> > For a pluggable platform, contributors will be very convenient to
>> > contribute code, This will attract more people.
>> >
>> >
>> > Zonglei Dong
>> > Apache ShardingSphere
>> >
>> >
>> > On 12/9/2019 19:13,sunbufu<sunb...@apache.org> wrote:
>> > +1
>> >
>> >
>> > Good idea. It’s a good long-term planning for ShardingSphere.
>> >
>> >
>> > —————————
>> > Haisheng Sun (sunbufu)
>> > Apache ShardingSphere
>> >
>> >
>> > On 12/9/2019 18:43,Juan Pan<panj...@apache.org> wrote:
>> > Agree with Liang,
>> >
>> >
>> > Maybe there is no feature benefit apparently, however we make its
>> > architecture become…a structured plaza with many rooms. Consequently,
>> more
>> > contributors could fill in specific implements for those rooms with less
>> > harms to this plaza, i.e our project. Oh, i have a great imagination,
>> don’t
>> > you think so? :)
>> >
>> >
>> > Regards,
>> > Trista
>> >
>> >
>> > Juan Pan
>> >
>> >
>> > panj...@apache.org
>> > Juan Pan(Trista), Apache ShardingSphere
>> >
>> >
>> > On 12/9/2019 14:13,Nicholas<thanosxnicho...@gmail.com> wrote:
>> > Hi guys,
>> > What features will be planned in pluggable platform? And how to assign
>> > features splits from sharding-core? Based on user concept,what does user
>> > benefit from this pluggable platform?
>> >
>> > Thanks,
>> > Nicholas Jiang
>> >
>> > On 2019/12/09 05:29:47, "zhangli...@apache.org" <zhangli...@apache.org>
>> > wrote:
>> > Hi, ShardingSphere community,
>> >
>> > More and more features are added into ShardingSphere now, as you know,
>> the
>> > scope of ShardingSphere is no longer for sharding only.
>> > There are more and more features related with sharding, such as
>> distributed
>> > transaction, distributed orchestration, observability and so on; and
>> there
>> > are couple of features did not relate with sharding obviously, for
>> example:
>> > encrypt, shadow data source, SQL audit and so on.
>> >
>> > I'd like to discuss about establishing a pluggable platform of
>> > ShardingSphere. The proposal of pluggable platform is decoupling all
>> > features and technical implementations, the benefits are:
>> >
>> > 1. Flexible for add new feature.
>> > 2. Reduce the negative effects if problem occur on one feature.
>> > 3. Provide a platform to make more contributors work together without
>> > interact on each other.
>> >
>> > I plan split all features from sharding-core first, and then use SPI to
>> > introduce features into the pluggable platform(same thing with sharding,
>> > sharding can be remove from main process too).
>> >
>> > The pluggable platform is a blank JDBC and database protocol finally,
>> and
>> > provide assist technical features such as SQL parser and SQL rewrite.
>> >
>> > Any advice?
>> >
>> > ------------------
>> >
>> > Liang Zhang (John)
>> > Apache ShardingSphere & Dubbo
>> >
>> >
>>

Reply via email to