当前位置: 首页 > news >正文

做网站视频手机/百度推广哪种效果好

做网站视频手机,百度推广哪种效果好,js开发手机app,大连 网站制作近实时搜索的 filesystem cache 与 事务日志 Translog 本文主要想讨论一下,Elasticsearch 的近实时搜索,而在聊这个之前,先普及一下 ES 的数据和索引存储 文件和索引数据概述 Elasticsearch 是一个分布式的文档存储。Elasticsearch 不是采…

近实时搜索的 filesystem cache 与 事务日志 Translog

本文主要想讨论一下,Elasticsearch 的近实时搜索,而在聊这个之前,先普及一下 ES 的数据和索引存储

文件和索引数据概述

Elasticsearch 是一个分布式的文档存储。Elasticsearch 不是采用 通常数据库列式数据行 存储的存储形式。

而是存储 已序列化的 JSON 结构 的复杂数据结构。当集群中有多个 Elasticsearch 节点时,数据将分布在整个集群中,并且每个节点都可以对其进行快速访问。

ES 在存储文档后将可以近乎实时地索引并可以完全搜索 – 1 秒内

Elasticsearch 使用了一种称之为 倒排索引 的索引结构(倒排索引是词典 ( Term Dictionary )文档列表 ( Postings List ) 的映射关系),该索引结构可以支持非常快速的全文搜索,倒排索引列出了任何文档中出现的不同的单词,并标识了每个单词出现的所有文档。

索引 (index) 可以认为是文档的优化集合,文档 (document) 是字段的集合,字段 (field) 是包含数据的键值对。

默认情况下,Elasticsearch 索引每个字段的所有数据,并且每个字段都有专用的优化数据结构。如文本字段存储在倒排索引中,而数字类型和地理字段存储在 BKD 树中

近实时的搜索

名词解释

Commit point 提交点 标识提交到磁盘中的 segment

per-segment search 每段搜索 segment 类似于 inverted index 倒排索引 Elasticsearch 所基于的 Java 库 Lucene 引入了每段搜索的概念

Lucene 中的 index 索引: 多个 segment 段的集合 + 一个 commit point 提交点

In-memory buffer

内存缓冲区,当你写一条数据时会先写入 memory buffer 同时写入 translog (后文会提)。此时的写入并不能搜索,直到 buffer 满,或者到达周期触发 refresh ,此时会将 memory buffer 中改动移到 文件系统缓存 即 filesystem cache ,此时可被搜索但仍在内存中。

filesystem cache:

在 Elasticsearch 和 磁盘中间的是 文件系统缓存 filesystem cache。新的 segment 会写入到 filesystem cache (这是一个轻量级操作),然后才 刷新 flush 到磁盘 (这个操作很昂贵),但是 segment 在提交到缓存时就可以被打开和写入了,和其他写入磁盘的文档一样。

Luence 允许打开和写入新的段,使他们包含的文档对搜索可见,而无需执行完整的提交。这是一个比提交到磁盘更轻量级的过程,可以经常执行且不影响性能。

在 commit 提交(写入磁盘)之后,新的 segment 将被添加到 commit point 并且会清空 In-memory buffer

图 1. 内存缓冲区中有新文档的 Lucene 索引
在这里插入图片描述

图 2. 将缓冲区内容写入可搜索但尚未提交的段

在这里插入图片描述

在 ES 中 这个写入和打开新的 segment 的过程称之为 刷新 refresh。刷新可以使得自上次刷新以来所有的操作都可以用于搜索。

以下方式可以触发刷新

  • 等待刷新间隔
  • 设置?refresh选项
  • 使用Refresh API显式完成刷新 ( POST _refresh)

默认情况下 Elasticsearch 每秒刷新,但仅在 30 秒内收到一个或者多个请求的索引上。这也就是为什么是 近乎实时的搜索

引出问题:

Elasticsearch 虽然引入 filesystem cache 加快了可实时搜索的速度,但也引入了一个问题,数据不是实时写入磁盘的,这就会导致在 commit 之前,如果服务出现问题 filesystem cache 中的数据会丢失的问题。为此引入了 Translog

Translog 事务日志

Lucene 提交是一个昂贵的操作,无法对每个单独的操作单独执行,所以引入了 Translog 事务日志,每个分片副本将操作记录写入 Translog。所有索引的写入和删除操作在 Luence 内部处理之后确认之前被写入 Translog。这样如果发生崩溃,则在分片恢复时已确认但未提交写入磁盘的数据将从 Translog 中进行恢复。

Elasticsearch 的 flush 操作会执行 commit 提交 和 新的 Translog 生成,刷新是后台自动执行的,以确保 Translog 不会太大而使得恢复需要相当长的时间进行重放。

Translog 的持久化设置

Translog 仅在 fsync 编辑提交时才会持久化到磁盘。

index.translog.durability 用于控制持久化

request (默认的)fsync 在每次请求后都提交。如果发生故障,所有确认的写入都已提交到磁盘。

asyncfsync并在后台提交每个sync_interval. 如果发生故障,自上次自动提交以来所有确认的写入都将被丢弃。

index.translog.sync_interval

无论写入操作如何,translog 多久被fsync写入磁盘并提交一次。默认为5s. 小于的值100ms是不允许的。

index.translog.flush_threshold_size

Translog 存储所有尚未提交的操作,如果这中间发生故障,则需要通过 Translog 进行重放以便恢复数据。然而如果如果操作过多会导致重放时间过长,此配置用于控制存储操作的大小,默认为 512 M ,如果达到该配置数值,则会进行 flush

总结 Flush

flush 操作会进行 commit,并清除 translog。

在新版的 ES 中仅当 translog 达到阈值(默认 512 M 可配置)会进行 flush ,即仅此时会将 filesystem cache 中的改动持久化到磁盘。

当然你也可以手动调用强制刷新

参考官方文档:
index-modules-translog

http://www.lbrq.cn/news/1443835.html

相关文章:

  • 软件测试能干一辈子吗/武汉seo优化服务
  • seo自学教程/广州seo运营
  • 长沙网站开发方案/西安百度快照优化
  • 为什么网站建设要将access数据库文件变成asa/搜索引擎优化作业
  • 拓网手机版网站管理系统/网络搭建的基本流程
  • iview做的网站/怎么在百度上做推广
  • 丽水网站建设报价/汕头seo快速排名
  • 电商网站建设包括哪些内容/seo常用工具网站
  • 杭州城乡建设委员会的网站/怎么在百度制作自己的网站
  • 吉林手机版建站系统价格/杭州网站建设 seo
  • 网站域名解释怎么做/石家庄seo排名外包
  • 优化合作平台/seo咨询邵阳
  • 起名网站是怎么做的/天津百度关键词排名
  • 代理做减肥网站/百度seo关键词排名查询
  • 深圳做网站制作/网站查询域名入口
  • 南昌企业网站设计/全网营销推广公司
  • 成都网站建设十强企业/关键词在线查询
  • 网站开发框架具体使用方法/淘宝关键词指数查询
  • 深圳网站开发专业团队/石家庄网络营销
  • 深圳的建站公司/自己开网站怎么开
  • 西安网站建设设计的好公司/磁力链
  • 网站背景图片怎么做/百度无锡营销中心
  • 做国际交友网站翻译/整合营销经典案例
  • phpmysql网站开发案例/网络营销的三种方式
  • 国外做黄漫的网站/地推一手项目平台
  • 做社交网站开发/怎样无货源开网店
  • 网站上传好了如何做定向/搜索引擎优化方法有哪些
  • 给网站写教案做课件一节课多少钱/公司网站设计要多少钱
  • 如何防止php网站被挂马/厦门seo
  • 已有网站如何做直播/黑帽seo寄生虫
  • React (react-amap)高德地图使用(加标记、缩放、缩略图)
  • 支持任意 MCP 协议的客户端
  • Pytest项目_day11(fixture、conftest)
  • Spring Boot文件上传功能实现详解
  • 基于ECharts的智慧社区数据可视化
  • 字节:计算机存储单位