- 博客(1876)
- 收藏
- 关注
原创 Kafka架构 HW和LEO
摘要:Kafka分区副本通过高水位线(HW)和日志末端位移(LEO)机制实现数据同步。HW表示消费者可见的数据边界,LEO记录副本最新消息位置。同步时,follower向leader发送包含自身LEO的请求,leader返回对应数据并计算所有副本LEO最小值作为新HW。该HW会被广播到所有副本,确保数据一致性。这两个变量共同维护了数据同步状态,既控制消费者可见范围,又处理异常情况下的数据恢复。
2026-05-18 20:40:03
932
原创 Kafka架构 数据发送保障
如果follower长时间没有和leader进行同步那么也不会死等下去了,会将follower踢出isr的队列,当剩下的follower将数据同步完成leader就可以向producer发送ack了。其实就是produce发送消息,leader收到这条消息,并且成功的保存下来了,那么会给producer回复叫做ACK,producer在收到了这样回复之后就认为分区把消息成功保存下来了。如果producer没有收到这样的消息,那么producer会重复的发送这条消息,再次发送,直到收到为止。
2026-05-13 19:44:33
1031
原创 Kafka 消息查找流程和消息读取流程
摘要:Kafka通过segment文件存储消息,每个segment包含log和index文件。消费者查找指定offset时,先在index文件中定位最接近的较小偏移量(如查找23067时定位到6),再根据消息头部记录的大小顺序读取后续消息。定位过程为:先通过segment文件名确定文件位置,再在index文件中找到物理偏移量后顺序读取。这种索引机制实现了消息的高效查找。
2026-05-07 20:42:09
1113
原创 Dubbo 应用切换 ZooKeeper 注册中心实例,流量无损迁移
《ZooKeeper注册中心无损迁移方案》摘要:本文针对Dubbo微服务架构中ZooKeeper注册中心迁移场景,提出一种基于多注册中心特性的无损迁移方案。方案通过四个关键步骤实现平滑过渡:首先保持现状,然后在新旧ZK集群并行运行阶段让Provider同时注册到新旧集群,接着将Consumer切换到新集群,最后移除旧集群。该方案特别处理了服务既作为Provider又作为Consumer的情况,通过Dubbo的多注册中心支持能力,有效避免了"生产者找不到消费者"等系统故障,确保迁移过程流量
2026-04-27 09:45:57
1503
原创 ZooKeeper性能调优终 关键配置提升集群吞吐量
ZooKeeper 在分布式系统中扮演着“大脑”的角色,其稳定性直接影响到 Kafka、Hadoop、HBase 等组件。优化 ZooKeeper 需要平衡以及。
2026-04-23 10:25:04
2042
原创 Kafka架构 主题中的分区和段
Kafka引入分区机制主要为了提升系统的吞吐量和并行处理能力。当生产者速度远超消费者时,单个分区会导致数据堆积。通过将topic划分为多个分区,每个分区拥有独立的offset,允许多个消费者同时消费不同分区的数据,实现并行处理。例如三个分区可以同时处理三条消息,吞吐量提升为单分区的三倍。分区还会均匀分布在不同的broker上,进一步优化性能。这种设计有效解决了数据积压问题,显著提高了Kafka集群的数据处理能力和消费效率。
2026-04-22 20:40:54
1666
原创 kafka 环境部署
摘要:Kafka高度依赖Zookeeper(ZK)存储元数据信息,包括broker节点、主题和消费信息等。单机版Kafka只有一个broker,而集群版由多个broker组成。Kafka启动时会在ZK根目录下创建多个节点存储元数据,如brokers/ids记录活跃broker、topics存储主题信息。主题创建需指定副本因子和分区数。Kafka内置ZK但不推荐使用,建议配置独立ZK集群,并将Kafka元数据统一存储在ZK的/kafka节点下以保持整洁。集群部署时需确保各节点broker.id唯一,启动顺序为
2026-04-22 20:32:57
1972
原创 Kafka架构 Kafka核心概念
Kafka核心概念包括:Broker构成集群,Topic分类消息,Producer发送消息,ConsumerGroup协同消费。Partition是物理分组,实现负载均衡,每个分区有多个副本(Leader处理读写,Follower同步数据)。消息按offset有序存储在Segment(包含.log数据和.index索引)中。分区机制提升消费能力,支持多消费者并行处理。副本机制确保高可用性,消费者可灵活选择消费位置(最新或指定offset)。
2026-04-22 15:43:02
1760
原创 安装完成Docker之后配置修改相关的内核参数
本文介绍了配置Linux内核参数以优化Docker网络功能的完整流程。主要内容包括:1)加载br_netfilter模块实现桥接流量转发至iptables;2)修改内核参数(bridge-nf-call和ip_forward)确保容器间通信;3)配置开机自动加载模块和参数;4)设置国内镜像加速器提升下载速度。关键步骤涉及模块加载验证、参数文件配置和Docker服务重启,强调必须按顺序操作(先加载模块再配置参数)。最后提供了常用命令汇总和注意事项,确保Docker网络功能正常运行。
2026-04-14 11:07:27
1968
原创 Kafka JMS
先将50w的请求处理完了,然后再处理剩下的20w。而发布订阅模型是1对多的,所有订阅了主题的消费者在往主题中发布消息之后,他们都可以接受到。消息有生产,对于一个网站来说,就是这些用户发起请求的各种链接,这就是生产消息。消息队列具备的第一个能力是存储能力,能够将用户发过来的一些请求,一些消息给他存储起来,这就是一个容器。生产者负责向消息队列中去生产消息存到队列当中,而消费者是从队列当中来拉取消息进行处理,进行消费。生产者将消息发到队列当中,队列其实就是容器,消费者从队列当中提取这些消息进行消费。
2026-04-08 20:38:13
2199
原创 必知必会之ZooKeeper数据模型
ZooKeeper(ZK)的核心配置包括心跳时间(tickTime=2000ms)、初始化容忍心跳数(initLimit=10)和同步失败容忍次数(syncLimit=5)。其数据模型为树形结构,节点可存储数据并设置ACL权限控制。节点分为永久节点和临时节点,后者在会话断开时自动删除,适用于分布式锁场景。每个节点带有版本号(类似乐观锁),用于并发控制。ZK不适合存储大容量数据,通常用于分布式锁或作为Dubbo注册中心。
2026-04-07 20:47:10
2032
原创 zookeeper 集群在线迁移(扩容)详解
ZooKeeper集群原理及迁移指南 ZooKeeper是一个分布式协调服务,集群由Leader、Follower和Observer三种角色组成。Leader负责写操作,Follower和Observer提供读服务。集群选举基于Zxid和myid的比较,遵循过半机制(建议奇数节点)。数据同步通过原子广播保证一致性。 迁移过程需谨慎: 按myid顺序逐步扩容新节点 更新配置并重启各节点 最后缩容旧节点 确保每次变更后集群健康 关键点: 迁移期间保持服务可用 遵循先扩容后缩容原则 每次变更后验证集群状态 最终将
2026-03-30 14:35:37
2531
原创 基于zk实现分布式锁的多种方式
摘要:分布式锁通过协调并发访问共享资源来保证操作安全。在微服务架构中,利用临时节点实现锁机制:获取锁时创建指定路径节点,释放时删除节点。基础实现存在空轮转问题,通过添加Watcher机制优化,但可能引发羊群效应。进一步优化方案是创建有序节点,按顺序唤醒等待程序,提高系统效率。
2026-03-24 20:38:41
2424
原创 高级特性之dubbo超时机制及集群容错机制
摘要:Dubbo通过超时机制解决服务调用中的线程阻塞问题,配置参数如timeout、retries等可控制调用行为。其集群容错设计采用Failover策略作为默认方案,支持服务级和方法级重试配置,通过自动切换可用节点保障高可用性。但重试机制可能增加系统负载和响应时间,在特定场景下可能造成资源浪费。Dubbo提供多种容错策略,允许用户根据业务需求灵活配置,平衡系统可靠性与性能。
2026-03-17 11:02:14
2897
原创 zk集群选举核心概念及选举时状态 选举发生的时机及选举算法
摘要:Zookeeper集群中,myid是服务器的唯一标识(如1,2,3)。zxid由epoch(逻辑时钟)和xid(事务ID)组成,用于选举时比较数据新旧。选举状态包括LOOKING、LEADING、FOLLOWING和OBSERVING。选举发生在服务启动或Leader宕机时,采用过半机制,优先比较zxid,zxid相同则比较myid。集群通常由奇数台服务器组成(如3台),端口2181用于客户端连接,2888用于集群通信,3888用于选举。
2026-03-06 09:51:13
3000
原创 企业中常见dubbo项目分层
本文介绍了基于Dubbo的分布式系统架构设计。系统采用分层架构:网关层负责统一对外接口,服务层处理业务逻辑,DAO层与数据库交互。重点阐述了Dubbo框架的实现机制:1)服务提供者启动时向注册中心注册服务信息;2)消费者订阅注册中心获取服务地址;3)通过API接口实现服务层与Web层的解耦,避免代码重复。文中还说明了各层间的调用关系:网关层调用服务层,服务层调用DAO层,并通过Dubbo实现远程服务调用,体现了分布式系统的高效协作机制。
2026-03-05 20:32:19
2677
原创 zookeeper注册中心常见的三种模式
摘要:Zookeeper(ZK)的核心机制是ZAB协议,通过广播确保集群数据一致性和同步。ZAB协议包含三种模式:恢复模式在集群崩溃时选举新leader并恢复数据;同步模式在选举后,将leader数据同步到其他节点;当多数节点完成同步后,恢复模式结束。这两种模式共同保障ZK集群的高可用性和数据一致性。(150字)
2026-03-05 20:00:31
2805
原创 zookeeper 日志文件清理
Zookeeper日志清理机制配置指南:1)在zoo.cfg中配置autopurge.purgeInterval(清理间隔)和autopurge.snapRetainCount(保留快照数);2)使用zkCleanup.sh脚本手动清理;3)通过cron设置定时清理任务;4)验证数据目录文件数量确认清理效果。合理配置可有效管理磁盘空间,确保Zookeeper稳定运行。
2026-03-05 10:41:48
3025
原创 zookeeper集群核心知识之三种角色及其作用
ZooKeeper集群中,leader负责处理所有写请求并协调数据修改流程,需获得多数节点同意后才能执行写入。follower只能处理读请求,会将写请求转发给leader,并参与leader选举。observer是一种特殊节点,可以分担读请求但不参与选举投票,这既提高了读取性能又避免了跨机房部署时的选举延迟问题。observer宕机不会影响集群运行,使其成为提升读取效率的安全选择。这种角色分工有效平衡了读写性能和集群稳定性需求。
2026-03-05 09:42:36
2895
原创 JDBC 连接池
本文介绍了数据库连接池中max-active参数的作用及常见配置参数含义。max-active用于限制连接池中最大活动连接数,防止资源过度占用导致性能下降。文章详细解析了连接池配置参数如name、auth、driverClassName等的功能,并对比了maxIdle、minIdle、initialSize等性能调优参数。同时阐述了连接池的工作原理,包括连接的获取、归还机制,以及如何通过HikariCP等实现来管理JDBC连接。最后指出合理配置连接池参数对系统性能优化的重要性,强调连接池在减少连接创建开销、
2026-01-08 17:19:41
5321
原创 Zookeeper 介绍
本文介绍了Apache ZooKeeper作为分布式协调服务框架的基本概念和用法,重点演示了其在Dubbo分布式系统中的应用。主要内容包括:ZooKeeper通过ZAB协议保证集群数据一致性,提供选主、分布式锁等功能;详细展示了使用Docker部署ZooKeeper及基本命令行操作;通过示例代码说明Dubbo如何利用ZooKeeper实现服务注册发现,包括服务提供者和消费者的注册流程及数据存储结构。文章还介绍了Dubbo与ZooKeeper的交互过程,展示了服务注册、订阅和动态感知的完整机制。
2026-01-08 15:50:35
4448
原创 RocketMQ 死信队列
摘要:死信队列是RocketMQ中处理无法正常消费消息的特殊队列。当消息达到最大重试次数(默认16次)仍消费失败时,会被自动转移到对应的死信队列。死信队列按消费者组创建,存储该组所有相关topic的失败消息,保留时间与普通消息相同(默认48小时)。建议为死信队列配置专门消费者进行兜底处理,如记录日志或特殊业务操作。通过控制台可对死信消息进行重发操作。死信队列机制确保了异常消息不会丢失,为系统提供了可靠的消息处理保障。
2026-01-07 20:15:55
3930
原创 分布式框架Dubbo详细介绍和使用
摘要:Apache Dubbo是一款高性能Java RPC框架,提供分布式服务治理能力。其核心架构包含服务提供者(Provider)、消费者(Consumer)、注册中心(Registry)和监控中心(Monitor)四大组件,支持多种协议和序列化方式。通过XML配置可快速实现服务注册与发现,示例展示了定义HelloService接口、实现类及Dubbo的XML配置过程,包括服务暴露和引用。Dubbo简化了分布式系统开发,具有负载均衡、容错等特性,适合构建企业级微服务架构。
2026-01-06 15:31:45
3745
原创 Zookeeper原理和Dubbo中的作用
Zookeeper是一个分布式协调服务,用于管理配置信息、命名服务、分布式锁等。它采用ZAB协议保证数据一致性,通过领导者选举和数据同步机制实现集群协调。在Dubbo框架中,Zookeeper作为注册中心,支持服务注册、发现、心跳检测和动态切换功能。配置示例展示了如何通过XML文件集成Zookeeper与Dubbo,实现服务提供者和消费者的通信协调。Zookeeper为分布式系统提供了高可用、负载均衡等关键支持。
2026-01-05 14:33:27
3801
原创 深入理解zookeeper session机制
ZooKeeper的session机制是客户端与服务端建立连接的核心机制。session创建时初始状态为connecting,连接成功后变为connected,通过心跳机制维持存活状态。session可设置超时时间,若超时未交互则自动断开。当session过期时,所有临时节点会被自动删除。心跳机制类似ping操作,客户端定期发送心跳包表明存活状态。实验表明,快速重连时临时节点仍存在,因为未超过session超时时间;而长时间断开或手动关闭session后,临时节点会被清除。这种机制确保了分布式系统的节点状态
2025-12-22 10:14:47
3731
原创 Zookeeper监控指标详解:Prometheus+Granfa实战
摘要:Zookeeper作为分布式系统的核心组件,其稳定性直接影响整个架构。本文针对Zookeeper监控难题,提出完整解决方案:首先解析核心指标(连接数、请求延迟、Leader选举等)及其重要性;然后详细指导如何从零搭建Prometheus+Grafana监控系统,包括配置Exporter、采集指标和数据可视化;最后提供性能优化建议和常见问题排查方法。通过这套方案,开发者可实时掌握Zookeeper健康状态,快速定位故障,预防系统崩溃,确保分布式协调服务稳定运行。
2025-12-18 14:50:48
4419
1
原创 zookeeper 常用命令之zkCli
摘要:本文介绍了ZooKeeper客户端zkCli.sh的基本操作。主要内容包括:1)默认连接localhost:2181;2)节点类型(-s持久节点,-e临时节点);3)节点操作(创建、查看子节点、获取节点状态);4)数据修改(dataversion版本控制机制,类似MySQL乐观锁);5)递归删除路径。重点讲解了通过set命令修改节点数据时dataversion的递增机制及其并发控制原理。
2025-12-16 19:36:10
3878
原创 Zookeeper 分布式应用知识CAP理论知识
任何用户在某次会话中,一旦读到某个数据在某次更新后的值,那么在 本次会话中就不会再读到比这值更旧的值会话一致性是在单调一致性的基础上进一步放松约束,只保证单个用户单个会话内的单调性,在不同用户或同一用户不同会话间则没有保障。(只要数据更新之后被用户读取到了,这个用户就不会再读取到旧的值,获取到的数据是单调递增的)(服务一直可用,而且是正常响应时间)(zk其中有节点宕机了,这个时候要重新进行选举,在选举的期间是不能对外进行读写的,其实就是牺牲了可用性)个节点,挂了几个,不影响服务,越多机器越好)
2025-12-07 13:27:41
3974
原创 zookeeper 什么是微服务注册中心?
摘要:注册中心是服务治理的核心组件,基于生产者-消费者模型运作。服务提供者启动时向注册中心注册信息,消费者通过订阅获取服务地址。以Dubbo+Zookeeper为例,提供者将URL写入ZK目录,消费者订阅获取地址并注册自身信息。注册中心通过心跳机制监测服务可用性,超时未响应则删除节点并通知消费者。这种机制实现了服务的动态发现和故障处理,避免了手动修改配置的中断问题。Dubbo+ZK组合是常见的注册中心实现方案,通过目录订阅和心跳机制有效管理服务生命周期。
2025-12-04 10:22:11
3824
原创 Kubernetes 证书以及证书续期、过期处理
Kubernetes集群通过多套CA证书体系实现组件间双向认证,确保通信安全。集群包含三套主要CA证书(K8s自身CA、front-proxy CA和etcd CA),其中根CA证书自签名且有效期长达10年。各组件证书(如apiserver、kubelet等)由CA颁发,有效期较短(通常1年)。不同于常规HTTPS的单向认证,K8s严格要求服务器端和客户端的双向验证,所有组件通信都需经过apiserver这个核心网关。用户账号证书也被集成在配置中,非CA证书同样遵循1年有效期原则。证书过期将导致集群完全不可
2025-11-14 16:33:13
4499
原创 RocketMQ集群核心概念 生产者端的负载均衡
摘要:RocketMQ的负载均衡分为生产者和消费者两部分。生产者通过TopicPublishInfo路由信息选择消息队列,MQFaultStrategy类定义容错策略,提供latencyFaultTolerance机制实现高可用。消费者基于拉模式获取消息,通过AllocateMessageQueueStrategy接口实现多种负载均衡策略,如平均哈希、循环平均、机房优先等。消费组内需保证队列分配均衡,避免单个消费者处理过多队列的情况。当队列与消费者关系变化时会触发rebalance重新分配。
2025-11-05 21:50:13
4695
原创 Kubernetes 在生产环境的调优笔记,建议收藏!
本文基于生产实践,详细剖析了Kubernetes集群从1000节点扩展到5000节点的系统化优化方案。核心内容包括:控制平面扩容与参数调优、etcd集群深度优化、网络架构升级、调度策略精细化等关键场景。通过某互联网公司真实案例,展示了分阶段实施的具体步骤和效果对比,最终实现APIServer响应时间降低85%、Pod调度时间缩短80%、节点资源利用率提升132%等显著优化。文章总结了大规模集群运维的关键经验,并展望了虚拟集群、边缘计算、AI调度等未来发展方向。为面临集群扩展挑战的架构师和运维工程师提供了可落
2025-10-21 09:14:19
5500
原创 RocketMQ 集群核心概念-幂等消息-幂等问题的出现
消费者在拿到消息以后,它已经将消息存在DB里面了,它已经完成它的业务了,正常要返回ack,只剩下最后一步提交offset,但是在提交offset的时候,不巧消费者挂掉了,那么意味着这个offset没有办法被提交。现在由于网络的抖动导致生产者这条消息发送之后没有办法收到broker的ack,那么生产者根据之前的机制的设定还会再次去发送,那么这条消息按照正常的链路来走的话就是被消费者消费两次。或者在消费完一条消息的时候,在提交offset的时候,消费者1挂掉了,然后消费者2继续将这条消息存放到数据库里面。
2025-10-14 20:05:03
5016
原创 Kubernetes 证书监控--x509-certificate-exporter
本文介绍了在Kubernetes集群中部署x509-certificate-exporter监控工具的配置方法。该工具通过监控集群节点上指定的证书文件和kubeconfig文件来获取证书信息。文章详细列出了需要监控的证书文件路径,并提供了从GitHub下载和修改配置文件的步骤,包括调整Chart版本号、镜像仓库地址等关键配置项。同时说明了如何通过Helm命令安装该工具,以及部署后如何检查Pod运行状态。最后还提供了异常处理建议,包括检查日志和解决证书文件权限问题的方法。
2025-09-23 17:53:45
4728
原创 RocketMQ 集群核心概念-消息重试-触发重试的条件
消息消费过程中,消费者会从broker获取消息但不会立即删除。消费者通过提交offset到consumerquenue文件来标记消息消费进度。若消费失败未提交offset,broker会保留消息并触发重试机制。当消费者宕机时,系统会通过rebalance机制将队列重新分配给其他消费者,新消费者会从最后一个已提交的offset位置继续消费。这种机制确保了消息不会因消费异常而丢失,同时支持负载均衡和故障转移。
2025-09-15 10:33:37
4562
原创 RocketMQ 集群核心概念-消息主从复制
生产者producer发送了一个消息过来,然后在master上面这个数据进来了,如果是同步方式的话,那么要等这个消息同步到slave节点上之后,那么这个broker集群才会返回ack给我们的producer。异步也可以得到broker返回的消息,但是发送完消息不需要一直等broker给我返回,这里只需要放一个回调函数,当broker返回确认消息,这个方法就会被调用,在发送完消息就可以做其他事情了。同步的方式:当生产者发送消息,消息同步到了从节点,这个时候才会返回确认消息给producer。
2025-09-10 20:48:11
4518
原创 RocketMQ 消息存储机制-索引文件及页缓存
摘要:RocketMQ采用混合存储结构,将生产者消息写入CommitLog文件,同时构建ConsumeQueue逻辑队列和IndexFile索引文件。IndexFile支持通过key或时间区间查询消息,底层采用hash索引结构。通过页缓存、顺序读写和零拷贝技术优化读写性能。Broker启动时通过abort文件判断上次关闭状态,配置信息存储在json文件中。这种设计保证了消息持久化存储和高效检索,同时支持长轮询消费模式。
2025-09-02 16:28:30
5336
原创 Velero 实现k8s跨集群迁移
K8s集群数据迁移指南 摘要:本文介绍了使用Velero工具实现Kubernetes集群间数据迁移的方法。首先需要在目标端部署干净的K8s集群,然后安装Velero服务端和客户端,配置与原集群相同的MinIO存储地址以获取备份文件。迁移过程包括:1)在目标集群部署Velero并连接源MinIO;2)查看并确认备份数据可用;3)执行还原命令;4)验证资源恢复情况。注意目标集群配置(如节点数、版本)可与源集群不同,但核心数据将保持一致。整个迁移过程实质是备份还原操作的跨集群实现,最终确保数据完整移植到新环境。
2025-09-02 11:20:46
4406
原创 velero 数据备份与恢复时的资源过滤(指定ns/资源/label)
本文介绍了Velero工具中资源过滤的使用方法,包括包含和排除标志的应用。通过include/exclude选项可以按命名空间、资源类型或标签选择性地备份和恢复Kubernetes对象。主要内容涵盖:1)包含功能(--include-)可指定特定资源;2)排除功能(--exclude-)可过滤不需要的资源;3)集群范围资源(--include-cluster-resources)的三种处理方式;4)标签选择器(--selector)实现更细粒度控制;5)特殊标签velero.io/exclude-from-
2025-08-27 15:46:34
4822
原创 RocketMQ 消息存储机制-消息刷盘
消息刷盘分为同步和异步两种方式。同步刷盘确保消息写入磁盘后才返回确认,可靠性高但吞吐量低;异步刷盘先将消息存入内存页缓存后立即返回确认,由后台线程异步写入磁盘,提高了吞吐量但存在数据丢失风险。两种方式在可靠性和性能之间各有侧重。
2025-08-26 20:08:08
2637
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅