| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Elasticsearch数据写入(写入流程) -> 正文阅读 |
|
[大数据]Elasticsearch数据写入(写入流程) |
????????Elasticsearch采用多Shard方式,通过配置routing规则将数据分成多个数据子集,每个数据子集提供独立的索引和搜索功能。当写入文档的时候,根据routing规则,将文档发送给特定Shard中建立索引。这样就能实现分布式了。 以下是Elasticsearch单个文档的写入简单流程。 1、数据写入的简单流程以下是写单个文档所需的步骤: 1、客户端向 NODE I 发送写请求。 2、检查Active的Shard数。 3、NODEI 使用文档 ID 来确定文档属于分片 0,通过集群状态中的内容路由表信息获知分片 0 的主分片位于 NODE3 ,因此请求被转发到 NODE3 上。 4、NODE3 上的主分片执行写操作 。 如果写入成功,则它将请求并行转发到 NODE I 和 NODE2 的副分片上,等待返回结果 。当所有的副分片都报告成功, NODE3 将向协调节点报告 成功,协调节点再向客户端报告成功 。 5、在客户端收到成功响应时 ,意味着写操作已经在主分片和所有副分片都执行完成。 2、索引与分片的关系分片是一个底层的 工作单元,一个分片是一个 Lucene 的实例,它本身就是一个完整的搜索引擎,文档不会跨分片存储。 索引与分片的关系图: 3、数据写入详细流程1、将document写入内存buffer缓存中,同时写入到translog中 2、每隔一秒钟,buffer中的数据被写入新的segment file, 3、同时进入os cache,此时index segment file被打开并供search使用, 4、buffer被清空 5、重复1~3,新的segment不断添加,buffer不断被清空,而translog中的数据不断累加 6、当translog长度达到一定程度的时候,commit操作发生 ? (6-1)buffer中的所有数据写入一个新的segment,并写入os cache,打开供使用 ? (6-2)buffer被清空 ? (6-3)一个commit ponit被写入磁盘,标明了所有的index segment ? (6-4)filesystem cache中的所有index segment file缓存数据,被fsync强行刷到磁盘上 7、现有的translog被清空,创建一个新的translog |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 8:55:53- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |