ElasticSearch 应用开发(十)Transport Client和Rest Client网络协议

TransportClient和RestClient  网络协议的对比


(1)TransportClient:java客户端的方式是以TCP协议在9300端口上进行通信:

TransportClient、NodeClient(2.3版本弃用);

java transportClient api提供了Query Builder来协助构建查询对象;

基于java api封装的orm框架,封装比较死板,不太灵活,兼容性差,不能像调用restful那样直接操作query dsl,所以也不能直接针对query dsl,在head插件或者kibana里面调试和调优query dsl,写出了query dsl还要想方设法转换成对应的java api的调用方式。

(2)RestClient:http客户端的方式是以http协议在9200端口上进行通信:

http则需要自己在代码里拼JSON DSL;

基于restful的,直接操作各种restful api和query dsl,比较简单,没有orm功能;

(3)使用对比

从程序员角度来说, java transport api更显得更加友好,并且性能也要比http稍好。但java transport api也有如下弊病:
1. 第三方依赖包比较多,如果应用还要集成其他一些框架和组件,容易产生依赖冲突,解决起来比较麻烦。 
2. client版本必须和ES服务端版本一致,否则容易产生兼容性问题。 
3. clientJAVA版本也需要和Server端保持一致,否则也可能产生兼容性问题。
4. client端的环境和版本需要和server端保持一致这个要求,使得client/server端运行环境强耦合,导致ES Server端很难独立升级。

(4)网络

TransportClient基于TCP协议、Rest Client 基于Http协议;

从计算机网络方面看TCP协议在传输层、Http协议在应用层;

(5)线程池

不管是transport client还是rest client都是线程安全的,都应该使用单例。

线程池完全够用,不会是性能瓶颈所在。

参考:

https://elasticsearch.cn/question/2273

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值