002_简介

背景介绍

  • Es 是一个开源软件,其所属公司是上市公司 Elastic Inc。
  • 当前市值超过50亿美金,开盘当天涨幅达94%
  • Elasticsearch 软件下载量,超3.5亿次
  • 10W+的社区成员
  • 7200+订阅用户,分布在100+国家
  • 合作的云服务厂商:Elasic、Amazon、阿里巴巴、腾讯

Es 客户

image-20200423152034113

同类产品比较

存储类型软件的一个比较

image-20200423152819623

同类产品(搜索引擎)

  • Es-开源分布式搜索分析引擎
    • 近实时(Near Real Time)
    • 分布式存储/搜索/分析引擎
  • Solr(Apache 开源项目)
  • Splunk(第一家上市的大数据公司,也有类似的产品)

Solr 和 Es 热门曲线

Solr 和 Es 的热门曲线比较

基于 lucene

Es 和 Solr 底层引擎都是 Lucene。Lucene 具有以下特点:

  • 基于 Java语言开发的搜索引擎类库
  • 创建于1999年,2005年称为 Apache 顶级开源项目
  • Lucene具有高性能、易扩展的优点
  • 局限性:
    • 只能基于 Java 语言开发
    • 累哭的接口学习曲线陡峭
    • 原生不支持水平扩展,搜索引擎需要存储海量数据,如果不支持水平扩展,需要自己做很多开发

Elasticsearch 的分布式架构

image-20200423153558687

  • 集群规模可以从单个扩展到数百个节点
  • 高可用&水平扩展
    • 服务和数据两个维度
  • 支持不同的节点类型
    • 支持 Hot&Warm 架构

支持多种方式集成接入

  • 多种编程语言的类库
    • Java/.NET/Python/Ruby/PHP/Groovy/Perl
  • RESTful API v.s. Transport API
    • 9200 v.s. 9300(建议使用 RESTful API)
  • 最新支持JDBC&ODBC接入

主要功能

  • 海量数据的分布式存储以及集群管理
    • 服务与数据的高可用,水平扩展
  • 近实时搜索,性能卓越
    • 结构化、全文、地理位置、自动完成
  • 海量数据的近实时分析
    • 数据聚合功能

版本

  • 0.4:2010年2月第一次发布
  • 1.0:2014年1月
  • 2.0:2015年10月
  • 5.0:2016年10月
    • 新特性-5.x
      • Lucene 6.x,性能提升,默认打分机制从 TF-IDF 改为 BM25
      • 支持 Ingest 节点/Painless Scripting /Completion suggested 支持/ 原生的 Java REST 客户端
      • Type 标记成 deprecated,支持了 Keyword 的类型
      • 性能优化
        • 内部引擎移除了避免同一文档并发更新的竞争锁,带来15%-20%的性能提升
        • Instant aggregation,支持分片上聚合的缓存
        • 新增了 Profile API,方便性能trouble shooting
  • 6.0:2017年10月
    • 新特性-6.x
      • Lucene 7.x
      • 新功能
        • 跨集群复制(CCR)
        • 索引生命周期管理
        • SQL 的支持
    • 更友好的升级及数据迁移
      • 在主要版本之间的迁移更为简化,体验升级
      • 全新的基于操作的数据复制框架,可加快恢复数据
    • 性能优化
      • 有效存储稀疏字段的新方法,降低了存储成本
      • 在索引时进行排序,可加快排序的查询性能
  • 7.0:2019年4月
    • 新特性 7.x
      • Lucene 8.0
      • 重打改进-正式废除单个索引下多 Type 的支持
      • 7.1开始,Security 功能免费使用
      • ECK-Elasticsearch Operator on Kubernetes
      • 新功能
        • New Cluster coordination
        • Feature-Complete High Level REST Client
        • Script Score Query
      • 性能优化
        • 默认的 Primary Shard 数从5改为1,避免 Over Sharding
        • 更快的 Top K

Elastic Stack 生态圈

image-20200423155425508

Logstash: 数据处理管道

  • 开源的服务端数据处理管道,支持从不同来源采集数据,转换数据,并将数据发送到不同的存储库中
  • Logstash 诞生于2009年,最初用来做日志的采集和处理
  • 2013年被 Elasticsearch 收购

Logstash 特性

  • 实时解析和转换数据
    • 从 IP 地址破译出地理坐标
    • 将 PII 数据匿名化,完全排除敏感字段
  • 可扩展
    • 200多个插件(日志/数据库/Arcsigh/Netflow)
  • 可靠性安全性
    • Logstash 会通过持久化队列来保持至少将运行中的事件送达亿次
    • 数据传输加密
  • 监控

Kibana: 可视化分析利器

  • Kibana 名字的含义 = Kiwifruit + Banana
  • 数据可视化工具,帮助用户解开对数据的任何疑问
  • 基于 Logstash 的工具,2013年加入 Elastic 公司

BEATS: 轻量的数据采集器

image-20200423160135658

X-Pack: 商业化套件

  • 6.3版本之前的版本,X-Pack以插件方式安装
  • X-Pack 开源之后,Elasticsearch & Kibana支持OSS 版和 Basic 两种版本
    • 部分 X-Pack 功能支持免费使用,6.8和7.1开始,Security 功能免费
  • OSS,Basic,黄金级,白金级

image-20200423160528260

ELK客户及应用场景

公布了一些大量客户使用的案例

  • 网站搜索/垂直搜索/代码搜多
  • 日志管理与分析/安全指标监控/应用性能监控

日志的重要性

为什么重要

  • 运维:医生给病人看病。日志就是病人对自己的陈述
  • 恶意攻击,恶意注册,刷单,恶意密码猜测

挑战

  • 关注点很多,任何一个点都有可能引起问题
  • 日志分散在很多机器,除了问题时,才发现日志被删了
  • 很多运维人员时消防员,哪里有问题去哪里

image-20200423161234086

Es的日志管理方案

Es 天然的对日志管理进行了支持,可以很好地解决以上问题:

image-20200423161428158

日志经收集入库之后如果发现异常还可以及时地发出一些警告。用户可以在 Kibana 地界面很容易地看到这些日志,并使用 Es 强大地搜索功能进行日志搜索,且可以通过机器学习地方式及时发现异常并发出警告。

Es使用架构

搜索场景

  • 单独使用 Elasticsearch 存储数据,架构简单。

  • 以下情况可考虑与数据库集成,建立合适地同步机制进行数据同步

    • 与现有系统的集成

    • 需考虑事务性

    • 数据更新频繁

      image-20200423162010910

指标分析/日志分析

image-20200423162115563

  1. 第一阶段时数据抓取,可以通过自己写地一些 Java 业务客户端或者 beats 进行抓取
  2. 实际情况数据量很大,需要引入一些 mq 或者消息中间件进行缓存
  3. Logstash 从缓存层获取数据并格式化输入到 Es
  4. 可以使用 Kibana 或者 Grafana 图形化工具进行可视化分析

ES 官方网站和文档

es官网为:https://www.elastic.co/

es 官方文档为(以7.1为例):https://www.elastic.co/guide/en/elasticsearch/reference/7.1/index.html


   转载规则


《002_简介》 阿钟 采用 知识共享署名 4.0 国际许可协议 进行许可。
  目录