You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
« Previous
Version 9
Next »
ID | IEP-51 |
Author | |
Sponsor | |
Created | |
Status | |
Motivation
Do not block user threads when performing async thin client operations.
IEP-51 introduced async API to the Java thin client, but socket writes are still performed on the user thread and are potentially blocking.
Description
Potential approaches to this are:
- GridNioServer
- Pros:
- Easy to use, provides Future-based API
- No extra dependencies
- Supports multiplexing (shared worker thread group across multiple connections)
- Cons:
- Possibly not future proof - Ignite 3.0 may change how GridNioServer works and/or switch to Netty
- Netty
- Pros:
- Easy to use, provides Future-based API
- Supports multiplexing (shared worker thread group (EventLoopGroup) across multiple connections)
- Proven performance
- Cons:
- New dependency in core module
- Perform writes in a separate thread (use dedicated thread or ForkJoinPool.commonPool)
- Pros:
- Cons:
- Increased resource usage,
- More manual thread management - hard to get right and fast
- AsynchronousSocketChannel
- Pros:
- Native Java API, no dependencies
- Cons:
As a result of dev list discussions (see links below), it is decided to use GridNioServer.
Discussion Links
Dev List:
Tickets
Unable to render Jira issues macro, execution error.