首页 > 其他分享 >Elasticsearch的架构

Elasticsearch的架构

时间:2023-10-21 19:32:24浏览次数:32  
标签:架构 lucene 索引 Elasticsearch 就是 模块 es 分布式

1.3Elasticsearch的架构

Gateway层

es用来存储索引文件的一个文件系统且它支持很多类型,例如:本地磁盘、共享存储(做snapshot的时候需要用到)、hadoop的hdfs分布式存储、亚马逊的S3。它的主要职责是用来对数据进行长持久化以及整个集群重启之后可以通过gateway重新恢复数据。

Distributed Lucene Directory

Gateway上层就是一个lucene的分布式框架,lucene是做检索的,但是它是一个单机的搜索引擎,像这种es分布式搜索引擎系统,虽然底层用lucene,但是需要在每个节点上都运行lucene进行相应的索引、查询以及更新,所以需要做成一个分布式的运行框架来满足业务的需要。

四大模块组件

districted lucene directory之上就是一些es的模块,Index Module是索引模块,就是对数据建立索引也就是通常所说的建立一些倒排索引等;Search Module是搜索模块,就是对数据进行查询搜索;Mapping模块是数据映射与解析模块,就是你的数据的每个字段可以根据你建立的表结构通过mapping进行映射解析,如果你没有建立表结构,es就会根据你的数据类型推测你的数据结构之后自己生成一个mapping,然后都是根据这个mapping进行解析你的数据;River模块在es2.0之后应该是被取消了,它的意思表示是第三方插件,例如可以通过一些自定义的脚本将传统的数据库(mysql)等数据源通过格式化转换后直接同步到es集群里,这个river大部分是自己写的,写出来的东西质量参差不齐,将这些东西集成到es中会引发很多内部bug,严重影响了es的正常应用,所以在es2.0之后考虑将其去掉。

Discovery、Script

es4大模块组件之上有 Discovery模块:es是一个集群包含很多节点,很多节点需要互相发现对方,然后组成一个集群包括选主的,这些es都是用的discovery模块,默认使用的是 Zen,也可是使用EC2;es查询还可以支撑多种script即脚本语言,包括mvel、js、python等等。

Transport协议层

再上一层就是es的通讯接口Transport,支持的也比较多:Thrift、Memcached以及Http,默认的是http,JMX就是java的一个远程监控管理框架,因为es是通过java实现的。

RESTful接口层

最上层就是es暴露给我们的访问接口,官方推荐的方案就是这种Restful接口,直接发送http请求,方便后续使用nginx做代理、分发包括可能后续会做权限的管理,通过http很容易做这方面的管理。如果使用java客户端它是直接调用api,在做负载均衡以及权限管理还是不太好做。

标签:架构,lucene,索引,Elasticsearch,就是,模块,es,分布式
From: https://blog.51cto.com/u_16237074/7969407

相关文章

  • 云原生架构实战02 Kubernetes实战入门
    一、Kubernetes是什么?kubernetes具有以下特性:服务发现和负载均衡Kubernetes可以使用DNS名称或自己的IP地址公开容器,如果进入容器的流量很大,Kubernetes可以负载均衡并分配网络流量,从而使部署稳定。存储编排Kubernetes允许你自动挂载你选择的存储系统,例如本地存储、公共云提......
  • 数仓架构图 sdm odm
       https://www.cnblogs.com/zourui4271/p/14139002.html数据总线数据仓库作为数据管理核心,必须拥有统一标准的数据输入接口与数据输出通道,才能保证数据输入输出的稳定性。但是数据输入输出会造成数据仓库的资源损耗,尤其是IO与网络,所以建设数据总线系统可把数据输入输......
  • 接入层高可用架构设计:EdgeOne实战
    1. 背景接触多家客户后,发现大家的接入层架构大都如下图所示,WAF/DDoS组件客户要么选其中之一,要么都不选或自荐。CLB后面挂CVM,CVM上面部署Nginx或者Kong等组件。从这个架构图可以看出,客户有考虑高可用,但仅关注自己的组件层面,没有关注外部基础设施(如DNS)、政策法规的影响、运营商......
  • 《架构师之路:软件架构之美》第六七章读书笔记
    6.1软件架构有助于交付高质量的产品软件架构是关于结构和愿景的,不思考软件架构(以及“大局”)会导致团队经常遭遇一些常见问题。你的软件系统有良好定义的结构吗?团队里每个人都以一致的方式实现特性吗?代码库的质量水平一致吗?对于如何构建软件,团队有共同的愿景吗?团队里每个人都......
  • 游戏支付系统如何架构与设计
     目前游戏开发中主流的支付是微信支付,支付宝支付,苹果支付等。今天来给大家分享一下游戏中支付系统如何架构与设计。 游戏支付中的主要业务流程 在设计游戏支付的时候,了解游戏中的支付过程与步骤是非常必要的,只有搞懂了这些步骤才能把支付功能做好。我们以常见的网络游戏为......
  • 软件研发流程、架构规范、技术标准、需求过程等全文档
    前言:软件项目管理全文档包括以下几个方面:需求分析、项目规划、过程管理、测试和部署。全文档获取:Q+:262086839例图在文末。正文:一、需求分析是软件项目管理的第一步,也是非常关键的一步。在需求分析阶段,项目团队需要与用户进行深入沟通,了解用户的需求和期望,并对其进行详细的分......
  • 什么是美颜sdk?直播实时美颜sdk的工作流程和架构分析
    在现代社交媒体和娱乐行业中,直播已经成为了一种受欢迎的娱乐形式,同时实时美颜也变得越来越重要。直播实时美颜SDK的工作流程和架构在这一领域起到了关键作用。本文将深入探讨这些SDK的内部机制,从而理解它们如何为用户提供出色的美颜效果。一、什么是美颜sdk?实时美颜是指在直播过程......
  • Unity 战斗系统的架构与设计
    很多刚开始做游戏的小伙伴感觉战斗系统是一个比较麻烦的部分,不知道如何设计,角色很多,职业很多,技能有好几种,还有装备相关的东西。今天这篇文章详细的讲解一个战斗系统应该如何架构与设计,你看完并搞懂它,战斗系统的架构与设计对你来说再也没有难度了。首先我们先来上一张架构图: ......
  • untiy小游戏——牧师与魔鬼_MVC架构
    牧师与魔鬼_MVC架构游戏介绍​牧师和魔鬼是一款益智游戏,您将在其中帮助牧师和魔鬼过河。河的一侧有3个祭司和3个魔鬼。他们都想去这条河的另一边,但只有一条船,这条船每次只能载两个人。而且必须有一个人将船从一侧驾驶到另一侧。您可以单击按钮来移动它们,然后单击移动按......
  • 《动手学深度学习 Pytorch版》 9.6 编码器-解码器架构
    为了处理这种长度可变的输入和输出,可以设计一个包含两个主要组件的编码器-解码器(encoder-decoder)架构:编码器(encoder):它接受一个长度可变的序列作为输入,并将其转换为具有固定形状的编码状态。解码器(decoder):它将固定形状的编码状态映射到长度可变的序列。9.6.1编码器编......