Alexey, Yes, I've got almost the same performance (the difference is about 1%). I think proxy creation has a relatively low cost compared to 2-4 network hops required to invoke the service method.
More precisely: First approach: create a service proxy on server-side each time, when a service method is invoked by thin client (on each OP_SERVICE_INVOKE request). Second approach: create a service proxy by request (OP_SERVICE_GET_PROXY), store it on server-side in resource map (ConcurrentHashMap), get it from resource map each time when a service method is invoked (OP_SERVICE_INVOKE) Only OP_SERVICE_INVOKE was used for benchmarking (OP_SERVICE_GET_PROXY was used during the warmup phase) Here are GitHub links to PoC implementations for both approaches ([1], [2]). Benchmark class: org.apache.ignite.yardstick.thin.service.IgniteThinServiceInvocationBenchmark [1]: https://github.com/alex-plekhanov/ignite/tree/ignite-13033-bench-a1 [2]: https://github.com/alex-plekhanov/ignite/tree/ignite-13033-bench-a2 вт, 2 июн. 2020 г. в 17:16, Alexey Goncharuk <alexey.goncha...@gmail.com>: > Alexey, > > Hello, > > > > I've benchmarked 1-operation approach vs 2-operations approach and > > published benchmark results on IEP page [1]. It looks like performance > > almost the same, so the single-operation approach should be implemented. > > > Do I understand correctly that you suggest to remote > the OP_SERVICE_GET_PROXY request altogether given that the performance is > the same? > > > > One more question: do we need some parameter on the server-side to > disable > > service invocations by thin client? Do we need to disable it by default? > > I think the parameter will be useful, but I'm not sure about default > value. > > What do you think? > > > I do not think we need an additional flag for this, my thought is that it > should be ruled by appropriate security permissions. >