elasticsearch客户端连接选择

elasticsearch支持两种协议:

http协议。

Native Elasticsearch binary protocol(本地elasticsearch二进制协议):elasticsearch自主研发的节点间通信的协议。

还可以通过使用插件来扩展支持的协议。有一些官方的插件。

java之外的语言不推荐使用第二种方式,因为第二种方式需要很多自定义序列化。

支持的客户端

Transport

Transport是连接到Elasticsearch的本地方法之一。它是官方Elasticsearch分发的一部分,因此需要客户端用Java编写(或至少在JVM上运行)。 它非常快,在JVM上本机运行。序列化是有效的,发送到/从Elasticsearch实例的消息和操作中几乎没有开销。它需要保持Elasticsearch服务器和客户端版本有些同步。在Elasticsearch 1.0之前,将需要完全相同的版本,但较新的版本(1.0和更高版本)支持版本之间的交互。由于异常序列化和更新之间的其他潜在细微差异,在客户端和服务器上运行相同的JVM更新版本也是有益的。 目前不支持加密或身份验证,但是宣布不久会满足这些需求。要在Found.no托管集群上使用传输客户端,可以使用elasticsearch自定义传输模块,该模块负责加密,身份验证和保持活动。

Node Client

Node客户端与transport client非常相似:它是官方Elasticsearch发行版的一部分,需要客户端运行Java等,但也有一些显着的差异。 如果群集对传输客户端是否已连接到群集中的某个节点非常不感兴趣,那么节点客户端将被视为群集的一部分。这意味着节点客户端的存在被存储在群集状态,并且群集中的所有其他节点将尝试建立到客户端的几个tcp连接。如果群集很大或使用多个客户端,这可能是一个显着的缺点。 这可能看起来有点荒谬,但是目前需要它,以便使服务器节点能够将对集群状态的更改传播到客户端。其最终结果是,节点客户端始终具有最新的集群状态和与Elasticsearch集群中每个其他节点的连接,这使得它能够在本地执行操作路由,是其自身请求的协调器等等。这会为每个请求跳过网络跳转,并导致集群中其余节点的工作量减少。

HTTP客户端

HTTP在大多数编程语言中得到很好的支持,这是连接到Elasticsearch的最常见的方法。如果要使用HTTP,还有一个重要的选择:使用一个现有的Elasticsearch基于HTTP的库,或者只是创建一个小的包装器,需要使用HTTP客户端的操作。 由于HTTP是一个通用协议,并支持各种各样的用例,一些重要的事情需要由客户端实现:连接池和保持活动。需要连接池以避免必须支付每个请求的TCP连接建立成本。更重要的,如果它使用HTTPS,这带来额外的加密握手成本。连接池经常需要保持活动支持,因为我们希望避免连接由于空闲而中断。 虽然最初显而易见的是,连接建立实际上是重要的,但是考虑建立TCP连接需要三次握手。简单地说,使用50毫秒的ping时间,除了获取和释放本地资源(处理客户端端口,连接管理等)所花费的时间之外,建立连接需要大约75毫秒 - 这个没有考虑在两端处理请求/响应(例如,串行化)所花费的时间。没有连接池,这个时间被添加在每个请求的顶部。对于我们建议用于安全和隐私的HTTPS,连接建立开销有时可以以秒为单位测量,这甚至更显着。考虑到最终用户的响应时间必须在100毫秒以下才能被观察为“即时”的基本建议,即使非加密的开销也使得这种限制几乎不可能保持在内。 由Elasticsearch编写和支持的官方(非Java)客户端都使用HTTP底层与Elasticsearch进行通信。一般建议是使用封装HTTP API的正式客户端,因为他们负责处理所有这些细节。 HTTP客户端实现可能相当快,其中一些甚至与本机协议的速度竞争。 Elasticsearch的HTTP API被广泛使用,并且具有相当多的社区支持。然而,性能取决于客户端库,并且通常需要进行配置或调整才能最大化。

结论

使用一个高性能的HTTP客户端,很容易和官方语言绑定。

使用Java,一般通过transport优于node,除非使用节点客户端的性能增益足够大,以保证额外的网络复杂性。使用基准来验证性能提升。

当使用其他非基于Java JVM的语言(例如Scala,Clojure,Groovy,JRuby等)时,需要衡量能用在node和transport两种客户端的native语言。

时间: 2024-11-10 00:53:44

elasticsearch客户端连接选择的相关文章

Elasticsearch - java客户端连接

写在前面的话:读书破万卷,编码如有神-------------------------------------------------------------------- 最简单的在java客户端连接es服务器 (仅作为快速简单使用demo) 1 package com.es.util.elasticsearch; 2 3 import lombok.Data; 4 import org.apache.log4j.Logger; 5 import org.elasticsearch.actio

配置ORACLE 客户端连接到数据库

--================================= -- 配置ORACLE 客户端连接到数据库 --================================= Oracle 客户端连接到Oracle 数据库服务器貌似不同于SQL serve中的网络配置,其实不然,只不过所有的SQL server 运行于Windows平台,故很多配置直接集成到了操作系统之中.所以无需配置客户端即可连接到服务器.Oracle 客户端连接到数据库依赖于Oracle Net.Oracle提供

Oracle RAC 客户端连接负载均衡(Load Balance)

实现负载均衡(Load Balance)是Oracle RAC最重要的特性之一,主要是把负载平均分配到集群中的各个节点,以提高系统的整体吞吐能力.通常情况下有两种方式来实现负载均衡,一个是基于客户端连接的负载均衡,一个是基于服务器端监听器(Listener)收集到的信息来将新的连接请求分配到连接数较少实例上的实现方式.本文主要讨论的是基于客户端连接的负载均衡,并给出演示. 与负载均衡配置之前的监听配置请参考              ORACLE RAC 监听配置 (listener.ora t

解决mysql 客户端连接问题

   问题:在linux 上安装了mysql服务端,使用客户端连接时报错信息为:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)      解决方法1: 1.登录mysql: mysql -uroot -proot 2.授权:GRANT ALL PRIVILEGES ON *.* TO 'myuser'@'%' IDENTIFIED BY 'mypassword' WITH GR

通配符证书导致 Outlook Anywhere 的客户端连接问题

本主题介绍当您使用 Outlook Anywhere 连接到 Microsoft Exchange 及在组织中跨 Exchange 客户端访问服务器部署通配符证书时如何解决 Microsoft Office Outlook 2007 客户端连接问题.推荐购买GeoTrust通配符证书. 当您需要 Exchange 组织将通配符证书用于运行 Exchange Server 2007 且已安装客户端访问服务器角色的任何服务器时,您必须配置自动发现服务的设置,以便 Outlook Anywhere 客

oracle初体验四 PL/SQL Developer 不安装客户端连接远程oracle数据库

PL/SQL Developer是一个集成开发环境,专门面向Oracle数据库存储程序单元的开发.如今,有越来越多的商业逻辑和应用逻辑转向了Oracle Server,因此,PL/SQL编程也成了整个开发过程的一个重要组成部分.PL/SQL Developer侧重于易用性.代码品质和生产力,充分发挥Oracle应用程序开发过程中的主要优势. 下载敏捷客户端 http://eduunix.ccut.edu.cn/index2/database/Oracle%20Instant%20Client/

DataUml Design 介绍11 - DataUML 1.5版本功能(支持无Oracle客户端连接,有图有真相)

DataUML Design1.5版本主要更新内容包括: 1.优化数据库登录界面: 2.查询分析器智能提示: 3.优化数据库浏览插件,数据库登录组件,支持历史记录缓存: 4.支持无Oracle客户端连接: 5.支持浏览数据库视图.存储过程.函数和触发器: 6.支持从Excel文件导入数据生成模型: 7.优化组合软件新建功能的界面: 一.新建功能的界面 集成成有插件的新建功能,类似于VS编译器,所有插件新建功能统一入口.如下图 二.数据库连接界面,支持无Oracle客户端连接 1.优化数据库登录界

存储学习之--StarWind虚拟存储配置和Linux客户端连接

存储学习之--StarWind虚拟存储配置和Linux客户端连接      在Windows 2008 Server上安装好StarWind后,就可以对它进行配置了 一.配置基本的StarWind 1.启动StarWind管理器 默认情况下,StarWind管理器放在任务栏的右下角 2.添加主机(如果是本机,输入127.0.0.1即可) 3.连接到主机 默认用户名为:root ,默认的密码为:starwind 4.接下来添加target 输入一个target名称 选择存储的介质类型,分别是硬盘,

突破IIS的客户端连接限制

我们知道Windows 2000专业版或Windows XP专业版操作系统中IIS最多允许10个客户端的连接,在Windows 2000服务器版或Windows 2003服务器版操作系统中不存在这种连接限制问题. Microsoft提供了一个管理IIS的小工具MetaEdit,MetaEdit工作在Windows NT4.0.Windows 2000上,我发现它在Windows XP上也能正常工作,另外,MetaEdit只能管理II4.0.IIS5.0或更高版本的IIS. 下面利用这个工具突破W