Elastic探秘:技术海洋里遗落的珍珠

内容来源:2018 年 06 月 30 日,Elastic工程师与布道师曾勇在“Elastic Meetup 南京交流会”进行的《Elastic探秘之遗落的珍珠》演讲分享。IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。

阅读字数:2250 | 5分钟阅读

摘要

Elastic Stack 功能越来越丰富了,有很多功能可能你只听说过名字,有很多功能也许没有机会尝试过,其实你可能错过了很多宝贝,所以让我们来探究探究。本次分享主要介绍 Elastic Stack 技术栈里面,一些可能看起来不太起眼但却非常有意思的功能,定义为非干货,尽量轻拍,不过相信对于刚接触 Elastic 的同学来说,也会有所收获。

获取嘉宾演讲视频及PPT,扫一扫下方二维码即可。

ElasticSearch里的几个不起眼的小功能

备注

在创建数据库表的时候,我们可能会面临为表中的字段添加备注的需求,对于业务复杂环境下的开发者来说这通常非常有帮助。

一般开发人员会为此编写详细的开发文档,标注各个字段的用处,不过文档的问题在于难以保持更新,很少有人查阅。

最好的方式是将备注和数据绑定在一起,恰好ES拥有这个功能,它通过Mate字段实现(如上图)。Meta中所有的信息都能够自定义,类似于元数据存储仓库,比如库表信息、表中字段、字段备注、版本、创建者等。

排序

排序是查询中比较常见的操作,一些限定范围的操作也会依赖于它。一般排序的步骤是先查询数据获取到文档,然后再使用特定字段进行排序。这种方式的性能开销较大,文档越多排序越慢。

理想的情况是在建索引的时候就排好序,这样可以一次性获取到结果,避免不必要的性能消耗。利用ES的Index Sorting能够完美的实现这一效果,另外它还带来了更好的压缩比和更小的磁盘空间。

使用方法也很简单,先指定排序字段,可以是一个或多个(上图为date),然后指定排序方式,倒序或正序,最后新建成的字段在创建索引的时候会依据它来排序。

Adaptive ReplicaSelection

在ES中请求发送到任意节点之后,若索引主分片不在请求所在节点,请求就会被转发到主分片所在的服务器节点上,之后由主分片创建索引并写入副本。相对写入,查询过程会简单些,请求达到节点后,该节点会拿到副本集合,然后依次轮询。

索引数据的大小和热度会使得集群中不同服务器IO压力不一致,从而造成轮询的时候,第一次访问的可能是空闲的服务器,很快就有返回,而第二次可能是压力大的服务器,较长时间后才有返回。

从用户体验角度来说,这种效果是非常不理想的。所以ES推出了Adaptive Replica Selection功能,它会以服务器的响应时间和请求队列作为参考指标,智能的选择副本进行查询,尽可能的缩短请求响应时间。

Kibana里面几个值得留意的新功能

Kuery + Autocomplete

Kuery是数据分析搜索的可视化平台kibana的新查询语法,通过在输入框中键入特定字段来检索信息,可以说是相对原生的搜索方式,即没有候选项也没有模糊查询。

Kibana新版中可以通过在options中打开新feature来启动智能检索功能,键入一部分字段后,搜索框下方马上会列出补全后的候选字段,字段中的可能值也会被枚举出来。虽说是个小功能,不过也大大提高了检索效率。

Chained Input Control

Chained Input Control是一种链式查询的功能,所有的索引数据都以控件的形式存放在一个列表中,用户可以先从列表中选择一个控件作为要查询的范围,之后列表中的控件会更新为上一个控件所限定的范围内,范围更新的同时页面展示数据也会随之更新。

比如要查询某个城市的相关数据,就可以先选择国家然后选中目标城市,之后所有数据都会同步更新。如果想要更详细的数据,还可以进一步选择控件。其实本质上这是通过前一个控件过滤下一个控件的值。

最后介绍一个小功能,大家都知道在智能化运维方面通过API来完成任务是非常有必要的,所以我们也提供了使用API创建Index Pattern的功能。

Logstash/Beats里面几个值得留意的新功能

Dissect Filter

Dissect filter可以应用于有一定规则的结构化数据上。比如将一个文本字段拆分成多个字段,通过逗号或空格进行切割。如上图所示,使用逗号分割字段,大括号中是字段的名称。

之所以不使用正则表达式,是因为它规则过于复杂,CPU消耗非常高,而目前所用的方式仅通过符号就可以切分,能够直观的预测到所获取的数据。不过该方式也存在限制,所有的数据都要遵循统一规则。

Munin

Munin不是Elastic,不过它出现的比较早,2002年的时候就诞生了,用的是PerL语言编写的,可以运行在各个平台上,跨平台能力很强。

Munin主要用来监控服务器的性能指标,比如CPU性能、磁盘占用、内存占用等。由于有着非常久的历史,所有插件非常丰富,基本上涵盖了能找的所有平台和应用。

刚好Elastic现在也在做监控和性能指标分析,我们就在想能不能直接接入Munin。最终的方案是通过beats将Munin拉入到Elastic里进行分析,由beats汇总Munin上传上来的数据,Elastic接收这些数据并交由Kibana分析,这样Elastic就能应对各种不同的平台。

Beats – Spoolingto Disk

如上图所示是一个和beats相关的基于磁盘的队列,可以理解为磁盘的一个缓冲区。当用beats进行处理数据时,如果数据时高时低内存占用就会比较高,而在基于磁盘的场景下得以避免这种问题。我们还可以用磁盘做一个缓冲区,让数据先落地。

X-Pack不容错过的免费功能

X-Pack虽然是我们的商业产品,但是有很多免费功能,这些都默认包含在下载版本中。如上图所示,大部分功能都是开源的,但有一部分要PAID,另一部分是免费的。

Monitoring是其中的一个免费功能,主要用来监控K8S和ES的内部运行信息,包含从监控到收集再到可视化的一整套流程。

第二个是SQL相关的功能,我们现在可以用SQL的语法来构建查询,目前来说还很简单,只提供select 基本功能,不能完全的写数据、修改数据。主要还是用于让数据科学家和运维分析人员方便的查询数据,毕竟他们对SQL语句更熟悉些。

Rolling up功能可以对数据进行上卷,按照指定的时间戳范围对数据进行聚合得到新的结果,这样数据量会少很多,很大程度上节省了磁盘空间,也比较适用于对历史数据和经营数据的进行业务分析。

还一个功能是Grok Debugger,它是一个用来调试python的工具。很多场景会用到Grok,像日志的每一行可能不一样,就可以用Grok把它们做成一个事件。

以上为全部分享内容,谢谢大家!

原文发布于微信公众号 - IT大咖说(itdakashuo)

原文发表时间:2018-09-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏用户2442861的专栏

半同步半异步模式以及Leader_Follwer模式

这里提到的两个设计模式都是用于高并发系统(例如一个高性能的网络服务器)的。这里我只是简单地提一下:    1. 半同步/半异步(half-sync/half-...

35730
来自专栏aCloudDeveloper

初识The ONE

Author:bakari  Date:2014.1.14       本学期开始做真正意义上的研究,主要方向为wireless and mobile netw...

29460
来自专栏宏伦工作室

基于itchat实现微信群消息同步机器人1.0

99740
来自专栏IT大咖说

自动化测试的理想境界:AppCrawler自动遍历工具

内容来源:2017 年 6 月 24 日,TesterHome联合创始人黄延胜在“Testwo第一届测试分享沙龙”进行《App crawler自动遍历工具》演讲...

95730
来自专栏大数据和云计算技术

MongoDB系列12:MongoDB电子商务产品目录模型设计

本文是第12篇,主要讲述MongoDB电子商务产品目录模型设计实战操作,非常值得一看。

19230
来自专栏CSDN技术头条

轻博客始祖Tumblr:哈希以支撑2.3万Blog请求/秒

【编者按】Tumblr是目前全球最大的轻博客网站,也是轻博客网站的始祖。当下已有超过1.96亿博客,930亿帖子,每秒2万3千请求。近日,该公司网站可靠性工程师...

23450
来自专栏Kirito的技术分享

天池中间件大赛dubboMesh优化总结(qps从1000到6850)

天池中间件大赛的初赛在今早终于正式结束了,公众号停更了一个月,主要原因就是博主的空余时间几乎全花在这个比赛上,第一赛季结束,做下参赛总结,总的来说,收获不小。

55060
来自专栏精讲JAVA

你真的很熟分布式和事务吗?

微吐槽 hello,world. 不想了,我等码农,还是看看怎么来处理分布式系统中的事务这个老大难吧! 本文略长,读者需要有一定耐心,如果你是高级码农或者架构师...

22090
来自专栏存储

你真的很熟分布式和事务吗?

微吐槽 hello,world. 不想了,我等码农,还是看看怎么来处理分布式系统中的事务这个老大难吧! 本文略长,读者需要有一定耐心,如果你是高级码农或者架构师...

24490
来自专栏程序猿DD

来自95后的天池中间件大赛总结

天池中间件大赛的初赛在今早终于正式结束了,公众号停更了一个月,主要原因就是博主的空余时间几乎全花在这个比赛上,第一赛季结束,做下参赛总结,总的来说,收获不小。

88160

扫码关注云+社区

领取腾讯云代金券