关于transportclient和nodeclient的区别

如题所述

  transport client充当ES集群和你的应用直接的通信层,它知道API,并且能够在节点间自动轮循、帮你嗅探集群等等。但是它在集群外部,类似REST客户端。

  Node Client,另一方面,事实上是集群中的一个节点(但是不存储数据,并且不能作为主节点),由于它是一个节点,它知道整个集群的状态(全部节点都在哪,哪些分片在哪些节点上等等),这意味着它执行API时可以少用一个网络跳跃。

  这里有两个关于这两种客户端的使用案例:

  1.如果你想让你的应用和集群分离,transport client是一个理想的选择。例如,如果你的集群快速创建和销毁连接,那么transport client比node client轻很多,因为它不是集群的一部分。

  同样,如果你需要创建上千个连接,但是你不希望有上千个node client加入你的集群,transport client将是一个更好的选择。

  2.在另一方面,如果你只需要几个长寿命的,能持久把对象连接到集群,node client会更高效一点,因为它知道集群的结构。但是它把你的应用绑定到集群中,所以从防火墙的角度说可能会造成问题。

  

温馨提示:答案为网友推荐,仅供参考
相似回答