100 微秒的操作可以变成10 毫秒。 并考虑这10 微秒的操作延迟加起来。 不难看出交换对性能有何负面影响。
11.Lucene使用大量文件。同时,Elasticsearch还使用许多套接字用于节点和HTTP客户端之间的通信。 这一切都需要足够的文件描述符。您需要将文件描述符增加到更大的值,例如64,000。
侧边栏:如何提高索引阶段的性能
1. 使用批量请求调整大小。每批次5-15 MB 的数据是一个很好的起点。
2.存储:使用SSD
3. 分段和合并:Elasticsearch的默认值为20 MB/s,这对于机械磁盘来说是一个很好的设置。如果您使用SSD,请考虑将其增加到100-200 MB/s。如果您正在进行批量导入并且根本不关心搜索,则可以完全关闭合并限制。此外,您还可以添加
将index.translog.flush_threshold_size 从默认值512 MB 设置为更大的值(例如1 GB),可以在触发刷新时在事务日志中累积更大的段。
4. 如果您不需要搜索结果接近实时的准确性,请考虑将每个索引的index.refresh_interval 更改为30 秒。
5. 如果您要执行批量导入,请考虑通过将index.number_of_replicas: 设置为0 来关闭副本。
8、lucence的内部结构是怎样的?
Lucene有两个过程:索引和搜索,其中涉及到三个重要的点:索引、索引、搜索。您可以在此背景下进行扩展。
我最近采访了几家公司,收到了有关Elasticsearch 和搜索引擎的问题,以及我自己总结的答案。
9. 现实生活场景的问题
如果我的10 个Elasticsearch 节点(例如总共20 个)选择一个主节点,而其他10 个节点选择另一个主节点会怎样?
1. 如果集群Master候选数量为3个或更多,可以通过将最小投票数(discovery.zen.minimum_master_nodes)设置为大于所有候选节点的一半来解决脑裂问题。
2、如果候选数为2,可以改为仅主候选,其他作为数据节点,避免脑裂问题。
10. 当客户端连接到集群时,如何选择特定的节点来执行请求?
TransportClient 使用传输模块远程连接到elasticsearch 集群。它不参与集群,只是简单地获取一个或多个初始化的传输地址,并以轮询的方式与这些地址进行通信。
11. 详细描述Elasticsearch中的文档索引过程。
协调节点默认使用文档ID参与计算,为路由提供合适的分片(也可以通过路由支持)。
分片=Hash(文档ID) %(主分片数量)
当分片所在的节点收到来自协调节点的请求时,它会将请求写入内存缓冲区,然后定期(默认情况下每秒)写入文件系统缓存。该进程从内存缓冲区写入文件系统缓存。文件系统缓存称为刷新。
当然,在某些情况下,内存缓冲区和文件系统缓存中的数据可能会丢失。 ES采用translog机制来保证数据的可靠性。该实现机制在收到请求后写入磁盘时会清除文件系统缓存中的数据。
在刷新过程中,内存中的缓冲区被清除,内容被写入新的段,该段的fsync 创建一个新的提交点,内容被刷新到磁盘,旧的事务日志被删除,并且将创建一个新的段。 Translog 将启动。
刷新触发时机是安排好的(默认30分钟)或者当translog变得太大时(默认512M)。
补充:关于Lucene的段:
Lucene 索引由段组成,段本身就是功能齐全的倒排索引。
由于段是不可变的,Lucene 可以逐渐向索引添加新文档,而无需从头开始重建索引。
每个搜索请求都会搜索索引中的所有段,每个段都会消耗CPU 周期、文件句柄和内存。这意味着随着段数量的增加,搜索性能会下降。
为了解决这个问题,Elasticsearch将小段合并成大段,将新合并的段提交到磁盘,并删除那些旧的小段。
12. 详细描述Elasticsearch中更新和删除文档的过程。
删除和更新也是写操作,但Elasticsearch中的文档是不可变的,因此您无法删除或修改它们以查看更改。
磁盘上的每个段都有一个对应的.del 文件。当提交删除请求时,文档实际上并未被删除,而是在.del 文件中被标记为删除。该文档仍将与查询匹配,但将从结果中排除。合并段时,del 文件中标记为删除的文档不会写入新段。
当创建新文档时,Elasticsearch 会为该文档分配一个版本号,当执行更新时,会在.del 文件中将旧版本的文档标记为删除,并将新版本的文档索引到将附上新文件。部分。旧版本的文档仍然与查询匹配,但已从结果中排除。
13. 详细描述Elasticsearch搜索过程。
1. 搜索分为两步过程执行,称为“查询然后获取”。
2. 在第一个查询阶段,查询将广播到索引中的所有分片副本(主分片或副本分片)。 每个分片在本地执行搜索,并为匹配文档构建一个size + size 的优先级队列。
PS:搜索过程中会查询文件系统缓存,但有些数据仍在内存缓冲区中,因此搜索几乎是实时发生的。
3. 每个分片将其各自优先级队列中所有文档的ID和排序值返回给协调节点。协调节点将这些值合并到自己的优先级队列中,以生成全局排序的结果列表。
4.下一步是获取阶段。协调节点识别需要检索哪些文档并向相关分片发送多个GET 请求。每个分片根据需要加载和丰富文档,并将文档返回到协调节点。检索完所有文档后,协调节点将结果返回给客户端。
5. 旁注:在对文档相关性进行评分时,“查询然后获取”搜索类型引用此分片中的数据。 DFS Query then Fetch 添加了预查询处理。术语和文档频率,这个分数更准确,但性能较低。 *
14.关于GC,使用Elasticsearch时需要注意什么?
1.转置字典索引必须在内存中并且不能被GC。您应该监控数据节点上分段内存的增长趋势。
2. 合理调整字段缓存、过滤器缓存、索引缓存、批量队列等各种缓存的大小,并根据最坏情况判断堆是否足够。您当前是否还有剩余的堆空间可以分配给其他任务?避免使用“自欺欺人”的方法,例如清除缓存以释放内存。
3. 避免返回大型结果集的搜索和聚合。需要检索大量数据的场景可以使用Scan Scroll API 来实现。
4. 集群统计信息驻留在内存中,无法水平扩展。对于非常大的集群,可以考虑将集群拆分为多个集群,并通过部落节点将它们连接起来。
5. 如果您想知道自己是否有足够的堆,您应该结合实际应用场景持续监控集群的堆使用情况。
15. 如何聚合大量数据(数亿条)?
Elasticsearch 提供的第一个近似聚合是基数度量。这提供了字段的基数,即字段的不同或唯一值的数量。它基于HLL算法。 HLL首先对输入进行哈希运算,然后根据哈希运算的位估计概率以获得基数。其特点是: 用于控制内存使用的可配置精度(精度越高意味着内存越多)。 对于小数据集的精度非常高,并且可以通过配置参数设置重复数据删除所需的固定内存使用量。无论您有数千还是数十亿的唯一值,内存使用量仅与配置的精度相关。
16、Elasticsearch如何保证并发条件下读写的一致性?
1. 通过版本号使用乐观并发控制,可以防止新版本被旧版本覆盖,并允许应用层处理某些冲突。
2. 另外,对于写操作,一致性级别支持quorum/one/all,默认为quorum。这意味着仅当大多数分片可用时才允许写入操作。然而,即使大多数可用,对副本的写入也可能由于网络或其他原因而失败,因此副本被视为失败,并在另一个节点上重建分片。
3. 对于读取操作,复制可以设置为同步(默认)。这意味着,如果将复制设置为异步,则该操作仅在主分片和副本分片都完成后才会返回。您还可以设置搜索请求参数。
_preference主要用于查询主分片以确保文档是最新版本。
17. 如何监控Elasticsearch 集群的状态?
Marvel 让您可以轻松地通过Kibana 监控Elasticsearch。实时查看集群健康状况和性能,并分析历史集群、索引和节点指标。
18、介绍电子商务搜索的整体技术架构。
19.你了解字典树吗?
常用的字典数据结构是:
Trie的核心思想是以空间换时间,对字符串使用共同的前缀,以减少查询时间开销,提高效率。它具有三个基本属性:
1、根节点不包含字符,除根节点外的每个节点只包含一个字符。
总结
各大互联网公司青睐的人力资源特点:热爱技术,技术基础扎实,积极主动,良好的团队合作精神,善于组织和思考。每个公司都非常重视高并发和高可用性技术及其基础,所以不要低估知识。面试是一个双向选择过程。如果你不带着恐惧的态度去面试,你的表现就会很差。同时,你不仅要考虑薪资,还要考虑你是否真的喜欢这家公司,是否真的有培训。其实我到目前为止写的都是我自己的总结,可能并不适用于所有人,但我想每个人在经历面试的时候都会有这样的感觉。
**我们还收集了很多公司2021年的面试知识点和各种技术点。
以下是一些截图,希望对您有所帮助。
点不包含字符,除根节点外的每个节点仅包含一个字符。
总结
各大互联网公司青睐的人力资源特点:热爱技术,技术基础扎实,积极主动,良好的团队合作精神,善于组织和思考。每个公司都非常重视高并发和高可用性技术及其基础,所以不要低估知识。面试是一个双向选择过程。如果你不带着恐惧的态度去面试,你的表现就会很差。同时,你还应该考虑的不仅仅是薪资,还要考虑你是否真的喜欢这家公司,是否真的有培训。其实我到目前为止写的都是我自己的总结,可能并不适用于所有人,但是我想每个人在经历面试的时候都会有这样的感觉。
**我们还收集了很多公司2021年的面试知识点和各种技术点。
以下是一些截图,希望对您有所帮助。
[外部链接图片正在传输中.(img-RRpxP2zX-1719184691133)]
#两大互联网公司最新通宵面试题,来自网络的1000条相关内容收集整理,供大家参考。相关信息请参见官方公告。
原创文章,作者:CSDN,如若转载,请注明出处:https://www.sudun.com/ask/91896.html