Details
Description
.NET Thin Client was initially developed for Windows and .NET Framework. Benchmarks at that time proved that blocking socket IO was faster for single-threaded workload, and we developed a solution with a dedicated thread for response handling, and async APIs use blocking writes.
We may want to reconsider this design:
- Scalability is often more important than single-threaded performance
- .NET Core has many perf improvements over .NET Framework
Investigate async socket IO performance on .NET Core 3.x/5.x compared to the current approach on Windows and Linux and refactor ClientSocket accordingly to avoid any blocking and a dedicated thread usage.
UPDATE: Non-blocking async IO is implemented in Ignite 3.x .NET thin client, use it as a reference: https://github.com/apache/ignite-3/blob/main/modules/platforms/dotnet/Apache.Ignite/Internal/ClientSocket.cs
Attachments
Issue Links
- is related to
-
IGNITE-13496 Java thin: Use non-blocking socket IO
- Resolved