问题
让我们带着问题去学习,效率会更高
1 es集群只配置一个节点,client是否能够自动发现集群中的所有节点?是如何发现的?
2 es client如何做到负载均衡?
3 一个es node挂掉之后,es client如何摘掉该节点?
4 es client node检测分为两种模式(SimpleNodeSampler和SniffNodesSampler),有什么不同?
核心类
- TransportClient es client对外API类
- TransportClientNodesService 维护node节点的类
- ScheduledNodeSampler 定期维护正常节点类
- NettyTransport 进行数据传输
- NodeSampler 节点嗅探器
Client初始化过程
初始化代码
1 Settings.Builder builder = Settings.settingsBuilder() .put("cluster.name", clusterName) .put("client.transport.sniff", true); Settings settings = builder.build(); 2 TransportClient client = TransportClient.builder().settings(settings).build(); 3 for (TransportAddress transportAddress : transportAddresses) { client.addTransportAddress(transportAddress); }