zoukankan      html  css  js  c++  java
  • ElasticStack分布式引擎技术栈(ELK)介绍

       刚入职不久,就在公司跟前辈导师了解到Elastic技术栈,让我着手准备负责部门ELK-Stack(云计算)的相关工作,于是开始整理学习与总结。

    由于本人所在的是某大型央企银行的信息科技部门,与各大数据库交往比较密切,故本人对Elastic十分感兴趣。

    一、简介

    Elastic-Stack早期也称为ELK,现统一叫ELK stack。这一套技术栈解决的是企业级的业务需求,能够安全可靠地获取任何来源、任何格式的数据,然后实时地对数据进行搜索、分析和可视化。

    使用此产品的客户闻名全球,有Google、Microsoft等等。现在国内的大厂也基本在投入Elastic服务。

          (1)、Wikipedia 使用 Elasticsearch 提供带有高亮片段的全文搜索,还有 search-as-you-type 和 did-you-mean 的建议。
            (2)、卫报 使用 Elasticsearch 将网络社交数据结合到访客日志中,实时的给它的编辑们提供公众对于新文章的反馈。
            (3)、Stack Overflow 将地理位置查询融入全文检索中去,并且使用 more-like-this 接口去查找相关的问题与答案。
            (4)、GitHub 使用 Elasticsearch 对1300亿行代码进行查询。

    然而 Elasticsearch 不仅仅为巨头公司服务。它也帮助了很多初创公司,像 Datadog 和 Klout, 帮助他们将想法用原型实现,并转化为可扩展的解决方案。Elasticsearch 能运行在你的笔记本电脑上,或者扩展到上百台服务器上去处理PB级数据。

    ELastic的官网为:https://www.elastic.co/。

    其核心由这四个组件构成:Elasticsearch(核心,开源搜索引擎)、Kibana、Beats和 Logstash。

    二、组件介绍

      1、ElasticSearch 是一个基于 Apache Lucene 的开源搜索引擎。它通过RESTful API 来隐藏Lucene的复杂性,从而让全文搜索变得简单。不过,Elasticsearch 不仅仅是 Lucene 和全文搜索,我们还能这样去描述它:

    • 分布式的实时文件存储,每个字段都被索引并可被搜索
    • 分布式的实时分析搜索引擎
    • 可以扩展到上百台服务器,处理PB级结构化或非结构化数据

      ElasticSearch对数据进行搜索、分析和存储,其是基于JSON的分布式搜索和分析引擎,专门为实现水平可扩展性、高可靠性和管理便捷性而设计的

    它的实现原理主要分为以下几个步骤:

        1)首先用户将数据提交到ElasticSearch数据库中;

        2)再通过分词控制器将对应的语句分词;

        3)将分词结果及其权重一并存入,以备用户在搜索数据时,根据权重将结果排名和打分,将返回结果呈现给用户;

      2、Kibana实现数据可视化,其作用就是在ElasticSearch中进行民航。Kibana能够以图表的形式呈现数据,并且具有可扩展的用户界面,可以全方位的配置和管理ElasticSearch。

        Kibana最早的时候是基于Logstash创建的工具,后被Elastic公司在2013年收购。

        1)Kibana可以提供各种可视化的图表;

        2)可以通过机器学习的技术,对异常情况进行检测,用于提前发现可疑问题;

      3、Beats是一个面向轻量型采集器的平台,这些采集器可以从边缘机器向Logstash、ElasticSearch发送数据,它是由Go语言进行开发的,运行效率方面比较快。从下图中可以看出,不同Beats的套件是针对不同的数据源。

      4、Logstash是动态数据收集管道,拥有可扩展的插件生态系统,支持从不同来源采集数据,转换数据,并将数据发送到不同的存储库中。其能够与ElasticSearch产生强大的协同作用,后被Elastic公司在2013年收购。

        它具有如下特性:

        1)实时解析和转换数据;

        2)可扩展,具有200多个插件;

        3)可靠性、安全性。Logstash会通过持久化队列来保证至少将运行中的事件送达一次,同时将数据进行传输加密;

        4)监控;

        对于日志的解决方案一般分为:日志搜索、格式化分析、全文检索、风险告警;

    三、学习ElasticSearch的层面:

     1、开发层面

        1)了解ElasticSearch有基本功能;2)底层分布式工作原理;3)针对数据进行数据建模;

      2、运维层面

        1)进行集群的容量规划;2)对集群进行滚动升级;3)对性能的优化;4)出现问题后,对问题的诊断与解决;

      3、方案层面

        1)学习ElasticSearch后,可以针对实际情况,解决搜索的相关问题;2)可以将ELK运用到大数据分析场景中;

    四、ElasticSearch的主要功能与应用场景:

      1、主要功能:

        1)、海量数据的分布式存储以及集群管理,达到了服务与数据的高可用以及水平扩展;

        2)、近实时搜索,性能卓越。对结构化、全文、地理位置等类型数据的处理;

        3)、海量数据的近实时分析(聚合功能)

      2、应用场景:

        1)网站搜索、垂直搜索、代码搜索;

        2)日志管理与分析、安全指标监控、应用性能监控、Web抓取舆情分析;

    五、ElasticSearch与数据库BD集成:

      

      针对上图,可以分为两种情况:

      1、将ElasticSearch当成数据库来存储数据,好处是架构比较简单;

      2、若数据更新比较频繁,同时需要考虑数据事务性时,应该先将数据存入数据库,然后建立一个合适的同步机制,将数据同步到ElasticSearch中;

    日志处理:

    Keep moving forwards~
  • 相关阅读:
    实体ip 虚拟ip 固定ip 动态ip
    mysql数据库性能调优总结积累
    Java项目相关监控与调优
    线程锁与避免线程锁 线程锁检测
    在Eclipse中使用JUnit4进行单元测试(高级篇)
    MySQL性能优化的21条最佳经验【转】
    在Eclipse中使用JUnit4进行单元测试(中级篇)
    在Eclipse中使用JUnit4进行单元测试(初级篇)
    Windbg学习使用
    性能测试积累总结
  • 原文地址:https://www.cnblogs.com/-X-peng/p/15038411.html
Copyright © 2011-2022 走看看