【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检索的问题:
- 慢:全表扫描
- 结果有限:搜索“明月",也希望看到"明","月"的结果…
- 无法得到文档与搜索条件的相关性
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博客
相关文章:
【ES的优势和原理及分布式开发的好处与坏处】
文章目录 ES的优势及分布式开发的好处1.ES的优势1.1 优势概述1.2 相关问题1)为什么需要 Elasticsearch?MySQL 不行吗?2)SQL检索的问题:3)ES检索快的原理 2.分布式开发的好处与坏处 ES的优势及分布式开发的好…...
Autosar诊断实战系列23-CanTp半/全双工及相关工程问题思考
本文框架 前言1. CanTp半/全双工基本介绍1.1 差异比较1.2 不同模式下可能发生场景分析1.2.1 当CanTp正在发送1.2.2 当CanTp正在接收2. 相关工程问题思考前言 在本系列笔者将结合工作中对诊断实战部分的应用经验进一步介绍常用UDS服务的进一步探讨及开发中注意事项, Dem/Dcm/C…...
【Pandas】数据分组groupby
本文目标: 应用groupby 进行分组对分组数据进行聚合,转换和过滤应用自定义函数处理分组之后的数据 文章目录 1. 数据聚合1.1 单变量分组聚合1.2 Pandas内置聚合方法1.3 聚合方法使用Numpy的聚合方法自定义方法同时计算多种特征向agg/aggregate传入字典 2. 数据转换…...
【图像处理GIU】图像分割(Matlab代码实现)
💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...
Java中的锁与锁优化技术
文章目录 自旋锁与自适应自旋锁消除锁粗化轻量级锁偏向锁重量级锁 自旋锁与自适应自旋 自旋锁是一种锁的实现机制,其核心思想是当一个线程尝试获取锁时,如果锁已经被其他线程持有,那么这个线程会在一个循环中不断地检查锁是否被释放…...
布局与打包
属性栏直接输入值,比代码更直观方便。 打包:...
UVa11324 - The Largest Clique
Online Judge 题目大意:有一张n个点m条边的图,现对于每一个点u,建立一条边连接它和所有它能到达的点,问满足所有点之间都有边的分量的大小最大是多少 0<n<1000;0<m<50000 思路:根据建新图的规则可知&am…...
【Linux】TCP的服务端(守护进程) + 客户端
文章目录 📖 前言1. 服务端基本结构1.1 类成员变量:1.2 头文件1.3 初始化:1.3 - 1 全双工与半双工1.3 - 2 inet_aton1.3 - 3 listen 2. 服务端运行接口2.1 accept:2.2 服务接口: 3. 客户端3.1 connect:3.2 …...
1.7. 找出数组的第 K 大和原理及C++实现
题目 给你一个整数数组 nums 和一个 正 整数 k 。你可以选择数组的任一 子序列 并且对其全部元素求和。 数组的 第 k 大和 定义为:可以获得的第 k 个 最大 子序列和(子序列和允许出现重复) 返回数组的 第 k 大和 。 子序列是一个可以由其他数…...
基于微信小程序的付费自习室
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝30W、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 文章目录 1 简介2 技术栈3 需求分析3.1用户需求分析3.1.1 学生用户3.1.3 管理员用户 4 数据库设计4.4.1 E…...
纪念在CSDN的2048天
时间真快~...
云原生Kubernetes:简化K8S应用部署工具Helm
目录 一、理论 1.HELM 2.部署HELM2 3.部署HELM3 二、实验 1.部署 HELM2 2.部署HELM3 三、问题 1.api版本过期 2.helm初始化报错 3.pod状态为ImagePullBackOff 4.helm 命令显示 no repositories to show 的错误 5.Helm安装报错 6.git命令报错 7.CentOS 7 下git c…...
qml保姆级教程五:视图组件
💂 个人主页:pp不会算法v 🤟 版权: 本文由【pp不会算法v】原创、在CSDN首发、需要转载请联系博主 💬 如果文章对你有帮助、欢迎关注、点赞、收藏(一键三连)和订阅专栏哦 QML系列教程 QML教程一:布局组件 文章目录 列表视图ListVi…...
2310d编译不过
struct A {this(int[] data) safe { a data; }int[] a; }void main() safe {int[3] test [1, 2, 3];A a A(test); }应该给data参数加上return scope.或让构造器为模板参数来推导,否则,构造器可以把栈分配切片赋值给全局变量....
CleanMyMac X4.14.1最新版本下载
CleanMyMac X是一个功能强大的Mac清理软件,它的设计理念是提供多个模块,包括垃圾清理、安全保护、速度优化、应用程序管理和文档管理粉碎等,以满足用户的不同需求。软件的界面简洁直观,让用户能够轻松进行日常的清理操作。 使用C…...
芯驰D9评测(3)--建立开发环境
1. 建立交叉编译链接环境 官网下载的SDK包中就有交叉工具链,米尔提供的这个 SDK 中除了包含各种源代码外还提供了必要的交叉工具链,可以直接用于编译应用程序等。 用户可以直接使用次交叉编译工具链来建立一个独立的开发环境,可单独编译…...
阿里云服务器IP地址查询方法(公网IP和私网IP)
阿里云服务器IP地址在哪查看?在云服务器ECS管理控制台即可查看,阿里云服务器IP地址包括公网IP和私有IP地址,阿里云百科分享阿里云服务器IP地址查询方法: 目录 阿里云服务器IP地址查询 阿里云服务器IP地址查询 1、登录到阿里云服…...
第47节——使用bindActionCreators封装actions模块
一、什么是action creators 1、概念 在Redux中,Action Creators是一种函数,它用于创建一个描述应用程序状态变化的action对象。Action对象是一个普通JavaScript对象,它包含一个描述action类型的字符串属性(通常称为“type”&…...
QT、c/c++通过宏自动判断平台
QT、c/c通过宏自动判断平台 Chapter1 QT、c/c通过宏自动判断平台 Chapter1 QT、c/c通过宏自动判断平台 原文链接:https://blog.csdn.net/qq_32348883/article/details/123063830 背景 为了更好的进行跨平台移植、编译、调试。 具体操作 宏操作 #ifdef _WIN32//d…...
对比表:阿里云轻量应用服务器和服务器性能差异
阿里云服务器ECS和轻量应用服务器有什么区别?轻量和ECS优缺点对比,云服务器ECS是明星级云产品,适合企业专业级的使用场景,轻量应用服务器是在ECS的基础上推出的轻量级云服务器,适合个人开发者单机应用访问量不高的网站…...
reverse-shell工作原理深度解析:智能检测与多语言payload实现
reverse-shell工作原理深度解析:智能检测与多语言payload实现 【免费下载链接】reverse-shell Reverse Shell as a Service 项目地址: https://gitcode.com/gh_mirrors/re/reverse-shell reverse-shell作为一种强大的网络安全工具,其核心功能是让…...
【信息科学与工程学】【物理/化学科学和工程技术】知识体系018 第十八篇 界面科学01 界面物理
界面科学知识体系分级分类列表 概述 界面科学是研究两相之间界面(表面)现象、性质、过程和规律的交叉学科。本列表系统整理了界面科学领域的核心概念、理论、技术和应用,涵盖从基础理论到前沿应用的完整知识体系。 界面科学知识体系分类表格...
SQL与数据库开发(四):CASE WHEN 与“行转列/列转行”花式玩法
在企业级应用的开发中,后端程序员和报表工程师往往面临着一种天然的矛盾:“数据库的存储格式”与“前端的展示格式”是完全不匹配的。 关系型数据库最喜欢“瘦长”的表(不断往下插入新行),而业务方和老板最喜欢看的是…...
Next.js 页面和路由
Next.js 页面与路由学习笔记 Next.js 13 的 App Router 基于文件系统路由,通过文件夹和文件的命名约定自动生成路由,无需手动配置路由表。 1. 基本路由规则 1.1 核心约定 文件作用是否必须page.tsx定义路由的 UI(页面内容)是&a…...
Java版Dify SDK:简化LLM应用开发,提升Java生态集成效率
1. 项目概述:为什么我们需要一个Java版的Dify SDK?如果你正在用Java构建一个需要集成大语言模型能力的应用,比如一个智能客服系统、一个文档分析工具,或者一个创意写作助手,你很可能听说过Dify。Dify作为一个开源的LLM…...
0301国产光刻机突围全景:双工件台+纳米级精密运动控制 1. 双工件台工作逻辑
国产光刻机突围全景:双工件台纳米级精密运动控制 第三卷 双工件台纳米级精密运动控制(A级 中期集中攻坚) 1. 双工件台工作逻辑(喂饭级实操版带量化参数企业单字脱敏) 一、核心定义:先搞懂“双工件台”的本质…...
Java版Dify SDK:构建AI应用的高效开发指南
1. 项目概述:为什么我们需要一个Java版的Dify SDK?如果你正在用Java构建AI应用,并且已经接触过Dify这个开源的LLM应用开发平台,那你大概率会遇到一个痛点:官方SDK主要面向Python和JavaScript生态。当你想在Spring Boot…...
系统设计:四叉树与 GeoHash
原文:towardsdatascience.com/system-design-quadtrees-geohash-5b896b975262 https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/5979ffdcbfe489e84bc8f684cde2911e.png 简介 Google Maps 和 Uber 只是众多处理地理数据的最流行…...
OpenHarmony.Avalonia 归档事件对中国自主软件生态的影响--信任的坍塌与生态的异化
026年5月8日,中国开源技术社区发生了一起具有里程碑意义的争议性事件:由开发者“布布”(Bubu)主导的 OpenHarmony-NET/OpenHarmony.Avalonia 项目正式宣告停止更新并进入归档状态。这一决定不仅标志着一个由民间力量驱动的底层基础…...
5分钟完成Word转LaTeX:docx2tex高效转换工具全攻略
5分钟完成Word转LaTeX:docx2tex高效转换工具全攻略 【免费下载链接】docx2tex Converts Microsoft Word docx to LaTeX 项目地址: https://gitcode.com/gh_mirrors/do/docx2tex 你是否正在为Word文档转换为LaTeX格式而烦恼?手动调整格式、重新输入…...
