微信号:OpenSkill_CN

介绍:一个开放的互联网技术交流平台,专注于开源技术、编程开发、数据库、云计算、大数据、自动化、Linux运维以及web开发等领域技术.在这里可以自由问答、交谈探讨技术问题,网址:http://OpenSkill.CN

使用Elasticsearch的一些经验

2016-02-27 02:41 秦强强

01

简单逻辑架构介绍

在如上所示就是线上log日记处理简单的逻辑架构。业务中的源数据有一些JAVA程序的log和一些业务程序log收集,然后通过写入到kafka的对应Toptic,收集到的log存放在kafka中,然后通过kafka的consumer程序处理把log收集存放到后端的ES集群。


我的观点
简单的介绍了我们线上利用ES的情况后,下面给大家分享一下在使用ES的一些经验!


02

一些有用的配置


1

优化mapping, 禁用_all, 不对不是查询条件的field建索引

2

打开慢查询慢索引日志和GC日志

3

限制 fielddata cache 的堆内存占比, 设置合适的indices.breaker(断路器)

4

单机多实例时, 配置主从分片在不同的机器


03

遇到的坑


1

避免深度分页的检索

2

避免没有指定索引的检索和会查询很多个索引的检索


04

一些经验


1

写入压力变小时,集群的反应会变快

2

单个实例hold更少的分片和数据时,内存压力会变小,反应会变快

3

日志检索场景下, 越新的数据检索的频率会越高;老数据的检索需求有,但不多;


05

还需要优化的地方


1

抽出独立的查询节点和master节点  (获取更高的性能和易扩展性)

2

冷热分离(数据方面)

3

GC优化 (主要是针对默认的GC回收机制,增加GC次数,较少GC时间,因为当GC发生的时候,java程序基本不工作;特别是老态heap回收时间。)

4

更好的安全 (可执行scripts脚本和端口开放、漏洞方面。)


架构变动说明

由于数据的冷热状态,什么叫数据的冷热状态呢。就是你时时查看的肯定是最新的数据,当你需要告警数据也好,还是数据分析也好,大多数场景下你分析的是最新的数据,最新的数据被称之为热数据;而冷数据即为历史数据,也可称之为伪静态的数据,也就是你不会时时和经常的去分析和查看的数据,但是这部分数据你以后可能会用着。比如你年底去统计你们一年线上业务用户量的统计这么一个数据,那你这部分冷数据是必须的数据源。针对这样的业务场景:

1、我们可以把冷热数据分别放到不同的ES集群当中去,让最新的数据选择写入到最新的ES集群,这样就得到你程序端控制写入后端ES存储机器名称。

2、我们也可以不增加新的集群,只是增加新的机器,然后给这新增加的一批机器打上一个tag,可以在配置文件中设置node.zone = zone_one 参数来控制。从而修改创建索引的参数,控制索引创建到属于这个zone空间的机器上面,把新写入的数据引入到新增加的机器上面,而老数据则存储在了以前集群中的那批集群上面。

 
开源技术社区 更多文章 浅谈可伸缩系统的架构 XEN 、 VMware ESXi、Hyper-V 以及 KVM 特点比较 SELinux防护KVM安全 多交流多阅读,淡化手机症 Zabbix监控之Mysql
猜您喜欢 HPE&msup软件技术开放日盛大召开,你想知道的干货都在这里 给自私自利程序员的10大职业谏言 Open Auth辅助库(使用ImitateLogin实现登录) PyTips 0x0b - Python 无处不在的 else 【报名微课堂丨表白讲师】为什么选择Spring Boot作为微服务的入门级框架