- 博客(21)
- 资源 (1)
- 收藏
- 关注
原创 ElasticSearch ILM(索引生命周期管理)
随着日志和监控数据一天天膨胀,Elasticsearch 集群的存储成本往往会成为基础设施里的“刺客”。如果你还在把一年前的日志存在高性能 NVMe SSD 上,或者每隔一段时间就要手动写脚本删索引,那这篇文章就是为你准备的。如果你的集群里全是默认节点(没有区分 roles),ILM 的逻辑阶段(rollover, delete)依然生效,但。如果不配置底层硬件层级,你的“冷数据”依然可能赖在你的 NVMe 硬盘上不走。:停止写入,偶尔查询。这个别名里写数据,剩下的扩容、搬迁、删除,ES 会自己搞定。
2026-01-03 22:04:25
981
原创 ElasticSearch 高可用(两地三中心架构)
本文介绍了Elasticsearch两地三中心容灾架构方案。针对传统两地两中心易出现脑裂问题,提出引入第三个仲裁节点(Zone C)作为关键投票者,确保在任一机房故障时集群仍能正常选举Master。详细说明了仲裁节点的特殊配置:仅保留master和voting_only角色,禁止存储数据。同时强调需配合分片分配感知机制,确保数据分片均匀分布在多个机房,实现真正的高可用。该方案以最小成本解决了跨机房部署的脑裂风险,保障服务连续性。
2026-01-03 22:00:44
962
原创 深度拆解 Elasticsearch 检索底层原理
图中清晰可见,Filter 阶段有 BitSet 缓存且不涉及复杂的算分逻辑。对于不需要算分的查询(如状态、类型、时间范围),务必包裹在filter中。排序和聚合极其消耗内存和磁盘 IO。确保涉及排序和聚合的字段开启了 DocValues(默认开启),避免使用堆内存消耗巨大的fielddata。分片过多会导致协调节点 scatter-gather 阶段的网络和合并开销增大(Top Left 部分);分片过大则会导致单分片内部 Segment 检索变慢。
2025-12-27 19:33:28
825
原创 ElasticSearch Segment 内部检索过程
Elasticsearch的检索过程可分为四个精密阶段:首先通过Filter阶段利用倒排索引或BKD-Tree快速过滤文档;接着Match阶段基于BM25算法对候选文档进行相关性评分,并通过Skip-to机制优化性能;然后在排序聚合阶段切换为DocValues列式存储,高效处理排序和统计计算;最后Fetch阶段从行式存储的Stored Fields中获取完整文档内容。整个过程通过索引切换和数据结构优化,实现了查询的高效执行,其中随机I/O可能成为深分页场景的性能瓶颈。
2025-12-24 20:58:52
825
原创 ElasticSearch Segment 详解
本文介绍了ElasticSearch中Segment的核心组成部分及其功能。Segment作为不可变的存储单元,包含倒排索引、BKD索引、正排索引和Stored Fields四个部分。倒排索引通过词项索引、词项字典和倒排表实现高效检索;BKD索引针对数值和地理位置字段优化范围查询;正排索引采用列式存储支持排序和聚合;Stored Fields存储压缩后的原始文档。文章还解释了DocId是Segment内部的局部标识符,会在合并时重新分配。这些组件共同支撑了ES在TB级数据下的高性能检索能力。
2025-12-22 21:31:41
693
原创 ElasticSearch 文档写入流程
本文介绍了ElasticSearch数据写入的四个阶段:1)数据写入阶段,包括新增、删除和更新操作;2)refresh刷新阶段,使数据可被检索;3)flush落盘阶段,将数据持久化到磁盘;4)段合并阶段,优化存储空间。每个阶段都有不同的触发机制,如定时自动触发或手动触发,共同确保ES的准实时检索能力和数据可靠性。通过这四个阶段的协同工作,ES实现了高效的数据写入、检索和存储管理。
2025-12-22 21:28:27
872
原创 Centos8安装Docker
本文详细介绍了在CentOS系统上安装和配置Docker的完整流程。主要内容包括:卸载旧版本Docker、设置阿里云镜像仓库、安装最新版Docker及相关组件(含冲突解决方案)、启动Docker服务的方法。重点讲解了如何通过修改daemon.json文件配置国内镜像加速源,提供了多个可用镜像地址,并包含镜像配置后的服务重启步骤。最后推荐了国内Docker镜像源汇总资源。
2025-06-18 20:56:54
173
原创 VMware Workstation NAT 模式设置静态IP
本文详细介绍了如何配置VMware虚拟机网络连接。首先在宿主机启用并设置VMnet8网络适配器的IPv4属性,然后在VMware软件中修改虚拟网络配置,选择NAT模式并设置与宿主机一致的子网IP和网关。接着在虚拟机设置中选择VMnet8网络适配器,编辑虚拟机网络配置文件,确保IP地址段与宿主机匹配。最后重启虚拟机网络并验证连接。通过以上步骤即可实现虚拟机与宿主机及外网的网络通信。整个过程包含具体参数设置和配置截图,便于读者逐步操作。
2025-06-14 19:22:36
419
原创 VMware Workstation 安装CentOS 8
本文详细介绍了在VMware Workstation 17 Pro上安装CentOS 8.5的完整步骤。首先创建虚拟机并配置基本信息,包括系统类型、存储路径和磁盘大小。然后通过ISO映像文件启动安装,设置语言、时区、网络连接等系统参数,特别说明了如何配置IP地址和主机名。安装过程中还演示了启用root账户、创建普通用户等关键操作。全文配有详细截图,逐步指导用户完成从虚拟机创建到系统安装的全部流程,适合需要在虚拟环境中部署CentOS系统的用户参考。
2025-06-12 06:18:43
465
原创 MongoDB配置文件
enableLocalhostAuthBypass: false #示例auditLog 审计相关参数auditLog:destination: #指定审计记录的输出方式,有syslog|console|fileformat: #输出格式,有JSON 和 BSONpath: #如果输入为文件,那么指定文件完整路径及文件名filter: #过滤器,可限制审计系统记录的操作类型。
2023-08-20 20:00:20
383
1
原创 spring aop
AOP (Aspect-Oriented Programming:面向其切面编程)是一种编程范式,一种新的方法论,是对传统OOP的补充,其主要编程对象是切面(aspect),而切面关注切点。 AOP 优势: 1.降低模块耦合度,增强代码的复用性 2.使系统更加容易扩展 AOP 术语 切面(Aspect):一个横切关注点的模块化,这个关注点可能会横切多个对象。它是横...
2018-06-14 15:51:21
173
原创 Spring笔记三
Spring 中集合注入: 当 javabean 的属性中有 List 类型或者数组时,使用 <list> 注入值 当 属性中有 Set 类型时使用 <set> 标签注入值 当属性中有 Map 类型时使用 <map>标签注入值 List 类型和 数组 也可以通过<set>标签注入,当会自动去重实...
2018-03-23 14:23:20
141
原创 Spring 笔记二
Spring IOC: Spring IOC容器可以管理bean的生命周期,Spring允许在bean生命周期的特定点执行定制的任务。 Spring IOC容器对bean的生命周期进行管理的过程: 1. 通过构造器或工厂方法创建bean实例 2. 为bean的属性设置值和对其他bean的应用 3. 调用bean的初始方法 4. b...
2018-03-21 08:55:05
126
原创 Spring笔记一
什么是Spring? Spring 是一个开源框架; Spring为了简化企业级应用开发而生。使用Spring可以使简单的JavaBean实现以前只有EJB才能实现的功能; Spring 是一个IOC(DI)和AOP容器的框架。Spring 的特点: 轻量级:Spring是非进入性的——基于Spring开发的应用中的对象可以不依赖Spring的API 依赖注入 面向...
2018-03-20 20:13:32
112
原创 接口的性质
接口:接口的定义:在java程序设计语言中,接口不是类,而是对类的一组需求描述,这些类要遵从接口描述的统一格式进行定义。也就是说,如果一个类实现了一个接口,那么就必须实现接口中所有的方法。接口中的所有方法自动的属于public,因此在接口中声明方法时,不必提供关键字public。不过在实现接口时,必须将接口中的方法声明为public,否则,编译器将会认为这个方法的访问属性是包可见性,即包的
2017-12-19 19:46:09
661
原创 北大ACM1723——士兵排队问题
题目如下:SOLDIERSDescriptionN soldiers of the land Gridland are randomly scattered around the country. A position in Gridland is given by a pair (x, y) of integer coordinates. Soldiers can move
2017-11-11 19:07:34
1326
原创 栈的方法的实现(C语言)
#include#includetypedef int SElemType; //栈中存放的数据类型 typedef struct { SElemType *base; SElemType *top; int stacksize;}SqStack;typedef int Status;#define OK 1#define ERROR 0;
2017-11-04 22:38:19
273
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅