暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ES 7.x版本的一些改动

十一行 2021-07-12
681

默认自适应选择分片

在6.x及以前的版本,请求是会轮询发放给主分片和副本分片的,如果其中一个分片出现了超长的gc,那这时候响应就会很慢。6.1的时候新增了个配置项,可以让es自适应选择性能较好的分片优先查询,但该配置项是默认关闭的,在7.0里该配置项默认打开。

分片搜索空闲时跳过refresh

以前版本的数据插入,每一秒都会有refresh动作,这使得es能成为一个近实时的搜索引擎。但是当没有查询需求的时候,该动作会使得es的资源得到较大的浪费。

在es7中,如果一个分片处于搜索空闲状态(30秒内都没有查询),那么插入数据不会被refresh,直到有一个查询过来触发refresh,或者显示的触发refresh。该改动可以显著的插入索引性能。

默认单分片

往前的版本默认都是5个分片,在数据量有限的情况下,如果是日增索引,那么每天都会有5个索引,会导致索引非常的多,使得master在管理的内存上开销比较大。新版本上变成了默认1个分片。

TYPE

v6.x 版本之前 : 

一个index下面是可以创建多个type

v6.x 版本 : 

一个index下面只能创建一个type

v7.x 版本 : 

index下面不存在type,直接定义properties,包括 API 层面的。

容错机制

master选举,replica容错,数据恢复

(1)9 shard,3 node

(2)master node宕机,自动master选举,red

(3)replica容错:新master将replica提升为primary shard,yellow

(4)重启宕机node,master copy replica到该node,使用原有的shard并同步宕机后的修改,green

不知道容错机制是否有改动,这里是5.x版本的流程。

并发控制

悲观锁:关系型数据库(MySQL),上锁,只有一个线程操作

乐观锁:ES中使用的,版本号,不加锁,操作时判断版本号

_version元数据

external version:自己维护一个版本号来进行并发控制。

?version=1

?version=1&version_type=external

当version_type=external时,只有当你提供的version比es中的version大的时候,才能成功修改。

而使用es中的version的时候,只有相等的时候才能进行操作,否则会报错。

文章转载自十一行,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论