We are using ES 5.2 with XPack and Java client. I am curious to know the following points:
Essentially, my cluster consist of 3 Coordinator/3 Master and 6 Data Nodes. Our client specifies IP/Port of all Coordinator nodes to connect.
a. What happens when I initialize the client with PreBuiltXPackTransportClient constructor by supplying Settings,PLUGINS and a hostfailure listener?
b. What happens when I invoke addTransportAddress(new InetSocketTransportAddress constructor) by supplying IP/Port of Co-ordinator nodes.
c. Does it mean Client creates a netty connection/channel to all Coordinator nodes?
d. Internally if sniffing is enabled all the data nodes,master nodes is available to the client. Client does not connect/create a channel to coordinator but forward all request directly to data node.. Is this understanding correct?
e. Does client ever communicate with Data nodes directly bypassing Co-ordinator nodes?
f. Does client maintain a thread pool which queues up different ES operations being invoked from multiple threads using the same client? If yes what is the queue size at the client.
g. Can I create client object connection pool and shuffle across client objects in the same application? How much of that will be an overhead ?
What is understood from the ES5.2 documentation is that client does not bind to the address specified but just connect. Sniffing enables getting all Master/Data nodes information being available at Client.
However Since its Transport Client we are assuming it must be creating Netty Channel.
Guidance will be really helpful.