Blog

Ch07-Elasticsearch 之 Segment Merge

August 22, 2021
Elasticsearch
Elasticsearch

在 Elasticsearch 中,为了让插入的让数据更快的被检索使用。用一句话来概括就是”开新文件”。但是从另一个方面看,开新文件也会给服务器带来负载压力。因为默认每 1 秒,都会有一个新文件产生,每个文件都需要有文件句柄,内存,CPU 使用等各种资源。一天有 86400 秒,设想一下,每次请求要扫描一遍 86400 个文件,这个响应性能绝对好不了。为了解决这个问题,Elasticsearch 引入了 Merge 操作。

...

Ch06-Elasticsearch 之 Update

August 21, 2021
Elasticsearch
Elasticsearch

更新操作也是写操作。Elasticsearch 在创建新文档时,Elasticsearch 将为该文档分配一个版本号。对文档的每次更改都会产生一个新的版本号。当执行更新时,旧版本在.del 文件中被标记为已删除,并且新版本在新的分段中编入索引。旧版本可能仍然与搜索查询匹配,但是从结果中将其过滤掉。

...

Ch04-Elasticsearch 之 Search

August 15, 2021
Elasticsearch
Elasticsearch

Elasticsearch 的 Search 操作包含两个阶段,一个是 QueryPhase,另一个是 FetchPhase。QueryPhase 在初始查询阶段,查询会广播到索引中每一个分片副本 (主分片或副分片)。每个分片在本地执行搜索并构建一个匹配文档的优先队列(优先队列是一个存有 topN 匹配文档的有序列表,即 doc id。优先队列大小为分页参数 from + size),注意该队列中并没有取具体的数据。FetchPhase 会根据获取到的 doc id 向对应的节点依次发送 GET 请求,获取结果,然后合并,聚合,排序最终返回结果。

...

Ch07-TCP 之 可靠性机制

August 7, 2021
Network
Network

机制 说明 校验和 保证数据未被篡改 序列号 保证数据的按序到达;去重重复数据 连接管理 三次握手,四次挥手 确认应答 ACK 保证报文成功交付 超时重传 发送数据包在一定的时间周期内没有收到相应的 ACK,便认为这个数据包丢失,就会重新发送 流量控制 控制发送方发送窗口的大小来实现流量控制 拥塞控制 控制传输中的流量