Hello!

I think that if we move to netty, we should also move GridNioServer-using
code to netty. Let's avoid needing expertise in two socket multiplexing
frameworks.

Regards,
-- 
Ilya Kasnacheev


пн, 19 окт. 2020 г. в 10:52, Ivan Daschinsky <ivanda...@gmail.com>:

> >> Why can't we use GridNioServer for java thin clients?
> Yes, we can. Despite the naming, it can be used as client (set port as -1),
> But doesn't have the same set of advantages as Netty. Netty has a way
> better support (performance) for native transports and SSL, that
> default java NIO.
>
> But API is much, much worse.
>
> If our goal is to keep thin client in core module in any circumstances,
> that this is the only choice.
>
> But lets see, for example, at Lettuce (netty based async redis client) -
> [1]
> 1. It supports reactive streams (additional module)
> 2. It supports kotlin coroutines (additional module)
> I hardly believe, that we could support this in our core module.
>
> Why not to consider separation? Why user of our thin client should have in
> his classpath megabytes of unnecessary bytecode?
>
>
> [1] -- https://lettuce.io/core/release/reference/index.html
>
> пн, 19 окт. 2020 г. в 10:06, Alex Plehanov <plehanov.a...@gmail.com>:
>
> > Pavel,
> >
> > Why can't we use GridNioServer for java thin clients?
> > It has the same advantages as Netty (future based async API, SSL, etc)
> but
> > without extra dependency.
> > GridClient (control.sh), for example, uses GridNioServer for
> communication.
> >
> > сб, 17 окт. 2020 г. в 11:21, Ivan Daschinsky <ivanda...@gmail.com>:
> >
> > > Hi.
> > > >>  Potentially reduced resource usage - share EventLoopGroop across
> all
> > > connections within one IgniteClient.
> > > Not potentially, definitely. Current approach (one receiver thread per
> > > TcpClientChannel and shared FJP for continuation) requires too many
> > > threads.
> > > When TcpClientChannel is the only one, it's ok. But if we use multiple
> > > addresses, things become worse.
> > >
> > > >> The obvious downside is an extra dependency in the core module.
> > > There is another downside -- we should rework our transaction's API a
> > > little bit (Actually,  in netty socket write is performed in other
> thread
> > > (channel.write is async) and
> > > current tx logic will not work
> > > (org.apache.ignite.internal.client.thin.TcpClientCache#writeCacheInfo))
> > >
> > > A little bit of offtopic.
> > > I suppose, that the java thin client (and other thin clients) should be
> > > separated from the main ignite repo and have a separate release cycle.
> > > For example, java thin client depends on default binary
> > > protocol's implementation, that is notorious for heavy usage of
> internal
> > > JDK api and this for example.
> > > prevents usage of our thin client in graalvm native image.
> > >
> > >
> > > пт, 16 окт. 2020 г. в 20:00, Pavel Tupitsyn <ptupit...@apache.org>:
> > >
> > > > Igniters,
> > > >
> > > > I'm working on IEP-51 [1] to make Java thin client truly async
> > > > and make sure user threads are never blocked
> > > > (right now socket writes are performed from user threads).
> > > >
> > > > I've investigated potential approaches and came to the conclusion
> > > > that Netty [2] is our best bet.
> > > > - Nice Future-based async API => will greatly reduce our code
> > complexity
> > > >   and remove manual thread management
> > > > - Potentially reduced resource usage - share EventLoopGroop across
> all
> > > > connections within one IgniteClient
> > > > - SSL is easy to use
> > > > - Proven performance and reliability
> > > >
> > > > Other approaches, like AsynchronousSocketChannel or selectors, seem
> to
> > be
> > > > too complicated,
> > > > especially when SSL comes into play.
> > > > We should focus on Ignite-specific work instead of spending time on
> > > > reinventing async IO.
> > > >
> > > > The obvious downside is an extra dependency in the core module.
> > > > However, I heard some discussions about using Netty for GridNioServer
> > in
> > > > future.
> > > >
> > > > Let me know your thoughts.
> > > >
> > > > Pavel
> > > >
> > > > [1]
> > > >
> > > >
> > >
> >
> https://cwiki.apache.org/confluence/display/IGNITE/IEP-51%3A+Java+Thin+Client+Async+API
> > > > [2] https://netty.io
> > > >
> > >
> > >
> > > --
> > > Sincerely yours, Ivan Daschinskiy
> > >
> >
>
>
> --
> Sincerely yours, Ivan Daschinskiy
>

Reply via email to