自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(128)
  • 收藏
  • 关注

原创 深入拆解消息队列的存储

消息队列分段单位分区/分片分段文件/对象Kafka支持日志文件(Segment)RocketMQ支持CommitLog 文件Pulsar支持Ledger(账本)RabbitMQ不常用持久化文件(Segment)特性KafkaRocketMQPulsarRabbitMQ批处理支持❌ 单条消息❌ 单条消息压缩支持✅ 批次级别✅ 消息级别✅ 消息级别❌ 不支持事务支持✅ 生产者ID+纪元✅ 事务偏移量✅ 事务ID✅ 事务性队列Schema演进。

2025-06-29 17:42:36 979

原创 消息队列的网络模型详解:IO多路复用、Reactor模型、零拷贝

特性RabbitMQKafkaRocketMQPulsar语言ErlangJavaJavaJava网络模型ActorReactorReactorReactorIO多路复用epollepollepoll零拷贝无有有有并发模型轻量级进程线程池线程池线程池协议AMQP自定义自定义自定义。

2025-06-27 17:18:23 1209

原创 零拷贝详解:sendfile()、mmap()、splice()

零拷贝是一种避免CPU在内存间不必要的数据拷贝的技术,通过减少数据拷贝次数来提高系统性能。

2025-06-27 17:14:36 427

原创 IO多路复用——Epoll底层原理深度分析

就绪队列理论上来说没有长度限制,但是受内存和系统资源的限制。epoll_create创建epoll实例。epoll_ctl添加/删除/修改fd。epoll_wait获取就绪事件。epoll_ctl注册文件描述符。epoll_wait返回就绪事件。epoll_wait返回就绪事件。epoll_create创建。epoll_event结构体。epoll_wait等待事件。红黑树在Epoll中主要用于。epoll_ctl注册fd。返回epoll文件描述符。唤醒epoll_wait。唤醒epoll_wait。

2025-06-25 23:30:00 824

原创 IO多路复用——Poll底层原理深度分析

Poll是IO多路复用的一种实现方式,它允许一个进程同时监听多个文件描述符,当其中任何一个文件描述符就绪时,进程就可以进行相应的IO操作。

2025-06-25 22:45:00 1489

原创 IO多路复用——Select底层原理深度分析(流程图)

fill:#333;color:#333;color:#333;fill:none;是否用户空间调用select方法系统调用入口 SYSCALL_DEFINE5kern_select 参数验证和初始化do_select 核心实现遍历文件描述符位图对每个fd调用poll方法检查事件状态更新结果位图有事件就绪?返回结果到用户空间用户空间轮询处理相应事件等待事件或超时被唤醒后重新检查。

2025-06-24 23:08:59 1150

原创 C语言从零开始学习指南 - 完整实战教程

C语言是由Dennis Ritchie在1972年开发的一种通用编程语言。高效性:编译后执行效率高可移植性:可在多种平台上运行灵活性:提供底层控制能力广泛应用:操作系统、嵌入式系统、游戏开发等#define PI3.14159// 宏定义常量100// const常量printf("最大尺寸:%d\n", MAX_SIZE);printf("最小年龄:%d\n", MIN_AGE);return 0;// 函数声明return 0;// 函数定义int i;

2025-06-24 17:48:37 748

原创 消息队列的通信协议

特性KafkaRocketMQPulsarRabbitMQ协议类型自定义二进制自定义二进制自定义二进制AMQP标准传输层TCPTCPTCPTCP连接模式短连接长连接长连接长连接消息模式发布-订阅发布-订阅发布-订阅发布-订阅事务支持有限完整完整有限顺序保证分区内有序队列内有序分区内有序队列内有序协议复杂度简单中等复杂中等扩展性高高很高中等Kafka:适合高吞吐量的日志收集和流处理,消息简短、支持批量传输RocketMQ:适合金融级可靠性和事务消息。

2025-06-21 09:45:00 1655

原创 消息队列的基本概念

消息队列就像现代系统架构中的"神经系统",它让各个系统组件能够高效、可靠地通信。理解这些基本概念,就像掌握了快递公司的运营规则,能够更好地设计和使用消息队列系统。消息队列的核心就是"生产"和"消费",其他所有功能都是围绕这两个核心操作展开的。💬互动讨论:你在实际项目中遇到过哪些消息队列的挑战?欢迎在评论区分享你的经验和解决方案!Apache Kafka 官方文档RocketMQ 官方文档RabbitMQ 官方文档。

2025-06-20 22:15:00 610

原创 消息队列技术选型完全指南:从原理到实践

技术选型是一个需要综合考虑多个因素的复杂决策过程。通过深入理解消息队列的核心原理、主流产品的特性差异,以及业务场景的具体需求,我们可以做出更加科学和合理的技术选择。

2025-06-20 15:38:18 773

原创 APISIX 简介:云原生 API 网关的架构与实践

APISIX(Apache APISIX)是一个高性能、可扩展的云原生 API 网关,基于 Nginx 和 etcd 构建。作为微服务架构的流量入口,它提供了动态路由、负载均衡、服务发现、认证授权、可观测性等核心能力。其设计遵循"云原生"和"可扩展"理念,支持热加载、动态配置和插件化架构,已成为 Apache 顶级项目,被广泛应用于金融、电商、互联网等领域的关键业务场景。

2025-06-17 16:54:07 879

原创 ES磁盘使用超限问题:TOO_MANY_REQUESTS disk usage exceeded flood-stage watermark,

报错信息:TOO_MANY_REQUESTS disk usage exceeded flood-stage watermark,index has read-only-allow-delete block。

2025-06-17 16:19:45 375

原创 ElasticSearch配置详解:设置内存锁定的好处

内存锁定是指将Elasticsearch的JVM堆内存锁定在物理内存中,防止操作系统将其交换(swap)到磁盘。内存交换是操作系统的虚拟内存管理机制,当物理内存不足时,将暂时不用的内存页面移动到磁盘存储空间,为活跃进程释放物理内存。开启内存锁定是Elasticsearch生产部署的强烈推荐配置,它能够:✅显著提升性能:避免swap导致的性能下降✅保证稳定性:减少GC停顿和超时问题✅改善用户体验:确保查询响应时间的一致性✅提高集群健康度:避免因性能问题导致的节点脱离。

2025-06-12 10:25:15 190

原创 ElasticSearch配置详解:什么是重平衡

集群重平衡(Cluster Rebalancing)负载均衡存储空间均衡查询性能优化集群资源最大化利用。

2025-06-11 21:15:00 547

原创 解决ElasticSearch分页异常:Result window is too large, from + size must be less than or equal to: [10000]

这个错误是由于 Elasticsearch 的默认分页限制导致的。Elasticsearch 默认只允许查询前 10,000 条记录(from + size <= 10000),而查询请求超出了这个限制(请求了 18,660 条)。Scroll API:适用于需要一次性获取大量数据的场景(如导出)。Search After:适用于实时分页场景,性能更好。在Dev Tools的控制台中,执行以下请求(将。

2025-06-06 15:47:40 402

原创 接口限频算法:漏桶算法、令牌桶算法、滑动窗口算法

在分布式系统中,可以利用 Redis 的原子操作和 Lua 脚本来实现一个线程安全的令牌桶。,无论输入流量如何波动,输出始终保持稳定。在分布式系统中,可以利用 Redis 的原子操作和 Lua 脚本来实现一个这个算法。在非单节点场景下,可使用消息队列中间件,或者Redis模拟队列,来实现这个算法。移除过期时间戳< current_time - T。采用令牌桶算法,支持动态调整速率和突发容量。通过Lua脚本操作Redis。获取窗口内所有时间戳。添加当前时间戳到窗口。统计窗口内时间戳数量。

2025-06-06 13:58:23 1291

原创 ElasticSearch深入解析(十五):相关性评分

TF-IDF(Term Frequency-Inverse Document Frequency,词频-逆文档频率)是一种常用的统计方法,用于评估一个词对文档或语料库的重要程度。TF (Term Frequency, 词频):一个词在文档中出现的频率。IDF (Inverse Document Frequency, 逆文档频率):一个词在整个文档集合中出现的频率的倒数,用来衡量这个词的独特性。

2025-05-15 12:15:00 963

原创 ElasticSearch深入解析(十四):分词

Elasticsearch 的分析过程是将文本数据转换成适合搜索的形式的关键步骤。这一过程主要包括四个阶段:字符过滤、分词、词条过滤和词条索引。描述:用户可以根据需要组合不同的分词器、字符过滤器和词条过滤器来创建自定义分析器。示例。

2025-05-15 12:00:00 765

原创 ElasticSearch深入解析(十三):查询和过滤器

在 Elasticsearch 中,查询(Query)和过滤器(Filter)是用于检索和筛选数据的重要组成部分。它们虽然都能用来查找文档,但在性能和用法上有所不同。下面详细介绍查询和过滤器的概念以及它们之间的区别。

2025-05-14 16:57:19 776

原创 ElasticSearch深入解析(十二):聚合——分桶聚合、指标聚合、管道子聚合

在数据驱动决策的时代,聚合函数作为数据分析与数据挖掘的核心工具,正发挥着越来越重要的作用。它能够对大量数据进行高效处理,通过诸如求和、求平均、计数、最值计算等操作,帮助用户从复杂的数据集中提炼关键信息,快速把握数据的整体特征。无论是企业分析业务指标、科研人员处理实验数据,还是普通用户进行日常数据整理,聚合函数都能凭借其强大的数据归纳能力,助力用户深入理解数据内涵、精准识别核心要素,并清晰洞察数据背后隐藏的趋势与规律,为后续的分析决策提供坚实的数据支撑。

2025-05-14 16:19:53 1273

原创 ElasticSearch深入解析(十一):分页和分批统计的三种实现

特性scroll核心逻辑偏移量切片游标前向遍历静态快照批量拉取深度分页支持不支持(无限制无限制实时性高(每次查询最新数据)高(基于实时排序)低(基于快照)内存/网络开销高(随from增大)低(仅获取后续数据)中(快照占用内存)分页方向任意页(前后跳转)仅前向(下一页)仅前向(下一页)典型场景小数据量浅分页大数据量实时分页全量数据离线导出优先选择:适合绝大多数实时分页场景,兼顾性能与灵活性;谨慎使用:仅用于小数据量且分页深度较浅的场景;仅用scroll。

2025-05-13 18:42:11 1250

原创 ElasticSearch深入解析(十):字段膨胀(Mapping 爆炸)问题的解决思路

最小化动态映射核心业务字段必须显式定义。动态字段使用Flattened类型或Runtime字段。分层处理数据将稳定字段与动态字段分离存储。对高频查询的动态字段,通过预定义映射。性能压测验证在模拟环境中测试字段数对写入、查询、聚合的影响。确保配置调整后性能指标符合预期。自动化运维使用索引模板(Index Templates)统一管理映射。结合 Logstash 或 Beats 在数据摄入阶段清洗字段。

2025-05-03 14:39:57 1489

原创 ElasticSearch深入解析(九):Object、Nested、Flattened类型

Elasticsearch 作为面向文档的搜索引擎,对嵌套数据的处理有多种方式,不同类型适用于不同的业务场景。Elasticsearch 中,JSON 文档的嵌套对象(如 )会被默认映射为 。其底层通过 字段扁平化 实现索引:将嵌套对象的字段展开为 的形式(如 、),存储为独立的字段。适用于 简单嵌套对象,且不需要对嵌套对象内部字段进行 关联查询 的场景。例如:此时 是一个简单对象,若只需查询 或 的独立值(不关心是否属于同一作者),Object 类型足够。当嵌套对象是 数组 时(如一个用户有多个

2025-05-03 14:28:18 1447

原创 ElasticSearch深入解析(八):索引设置、索引别名、索引模板

Elasticsearch 7.8及之后版本支持两种定义模板的方式,可简记为普通模板定义方式和组件模板新增/创建方式。PUT _index_template/<template_name> # 模板名称(唯一)"index_patterns": ["logs-*", "metrics-*"], # 匹配的索引名模式(支持通配符)"priority": 100, # 模板优先级(高优先级覆盖低优先级)"template": { # 新索引的配置内容。

2025-05-02 17:20:55 1511

原创 ElasticSearch深入解析(七):数据类型与回复体

Elasticsearch 是一个分布式的搜索和分析引擎,适用于需要快速搜索大量数据的应用场景。当向 Elasticsearch 发送请求(例如搜索或索引操作)时,它会返回一个 JSON 格式的响应体。这个响应体包含了关于请求结果的详细信息。在 Elasticsearch 中,文档(Document)是最小的数据单元,每个文档都是 JSON 格式的数据。为了有效地索引和搜索这些文档,Elasticsearch 定义了多种数据类型来表示文档中的字段。

2025-05-02 14:43:29 823

原创 ElasticSearch深入解析(六):集群核心配置

NIOFS(非阻塞文件系统)通常指基于非阻塞I/O(Non-blocking I/O)技术实现的文件系统或文件操作机制,其核心特点是允许在文件读写等操作过程中无需等待操作完成,即可继续处理其他任务,从而提升系统在高并发场景下的效率。mmapfs并非独立的物理文件系统,而是一种通过内存映射(Memory Mapping)技术实现的文件操作机制。它将磁盘文件的内容直接映射到进程的虚拟地址空间,使应用程序能像访问内存一样读写文件,无需显式执行I/O系统调用(如readwrite。

2025-04-29 21:15:00 1176

原创 ElasticSearch深入解析(五):如何将一台电脑上的Elasticsearch服务迁移到另一台电脑上

Elasticsearch dump是一个用于将Elasticsearch索引数据导出为JSON格式的工具。你可以使用Elasticsearch dump通过命令行或编程接口来导出数据。将源电脑导出的插件放置到目标电脑的es的安装目录的plugins文件夹下。插件存放在安装目录下的plugins文件夹中。一个插件对应一个子文件夹。在目标电脑上安装同版本的Elasticsearch。拷贝原来的elasticsearch.yml配置。

2025-04-28 18:42:02 740

原创 ElasticSearch深入解析(四):ElasticSearch 8.X的节点角色划分

在分布式搜索与数据分析场景中,合理的节点角色划分是 ElasticSearch 8.x 集群高效运行的核心架构设计。本文深度解析 ElasticSearch 8.x 全新的节点角色体系,通过node.roles参数的精细化配置,帮助开发者理解如何通过功能分离提升集群稳定性与资源利用率。以Elasticsearch 8.X版本集群为例,如果我们不手动设置节点角色,则默认节点角色为cdfhilmrstw:当集群规模比较大之后(比如集群节点数大于6个)​,就需要手动设定、配置节点角色。

2025-04-28 18:39:44 1044

原创 ElasticSearch深入解析(三):Elasticsearch 7的安装与配置、Kibana安装

Elasticsearch是一个提供可扩展的企业级搜索服务的工具。它主要提供了大数据搜索和分析服务。相较于传统的关系数据库,Elasticsearch具有更高的性能、易扩展性和良好的容错性。传统的关系数据库在处理大数据时存在明显的短板,主要表现在性能差和扩展难的问题上。即使采用一定的方法去优化SQL,查询速度依然可能很慢,而关系数据库的集群搭建也不太容易,查询性能在很多业务场景中依然没有保障。相较于关系数据库,Elasticsearch存在几个明显的优点:高性能、易扩展和良好的容错性。

2025-04-23 23:15:00 1090

原创 ElasticSearch深入解析(二):核心概念

当某主分片所在的数据节点不可用时,会导致主分片丢失现象,若短时间内不对此采取补救措施,集群会将该分片对应的副本提升为新的主分片。与关系型数据库不同的是,Elasticsearch的一个字段可以设定两种或两种以上的数据类型,通过定义multi-field来灵活地满足复杂的业务需求。键是字段的名称,值是不同数据类型的字段。有了倒排列表,当检索“chatgpt”时,就无须对逐个文档进行扫描,而可以借助倒排索引锁定ID为1、2、3、4的文档,实现以O(1)的时间复杂度快速召回数据,达到快速响应的目的。

2025-04-23 13:28:56 751

原创 ElasticSearch深入解析(一):Elastic Stack全景

Elastic数据平台在和等场景中的应用颇具亮点。APM(Application Performance Management,应用性能管理)是一种用于监控和管理软件应用程序性能与可用性的技术框架,旨在帮助企业确保应用程序高效运行、快速定位性能瓶颈,并优化用户体验。Elastic公司经过两年精心研发,推出了一个全新特性ESRE(Elasticsearch Relevance Engine,最早发布于Elasticsearch 8.8版本)​。它是一款基于AI的搜索引擎,实现开箱即用的卓越语义搜索。

2025-04-22 22:00:00 1123

原创 使用Spring boot的@Transactional进行事务管理

在 Spring Boot 中,是用于声明式事务管理的关键注解。它基于 Spring 的 AOP(面向切面编程)实现,可以简化数据库事务的管理。

2025-02-08 15:37:12 2854

原创 星火大模型接入及文本生成HTTP流式、非流式接口(JAVA)

接口文档在这个地址查看:https://www.xfyun.cn/doc/spark/HTTP%E8%B0%83%E7%94%A8%E6%96%87%E6%A1%A3.html#_1-%E6%8E%A5%E5%8F%A3%E8%AF%B4%E6%98%8E。本文以模型Spark Lite为例,重要信息(APIPassword、接口地址)在这个页面查看:https://console.xfyun.cn/services/cbm。相比非流式略微有一些不同,响应分成了多次,最后一个。

2025-01-24 10:30:13 2034 1

原创 分布式算法(五):初识ZAB协议

Zookeeper 是一种分布式协调服务,它帮助分布式系统中的进程或服务之间进行协作。配置管理:应用程序可以在 Zookeeper 中存储配置信息,并且可以在配置发生变化时得到通知。命名服务:为分布式系统中的组件提供一个统一的名字空间,类似 DNS 之于互联网。分布式同步:提供机制以确保多个节点之间的操作能够按照一定的顺序执行。组成员管理:跟踪集群中成员的状态,检测成员的加入和离开。领导选举:在一组服务器中选出一个领导者来协调某些活动。Znodes(节点)

2024-12-31 13:00:54 953

原创 分布式算法(四):Basic Paxos协议初探(角色、阶段)

在这个背景下,Paxos协议应运而生。想象一下,如果你正在使用一款流行的社交网络应用,无论是在世界的哪个角落,无论服务器集群内部发生了什么变化,你都能够顺利发布你的状态更新或与朋友交流,这就是Paxos等共识算法所保障的结果。在一个健康的Paxos系统中,少数派的意见不足以影响最终的决策结果,因为系统的设计原则是必须有超过一半的节点(即多数派)同意才能使提议生效。然而,随着节点数量的增加和地理分布的扩大,如何确保这些分散在全球各地的计算机能够像一个协调有序的整体一样工作,成为了工程师们面临的重大挑战之一。

2024-12-26 18:07:05 796

原创 分布式算法(三):分布式事务的解决方案——三阶段提交协议

文章目录一、核心实现原理优化三个阶段1.CanCommit询问阶段2.PreCommit预提交阶段3.DoCommit提交阶段二、故障恢复1.协调者发生故障心跳机制解决数据不一致问题2.部分参与者发生故障三、优缺点分析优点缺点三阶段提交协议(Three-Phase Commit, 3PC)是分布式系统中用于保证跨多个节点的数据一致性的算法。它是在两阶段提交(2PC)的基础上发展起来的,旨在解决2PC的一些局限性,如协调者单点故障和阻塞问题。3PC通过引入额外的准备阶段来尝试减少阻塞时间,并且允许参与者在某

2024-12-24 13:58:04 849

原创 分布式算法(二):分布式事务的解决方案——两阶段提交协议

两阶段提交协议(2PC)对强一致性的CP架构系统至关重要,它通过确保所有分布式节点在事务处理上达成一致,要么全部成功提交,要么全部回滚,从而维护了全局数据的一致性和完整性,同时提供了可靠的故障恢复机制,尽管可能牺牲一定的系统可用性和性能。这对于需要高度可靠和一致性的应用场景,如金融交易、分布式数据库操作等,具有不可替代的应用价值。然而,值得注意的是,虽然2PC非常适合强一致性的需求,但它也有一些缺点,特别是在高可用性和性能方面。

2024-12-23 17:28:50 1085

原创 分布式算法(一):从ACID和BASE到CAP

BASE理论是“基本可用(Basically Available),软状态(Soft State),最终一致性(Eventual Consistency)”的缩写,它是对ACID的一种放松,旨在为高可用性和分区容忍性提供支持。这意味着在一个分布式的环境中,所有的节点需要同步进行更新,以保持数据的一致性。探索分布式系统中关于数据一致性和可用性的哲学——从ACID到BASE再到CAP定理,这是一个充满挑战和技术深度的话题,它不仅影响着我们如何设计和实现数据库,也深刻地改变了现代互联网应用的架构方式。

2024-12-19 18:18:13 1021

原创 Dubbo快速入门(二):第一个Dubbo程序(附源码)

然后在接口测试工具中访问接口:访问成功!

2024-10-13 00:30:46 1179

原创 Zookeeper快速入门:部署服务、基本概念与操作

持久节点 (Persistent Node)不会自动删除。可以有子节点。适用于需要长期存在的数据。临时节点 (Ephemeral Node)客户端会话结束时自动删除。不能有子节点。适用于表示客户端的存在或状态。持久顺序节点 (Persistent Sequential Node)不会自动删除。创建时自动添加序列号。适用于需要唯一标识符的场景,例如任务分配。临时顺序节点 (Ephemeral Sequential Node)客户端会话结束时自动删除。创建时自动添加序列号。

2024-10-12 21:54:00 1459

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除