You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
« Previous
Version 8
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: no dependencies, relatively easy to use, supports SSL
- Cons: not future proof?
- Perform writes in a separate thread (use dedicated thread or ForkJoinPool.commonPool)
- Pros: no dependencies
- Cons: more manual thread management - hard to get right and fast
- AsynchronousSocketChannel
- Netty
- Pros:
- Greatly reduces complexity - returns ChannelFuture, which can be easily converted to IgniteClientFuture. Manual thread management goes away.
- We can share one EventLoopGroop across all TcpClientChannel instances within ReliableChannel and reduce resource usage when partition awareness is enabled
- Proven performance
- Cons:
- New dependency in core module
Discussion Links
Dev List:
Tickets
Unable to render Jira issues macro, execution error.