问题
让我们带着问题去学习,效率会更高
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); }

本文主要探讨Elasticsearch的client源码,包括client如何自动发现集群节点、实现负载均衡,以及节点数据的写入和连接创建的时间点。重点分析了TransportClient、TransportClientNodesService、NodeSampler等核心类,同时解释了Guice依赖注入在client初始化中的作用。

492

被折叠的 条评论
为什么被折叠?



