摘要: 一.引言 kafka是广泛使用的流处理组件,我们知道怎么使用它,也知道它的实现原理。但是更重要的部分是它的设计理念,即kafka设计者当时是如何考量各种方案的,了解这些,对提升我们的设计能力非常有帮助。 二.动机 我们将 Kafka 设计为一个统一平台,来处理大型公司可能拥有的所有实时数据流。 为此 阅读全文
posted @ 2023-04-23 21:34 darcy_yuan 阅读(183) 评论(0) 推荐(0) 编辑
摘要: 1.背景描述 es在本公司承载三个部分的业务,站内查询,订单数据统计,elk日志分析。 2020年团队决定对elasticsearch升级。es(elasticsearch缩写,下同)当前版本为1.x,升级到5.x版本。 5.x支持如下新特性: 支持lucene 6.x,磁盘空间少一半,索引时间少一 阅读全文
posted @ 2023-04-15 16:42 darcy_yuan 阅读(608) 评论(0) 推荐(2) 编辑
摘要: 1.一般建议 a.不要返回过大的结果集。这个建议对一般数据库都是适用的,如果要获取大量结果,可以使用search_after api,或者scroll (新版本中已经不推荐)。 b.避免大的文档。 2. 如何提高索引速度 a.使用批量请求。为了达到最好的效果,可以进行测试,递增地提高bulk的数量, 阅读全文
posted @ 2023-04-09 10:25 darcy_yuan 阅读(751) 评论(1) 推荐(1) 编辑
摘要: 最近阅读了elasticsearch的官方文档,学习了它的很多特性,发现elasticsearch和mysql有很多地方类似,也有很多地方不同。这里做一个对比,帮助大家加深对elasticsearch的理解。 特性 elasticsearch mysql 备注 场景 全文搜索,日志处理,空间数据分析 阅读全文
posted @ 2023-03-24 16:57 darcy_yuan 阅读(864) 评论(0) 推荐(1) 编辑
摘要: 1.概述 前面几篇讲述了es的许多重要的逻辑,这些逻辑都涉及到一个非常核心的类ClusterState,本文来看下ClusterState包括什么信息。 2.ClusterState 从注解中我们看到,CusterState表示整个集群的状态,其中的数据都是不可变的(除了RoutingTable), 阅读全文
posted @ 2023-02-08 20:50 darcy_yuan 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 1.概述 es(elasticsearch,下同)的选举流程相对来说比较简单,使用的bully算法,简而言之,就是谁强谁就是老大,待会儿看下怎么判定谁更强。 2.选主流程 在启动篇中我们讲解了节点启动的一些逻辑 // org.elasticsearch.node.Node // start afte 阅读全文
posted @ 2023-01-13 11:18 darcy_yuan 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 1.概述 上文我们讨论了es(elasticsearch,下同)索引流程,本文讨论es查询流程,以下是基本流程图 2.查询流程 为了方便调试代码,笔者在电脑上启动了了两个节点,创建了一个索引如下,该索引有两个分片,没有复制分片 使用postman发送如下请求: 接下来,我们看代码(本系列文章源代码版 阅读全文
posted @ 2023-01-11 11:16 darcy_yuan 阅读(723) 评论(0) 推荐(0) 编辑
摘要: 1.概览 前面我们讨论了es是如何启动,本文研究下es是如何索引文档的。 下面是启动流程图,我们按照流程图的顺序依次描述。 其中主要类的关系如下: 2. 索引流程 (primary) 我们用postman发送请求,创建一个文档 我们发送的是http请求,es也有一套http请求处理逻辑,和sprin 阅读全文
posted @ 2023-01-06 11:05 darcy_yuan 阅读(651) 评论(0) 推荐(0) 编辑
摘要: 1.前面我们在《(一)elasticsearch 编译和启动》和 《(二)elasticsearch 源码目录 》简单了解下es(elasticsearch,下同),现在我们来看下启动代码 下面是启动流程图,我们按照流程图的顺序依次描述 2.启动流程 org.elasticsearch.bootst 阅读全文
posted @ 2022-12-29 10:21 darcy_yuan 阅读(323) 评论(0) 推荐(0) 编辑
摘要: 在阅读源码之前,我们先来看看整个项目的结构:(同(一)elasticsearch 编译和启动,我们使用版本7.4.0作为示例) .ci,持续集成配置 .github, 里面有 PULL_REQUEST_TEMPLATE.md,是关于pr规范的介绍 benchmarks, 标准测试套件 build开头 阅读全文
posted @ 2022-12-25 10:30 darcy_yuan 阅读(292) 评论(0) 推荐(0) 编辑