JAVA问答12

简介: JAVA问答12

7、Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法

面试官:想了解对 ES 集群的运维能力。

解答

1、关闭缓存 swap;

2、堆内存设置为:Min(节点内存/2, 32GB);

3、设置最大文件句柄数;

4、线程池+队列大小根据业务需要做调整;

5、磁盘存储 raid 方式——存储有条件使用 RAID10,增加单节点性能以及避免单

节点存储故障。

8、lucence 内部结构是什么?

面试官:想了解你的知识面的广度和深度。

解答

第 88 页 共 485 页Lucene 是有索引和搜索的两个过程,包含索引创建,索引,搜索三个要点。可以

基于这个脉络展开一些。

最近面试一些公司,被问到的关于 Elasticsearch 和搜索引擎相关的问题,以及自

己总结的回答。

9、Elasticsearch 是如何实现 Master 选举的?

1、Elasticsearch 的选主是 ZenDiscovery 模块负责的,主要包含 Ping(节点之

间通过这个 RPC 来发现彼此)和 Unicast(单播模块包含一个主机列表以控制哪

些节点需要 ping 通)这两部分;

第 89 页 共 485 页2、对所有可以成为 master 的节点(node.master: true)根据 nodeId 字典排

序,每次选举每个节点都把自己所知道节点排一次序,然后选出第一个(第 0 位)

节点,暂且认为它是 master 节点。

3、如果对某个节点的投票数达到一定的值(可以成为 master 节点数 n/2+1)并

且该节点自己也选举自己,那这个节点就是 master。否则重新选举一直到满足上

述条件。

4、补充:master 节点的职责主要包括集群、节点和索引的管理,不负责文档级

别的管理;data 节点可以关闭 http 功能*。

10、Elasticsearch 中的节点(比如共 20 个),其中的 10 个

选了一个 master,另外 10 个选了另一个 master,怎么办?

1、当集群 master 候选数量不小于 3 个时,可以通过设置最少投票通过数量

discovery.zen.minimum_master_nodes)超过所有候选节点一半以上来解

决脑裂问题;

2、当候选数量为两个时,只能修改为唯一的一个 master 候选,其他作为 data

节点,避免脑裂问题。

11、客户端在和集群连接时,如何选择特定的节点执行请求的?

1、TransportClient 利用 transport 模块远程连接一个 elasticsearch 集群。它并

不加入到集群中,只是简单的获得一个或者多个初始化的 transport 地址,并以

的方式与这些地址进行通信。

12、详细描述一下 Elasticsearch 索引文档的过程。

第 90 页 共 485 页协调节点默认使用文档 ID 参与计算(也支持通过 routing),以便为路由提供合

适的分片。

shard = hash(document_id) % (num_of_primary_shards)

1、当分片所在的节点接收到来自协调节点的请求后,会将请求写入到 Memory

Buffer,然后定时(默认是每隔 1 秒)写入到 Filesystem Cache,这个从 Momery

Buffer 到 Filesystem Cache 的过程就叫做 refresh;

2、当然在某些情况下,存在 Momery Buffer 和 Filesystem Cache 的数据可能会

丢失,ES 是通过 translog 的机制来保证数据的可靠性的。其实现机制是接收到请

求后,同时也会写入到 translog 中,当 Filesystem cache 中的数据写入到磁盘中

时,才会清除掉,这个过程叫做 flush;

3、在 flush 过程中,内存中的缓冲将被清除,内容被写入一个新段,段的 fsync

将创建一个新的提交点,并将内容刷新到磁盘,旧的 translog 将被删除并开始一

个新的 translog。

4、flush 触发的时机是定时触发(默认 30 分钟)或者 translog 变得太大(默认

为 512M)时;

第 91 页 共 485 页补充:关于 Lucene 的 Segement:

1、Lucene 索引是由多个段组成,段本身是一个功能齐全的倒排索引。

2、段是不可变的,允许 Lucene 将新的文档增量地添加到索引中,而不用从头重

建索引。

3、对于每一个搜索请求而言,索引中的所有段都会被搜索,并且每个段会消耗

CPU 的时钟周、文件句柄和内存。这意味着段的数量越多,搜索性能会越低。

4、为了解决这个问题,Elasticsearch 会合并小段到一个较大的段,提交新的合并

段到磁盘,并删除那些旧的小段。

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
目录
相关文章
|
存储 安全 Java
Java 集合(List、Set、Map 等)相关问答归纳再整理
HashMap 中使用键对象来计算 hashcode 值 HashSet 使用成员对象来计算 hashcode 值,对于两个对象来说hashcode 可能相同,所以 equals() 方法用来判断对象的相等性,如果两个对象不同的话,那么返回 false。 HashMap 比较快,因为是使用唯一的键来获取对象,HashSet 较 HashMap 来说比较慢。 4.1.3 HashMap 与 TreeMap
217 2
|
移动开发 小程序 Java
良心分享:基于Java+SpringBoot+Netty+WebSocket+Uniapp轻松搭建在线互动问答程序
本文将详细介绍如何基于你自己的开源项目搭建一个在线互动问答程序,包括微信小程序和H5网页版。 该项目服务端主要使用了Java + Spring Boot + Netty + WebSocket等技术栈,聊天客户端使用的是UniApp来轻松搭建微信小程序和H5网页端。
426 1
|
存储 SQL 缓存
JAVA问答17
JAVA问答17
167 0
|
存储 SQL 缓存
JAVA问答16
JAVA问答16
273 0
|
存储 搜索推荐 Java
JAVA问答15
JAVA问答15
258 0
|
缓存 自然语言处理 监控
JAVA问答14
JAVA问答14
205 0
|
存储 固态存储 Java
JAVA问答13
JAVA问答13
344 0
|
存储 自然语言处理 运维
JAVA问答11
JAVA问答11
183 0
|
存储 Dubbo 固态存储
JAVA问答10
JAVA问答10
196 0
|
设计模式 缓存 Dubbo
JAVA问答9
JAVA问答9
245 0