网站首页 > 资源文章 正文
前言
前面我们介绍了垂直化搜索引擎三之阅读平台搜索实战,给大家演示了,在小说平台中如何使用ES,来提升用户的搜索体验。这节课让我们快速理解下ES是如何写入数据的?
基础知识
我们知道,ES的数据是分布式存储的。那么当一个客户端请求过来的时候,我们要把数据写到哪台服务器呢?如何才能把数据写到正确的服务器当中。
在解决问题之前,让我们先了解下ES的节点类型,节点根据主要职能,大致有三种类型节点: master主节点、data数据节点、协调节点coordinating node。每个节点都能设置三个类中的一个
master节点
默认情况下任何节点都可以成为master节点。实际上master节点仅有一个, 但是可以设置多个候选的master节点。在节点的配置中设置node.master=true即可将节点设为master主节点。在当前master节点意外退出后, 集群会在候选节点中重新选举一个master主节点。
master节点主要负责创建索引、节点健康状态监控、节点上下线等工作
data数据节点
数据节点负责保存数据、执行数据相关操作。对节点的CPU、内存和IO要求较高。在节点的配置中设置node.data=true, node.master=false即可将节点设为数据节点。数据读写流程只和数据节点交互。
协调节点coordinating node
协调节点用于客户端请求集群时使用,默认情况下任意节点都能成为协调节点, 协调节点会在接受请求的时候根据情况转发给其他节点,并汇总结果返回给客户端,在节点的配置中设置node.data=false, node.master=false即可将节点设为协调节点。 协调节点在汇总数据时也可能需要很高CPU和内存,最好有单独协调节点。
写入流程
大体了解了ES的节点类型后,我们看看ES是如何写数据的。在写入数据之前,我们需要找到协调节点,因为我们需要通过协调节点去找到数据分片的主分片的节点。
- 客户端选择任意一个 node 发送请求过去,这个 node 就是 coordinating node (协调节点)
- coordinating node 对 document 进行路由,将请求转发给对应的 node(有 primary shard)
- 实际的 node 上的 primary shard 处理请求,然后将数据同步到 replica node
- coordinating node 等到 primary node 和所有 replica node 都执行成功之后,就返回响应结果给客户端。
底层原理
第一阶段写入内存
最开始一个写入请求进来,直接写入内存中的buffer,这样做是为了速度。这时候这份写入数据还不能被查询到。与数据写入buffer并行的是数据写入translog,这是为了提高数据的可靠性。如果这时候buffer里面的数据丢了,translog的数据可以恢复。
- translog的数据写入的是流水账结构简单速度快。它可以每次记录流水都刷盘,保证数据不丢,但是默认配置是5秒刷盘一次,这样可以提高效率。
- translog和主流程的区别类似一个银行有两个记账员,主记账员记的总账,比如记录每个用户账号里面还有多少钱,每次要和之前数据比对汇总,次记账员只记录用户干了什么。所以次记账员比较轻松,可以记更加快。如果主记账员的当月账本丢了,次记账员哪里每天做的流水还能恢复主账本。
第二阶段写入OSCache(refresh)
buffer里面的内容每隔1秒钟就生成一个segment,然后es把segment写入OSCache。OSCache是操作系统管理的,也在内存中,如果计算机正常关闭,操作系统会在完成OSCache落盘才关机,如果异常关闭OSCache 数据就会丢失。写入OSCache的数据已经可给操作系统了,已经可以读取到了。es每秒生成一个segment,所以es写入到能够读取到数据之间的延时理论最多1秒。
第三阶段写入磁盘(flush)
OSCache里面的数据并是不可靠的,如果数据丢失,可以通过translog来恢复。前面说了,写入buffer的时候同时在translog里面做了记录,所以translog里面有全部的 位于OSCache中的segment的内容。重放translog就能得到这部分数据。
translog并不能让它无限增长,所以当translog达到一定尺寸,或者一定时间(30分钟),就可以清空一下translog。translog的内容=buffer+OSCache segment。
- 第一步,把buffer里面的内容refresh成一个新的segment。
- 第二步,把OSCache里面的segment合并,并且刷盘。
- 第3步清空translog。
- 上一篇: 搜索引擎不只有百度(搜索引擎不是百度的浏览器)
- 下一篇: 彭国明:垂直搜索引擎与个性推荐有何关联
猜你喜欢
- 2024-11-06 一个垂直搜索引擎对招标信息的重要性
- 2024-11-06 SVRF希望成为一款VR内容垂直搜索引擎
- 2024-11-06 彭国明:垂直搜索引擎与个性推荐有何关联
- 2024-11-06 搜索引擎不只有百度(搜索引擎不是百度的浏览器)
- 2024-11-06 垂直化搜索引擎三之阅读平台搜索实战
- 2024-11-06 垂直搜索引擎中的用户行为数据价值解析
- 2024-11-06 一文解读垂直搜索引擎和个性化推荐的应用逻辑
- 2024-11-06 精准搜索 试试这些垂直搜索引擎(垂直搜索工具是什么)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- 电脑显示器花屏 (79)
- 403 forbidden (65)
- linux怎么查看系统版本 (54)
- 补码运算 (63)
- 缓存服务器 (61)
- 定时重启 (59)
- plsql developer (73)
- 对话框打开时命令无法执行 (61)
- excel数据透视表 (72)
- oracle认证 (56)
- 网页不能复制 (84)
- photoshop外挂滤镜 (58)
- 网页无法复制粘贴 (55)
- vmware workstation 7 1 3 (78)
- jdk 64位下载 (65)
- phpstudy 2013 (66)
- 卡通形象生成 (55)
- psd模板免费下载 (67)
- shift (58)
- localhost打不开 (58)
- 检测代理服务器设置 (55)
- frequency (66)
- indesign教程 (55)
- 运行命令大全 (61)
- ping exe (64)
本文暂时没有评论,来添加一个吧(●'◡'●)