Hi Jörg,
On Saturday, September 22, 2012 2:12:23 PM UTC-4, Jörg Prante wrote:
Hi Otis,
the disadvantages of HTTP are known well, see Simon Spero
Analysis of HTTP Performance Problems (18 years old) and the
recent activity in developing HTTP 2.0 (SPDY).
The REST client works over HTTP by using Netty, which mean it scales well
(asynchronous I/O where possible). A REST client has to marshal/unmarshal
over HTTP which is common to all Java applications (see
XContentRestResponse). The REST client talks to one server only.
But the client could:
A) be given more than 1 ES node address
B) be smart enough to ask ES about other nodes via (a new?) REST API
Right?
The TransportClient can select network interface for node discovery (which
is different from a node client). It uses also Netty but without the
overhead of HTTP headers. ES uses binary stream marshalling/unmarshalling
which is more compact and faster than HTTP. And, the TransportClient pings
the ES cluster automatically for new nodes or nodes that had gone away. It
can fail over automatically.
Right, so we have HTTP plain text JSON, maybe compressed, but with HTTP
headers vs. ES binary protocol (which is just some Netty's binary com
protocol?)
So the diff here is the compactness of the request/response and work needed
for unpacking/reading them?
Re pinging so client can know about multiple nodes for failover purposes,
would what I wrote as A and B above work?
Each client can use compression (Netty can handle it), I don't know about
the difference. ES offers additional compression algorithms which may help
in certain situations.
Do these additional compression algorithms (have a pointer by any chance?)
apply to TransportClient only? If not, then this would not be a
difference/advantage of TC-based communication.
It is important to consider both bulk indexing and large query results in
concurrency scenarios.
Right.
Thanks,
Otis
Search Analytics - Cloud Monitoring Tools & Services | Sematext
Performance Monitoring - Sematext Monitoring | Infrastructure Monitoring Service
On Saturday, September 22, 2012 5:00:16 AM UTC+2, Otis Gospodnetic wrote:
Hello,
What exactly is the advantage of using TransportClient to talk to ES
versus talking via HTTP?
Is there anything that cannot be done via HTTP that can be done using TC?
Is there a known and significant performance difference (even is
keepalives are used, and chunking is not used)?
Thanks,
Otis
Search Analytics - Cloud Monitoring Tools & Services | Sematext
Performance Monitoring - Sematext Monitoring | Infrastructure Monitoring Service
--