ES transport client底层是netty实现,netty本质上是异步方式,但是netty自身可以使用sync或者await(f... ES transport client底层是netty实现,netty本质上是异步方式,但是netty自身可以使用sync或者await(future超时机制)来实现类似同步调用! 因此,ES transport client可以同步调用也可以异步(不过底层的socket必然是异步实现)。 发送端例子 对于java client的数据发送(这里以bulk为例),写过的人都知道,其实是很简单的,因为大部分事情都已经被client做掉了,那么我们先给出例子感知一下: client初始化 Settings settings = Settings.settingsBuilder() .put("cluster.name", "myClusterName") .put("client.transport.sniff", true).build(); client=new TransportClient.builder().settings(settings).build() .addTransportAddress(new InetSocketTransportAddress("host1",9...
时间序列数据库概览——基于文件(RRD)、K/V数据库(influxDB)、关系型数据库 一般人们谈论时间序列数据库的时候指代的就是这一类存储。按照底层技术不同可以划分为三类。 直接基于文件的简单存储:RRD Tool,Graphite Whisper。这类工具附属于监控告警工具,底层没有一个正规的数据库引擎。只是简单的有一个二进制的文件结构。 基于K/V数据库构建:opentsdb(基于hbase),blueflood,kairosDB(基于cassandra),influxdb,prometheus(基于leveldb) 基于关系型数据库构建:mysql,postgresql都可以用来保存时间序列数据 另外一类数据库其表结构是: [timestamp] [d1] [d2] .. [dn] [v1] [v2] .. [vn] 其优化的查询方式不限于查询原始数据,而是可以组合查询条件并且做聚合计算,比如: SELECT d2, sum(v1) / sum(v2) FROM metric WHERE d1 = “A” AND timestamp >= B AND timestamp < C GROUP BY d2 我们希望时间序列数据库不仅仅可以提供原始数据的查询...