【ES的优势和原理及分布式开发的好处与坏处】

文章目录

  • ES的优势及分布式开发的好处
  • 1.ES的优势
    • 1.1 优势概述
    • 1.2 相关问题
      • 1)为什么需要 Elasticsearch?MySQL 不行吗?
      • 2)SQL检索的问题:
      • 3)ES检索快的原理
  • 2.分布式开发的好处与坏处

ES的优势及分布式开发的好处

1.ES的优势

1.1 优势概述

  • 支持多种数据类型,非结构化,数值,地理信息。
  • 简单的 RESTful API,天生的兼容多语言开发。
  • 提供更丰富的分词器,支持热点词汇查询。
  • 近实时查询,Elasticsearch 每隔 1s 把数据存储至系统缓存中,且使用倒排索引提高检索效率。
  • 支持相关性搜索,可以根据条件对结果进行打分。
  • 天然分布式存储,使用分片支持更大的数据量。

1.2 相关问题

1)为什么需要 Elasticsearch?MySQL 不行吗?

  • MySQL 也可以但不擅长

  • 传统关系型数据库(如 MySQL )在大数据量下查询效率低下, 模糊匹配有可能导致全表扫描。

  • MySQL 全文索引只支持 CHAR , VARCHAR 或者 TEXT 字段类型,不支持分词器。

2)SQL检索的问题:

  1. 慢:全表扫描
  2. 结果有限:搜索“明月",也希望看到"明","月"的结果…
  3. 无法得到文档与搜索条件的相关性

3)ES检索快的原理

将磁盘里的东西尽量搬进内存,减少磁盘随机读取次数 (同时也利用磁盘顺序读特性),结合各种压缩算法,用及其苛刻的态度使用内存。精打细算每一块内存、磁盘空间、用诡谲的位运算加快处理速度。

  • 为了能够快速定位到目标文档,ES 使用倒排索引技术来优化搜索速度,虽然空间消耗比较大,但是搜索性能提高十分显著。
  • 为了能够在数量巨大的 terms 中快速定位到某一个 term,同时节约对内存的使用和减少磁盘 io 的读取,lucene 使用 “term index -> term dictionary -> postings list” 的倒排索引结构,通过 FST 压缩放入内存,进一步提高搜索效率。
  • 为了减少 postings list 的磁盘消耗,lucene 使用了 FoR (Frame of Reference)技术压缩,带来的压缩效果十分明显。
  • ES 的 filter 语句采用了 Roaring Bitmap 技术来缓存搜索结果,保证高频 filter 查询速度的同时降低存储空间消耗。
  • 在联合查询时,在有 filter cache 的情况下,会直接利用位图的原生特性快速求交并集得到联合查询结果,否则使用 skip list 对多个 postings list 求交并集,跳过遍历成本并且节省部分数据的解压缩 cpu 成本。

2.分布式开发的好处与坏处

好处:

1、增大系统容量。我们的业务量越来越大,而要能应对越来越大的业务量,一台机器的性能已经无法满足了,我们需要多台机器才能应对大规模的应用场景。所以,我们需要垂直或是水平拆分业务系统,让其变成一个分布式的架构。

2、加强系统可用。我们的业务越来越关键,需要提高整个系统架构的可用性,这就意味着架构中不能存在单点故障。这样,整个系统不会因为一台机器出故障而导致整体不可用。所以,需要通过分布式架构来冗余系统以消除单点故障,从而提高系统的可用性。

3、因为模块化,所以系统模块重用度更高

4、因为软件服务模块被拆分,开发和发布速度可以并行而变得更快

5、系统扩展性更高

6、团队协作流程也会得到改善

坏处:

1、架构设计变得复杂(尤其是其中的分布式事务)

2、部署单个服务会比较快,但是如果一次部署需要多个服务,部署会变得复杂

3、系统的吞吐量会变大,但是响应时间会变长

4、运维复杂度会因为服务变多而变得很复杂

5、架构复杂导致学习曲线变大

6、测试和查错的复杂度增大

7、技术可以很多样,这会带来维护和运维的复杂度

8、管理分布式系统中的服务和调度变得困难和复杂

资料来源:

1、Elasticsearch为什么搜索这么快 - 知乎 (zhihu.com)

2、分布式优缺点_分布式的优点-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/97410.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

09.selenium入门

Selenium采集数据 ​ Selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),[Mozilla Chrome](https://baike.baidu.com/item/Mozilla Chrome/3504923),Safari,Google Chrome,Ope…

1200*C. Challenging Cliffs(模拟构造贪心)

Problem - 1537C - Codeforces Challenging Cliffs - 洛谷 解析: 排序数组,然后找出间隔最短的两个相邻的数 a,b,c,d,e,f (假设b,c为差最小的两个数)。 然后…

BUGKU-simple_SSTI_1漏洞注入

SSTI漏洞注入 SSTI全称Server side template injection.服务端模板注入这节课主要讲flask的模板注入.flask会把类似于 的变量当做参数来渲染并填充到web页面,如果该参数可控并被后台解析则有可能被注入恶意代码导致注入漏洞请注意 模板注入只会存在于二次渲染中,无二次渲染不会…

FPGA 芯片点亮标准?

芯片设计完成,给到工厂制造,封装后回来,要经过最重要的一个点亮的环节,你知道什么叫做点亮吗? 其实,什么样叫做点亮,每家公司有每家的标准,本着自已不为难自已的原则,一…

代码随想录二刷day55

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、力扣392. 判断子序列二、力扣115. 不同的子序列 前言 一、力扣392. 判断子序列 class Solution {public boolean isSubsequence(String s, String t) {int…

Kotlin中的泛型理解与应用

前言 泛型是一种在编程中用于增加代码的灵活性和重用性的概念。它允许我们编写可以在多种类型上工作的通用代码,而不需要为每种类型都编写不同的代码。 泛型应用 在Kotlin中,泛型可以应用于类、函数和接口等。下面是一些关于泛型在Kotlin中的理解和示例…

详解TCP三次握手(建立连接)和四次握手(释放连接)

TCP是是一个面向连接的协议,无论哪一方发送数据之前,都必须在双方之间建立一条连接。 一、建立连接 建立TCP连接时,要经历这样的流程: ① 请求端(通常称为客户)发送一个SYN段指明客户打算连接的服务器的端口,以及初始…

【kubernetes】k8s中的选主机制

leader-election选主机制 1 为什么需要leader-election? 在集群中存在某种业务场景,一批相同功能的进程同时运行,但是同一时刻,只能有一个工作,只有当正在工作的进程异常时,才会由另一个进程进行接管。这…

git全局与单仓库的密码管理

概要 在使用git时,有一个默认的全局配置,每个仓库也有自己的配置,在使用时常常傻傻分不清楚,现在进行一个简单的整理记录,一般情况下全局配置中的git账号和邮箱通常设置成自己的,其他仓库再根据项目需要进…

发现很多人分不清 jwt session token 的区别?

1. JWT(JSON Web Token) 1.1 什么是JWT? JWT,全称为JSON Web Token,是一种用于在网络上安全传输信息的开放标准。它的设计初衷是用于跨域通信,在不同域之间传递声明性信息。JWT是一种自包含的令牌&#x…

猜数字游戏(Python)

一、猜数字游戏是一个古老的密码破译类、益智类小游戏,通常由两个人参与,一个人设置一个数字,一个人猜数字,当猜数字的人说出一个数字,由出数字的人告知是否猜中:若猜测的数字大于设置的数字,出…

《软件方法(下)》第8章2023版连载(05)关于实体类

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 8.2 建模步骤C-1 识别类和属性 8.2.2 三种分析类 8.2.2.2 关于边界类 边界类的责任是接受输入、提供输出以及做简单的过滤。 图8-20中提到边界类的映射方法——每个有接口的外系统…

C#WPF标记扩展应用实例

本文介绍C#WPF标记扩展应用实例 一、标记扩展 标记扩展是一个 XAML 语言概念。 用于提供特性语法的值时,大括号({ 和 })表示标记扩展用法。 此用法指示 XAML 处理不要像通常那样将特性值视为文本字符串或者可转换为字符串的值。就是类似于值用变量的意思。 WPF 应用编程中…

sheng的学习笔记-【中文】【吴恩达课后测验】Course 1 - 神经网络和深度学习 - 第一周测验

课程1_第1周_测验题 目录:目录 第一题 1.“人工智能是新电力” 这个比喻指的是什么? A. 【  】人工智能为我们的家庭和办公室的个人设备供电,类似于电力。 B. 【  】通过“智能电网”,人工智能正在传递新一波的电力。 C. …

报考浙江工商大学2024年工商管理硕士(MBA)联考指南

1. 预报名时间:2023年9月24日-27日每天09:00-22:00 2. 正式报名时间:2023年10月8日-25日每天09:00-22:00 3. 浙江省网上确认(现场确认)时间:2023年10月31日-11月4日17&…

cvpr24写作模板pdfLaTex编译器注意点小结

文章目录 1 更改作者显示 Anonymous CVPR submission2 \label标签3 换行符// 与换列符&4 \medskip5 首行缩进6 插入图片6.1 单幅图片6.2 并排显示\hfill Reference https://cvpr.thecvf.com/Conferences/2024 1 更改作者显示 Anonymous CVPR submission 这一行开头加上% …

超全整理,Jmeter接口性能测试-Beanshell调用jar包加密(详细)

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 1、添加beanshell…

【2023集创赛】平头哥杯一等奖作品:基于无剑100开源SoC平台构建双核TEE安全系统

本文为2023年第七届全国大学生集成电路创新创业大赛(“集创赛”)平头哥杯一等奖作品分享,参加极术社区的【有奖征集】分享你的2023集创赛作品,秀出作品风采,分享2023集创赛作品扩大影响力,更有丰富电子礼品…

WordPress的SMTP服务失效的解决

文章首发见博客:https://mwhls.top/4832.html。 无图/格式错误/后续更新请见首发页。 更多更新请到mwhls.top查看 欢迎留言提问或批评建议,私信不回。 场景 已配置好的SMTP,在网站迁移前正常,迁移后无法使用。更换163与QQ的授权码…

辅助寄存器是干什么用的

目录 请问CPU 的 MREQ 引脚和 IORQ 引脚分别是干什么用的 那这里的引脚是什么含义呢? 程序是指令和数据的集合 辅助寄存器是干什么用的 寄存器的用途取决于它的类型 PC 寄存器也叫作“程序指针”,存储着指向 CPU 接下来 要执行的指令的地址。PC 寄存…