[tarantool-patches] Re: [PATCH v2] iproto: introduce a proxy module.

Konstantin Osipov kostja at tarantool.org
Tue Oct 16 21:35:16 MSK 2018

* Vladimir Davydov <vdavydov.dev at gmail.com> [18/10/08 13:54]:
> On Tue, Oct 02, 2018 at 09:05:54PM +0300, Serge Petrenko wrote:
> > By default, upon new client connection, all requests from the client are
> > forwarded through "guest" connection. Upon recieving an AUTH request,
> > proxy processes it on a local instance (this can be done, since proxy is
> > being run on one of the cluster instances and has access to user data).
> > If auth is successful, new client requests are forwarded through
> > corresponding user connection, otherwise, proxy keeps forwarding request
> > through guest connection.
> Before diving in the code, I'd like to inquire why you think that a
> proxy should forward all user connections with the same credentials
> through a single connection to the master. AFAIU this complicates the
> implementation quite a bit and may negatively affect performance as
> this design implies joggling with sync sequences.
> What if the user deliberately created several connections so as to
> avoid throttling certain transactions on hitting the network buffer
> limit? I don't think that it's right to push all requests through
> the same queue then.

It's a good question and we need to bench it.

Generally using fewer sockets to marshal requests is cheaper on
the server side, since it has to perform fewer syscalls to read
data from network.

But it depends on the actual load. For example, if all your
clients are already multiplexing requests, you're simply
performing useless work. But if your typical client is
"simple,stupid", e.g. request/response style, then you're
saving quite a bit of server CPU time. This can be easily  
seen in a  nosqlbench test.

I'd say a typical client is simple, stupid, so multiplexing for it is
useful. If you want to be real smart, you could turn multiplexing
on/off depending on request/response rate (turn it off for highly
loaded connections). But that's an optimization, as a general rule
the proxy has to do multiplexing.

Konstantin Osipov, Moscow, Russia, +7 903 626 22 32
http://tarantool.io - www.twitter.com/kostja_osipov

More information about the Tarantool-patches mailing list