- 博客(1867)
- 收藏
- 关注
原创 Kafka JMS
先将50w的请求处理完了,然后再处理剩下的20w。而发布订阅模型是1对多的,所有订阅了主题的消费者在往主题中发布消息之后,他们都可以接受到。消息有生产,对于一个网站来说,就是这些用户发起请求的各种链接,这就是生产消息。消息队列具备的第一个能力是存储能力,能够将用户发过来的一些请求,一些消息给他存储起来,这就是一个容器。生产者负责向消息队列中去生产消息存到队列当中,而消费者是从队列当中来拉取消息进行处理,进行消费。生产者将消息发到队列当中,队列其实就是容器,消费者从队列当中提取这些消息进行消费。
2026-04-08 20:38:13
384
原创 必知必会之ZooKeeper数据模型
ZooKeeper(ZK)的核心配置包括心跳时间(tickTime=2000ms)、初始化容忍心跳数(initLimit=10)和同步失败容忍次数(syncLimit=5)。其数据模型为树形结构,节点可存储数据并设置ACL权限控制。节点分为永久节点和临时节点,后者在会话断开时自动删除,适用于分布式锁场景。每个节点带有版本号(类似乐观锁),用于并发控制。ZK不适合存储大容量数据,通常用于分布式锁或作为Dubbo注册中心。
2026-04-07 20:47:10
205
原创 zookeeper 集群在线迁移(扩容)详解
ZooKeeper集群原理及迁移指南 ZooKeeper是一个分布式协调服务,集群由Leader、Follower和Observer三种角色组成。Leader负责写操作,Follower和Observer提供读服务。集群选举基于Zxid和myid的比较,遵循过半机制(建议奇数节点)。数据同步通过原子广播保证一致性。 迁移过程需谨慎: 按myid顺序逐步扩容新节点 更新配置并重启各节点 最后缩容旧节点 确保每次变更后集群健康 关键点: 迁移期间保持服务可用 遵循先扩容后缩容原则 每次变更后验证集群状态 最终将
2026-03-30 14:35:37
743
原创 基于zk实现分布式锁的多种方式
摘要:分布式锁通过协调并发访问共享资源来保证操作安全。在微服务架构中,利用临时节点实现锁机制:获取锁时创建指定路径节点,释放时删除节点。基础实现存在空轮转问题,通过添加Watcher机制优化,但可能引发羊群效应。进一步优化方案是创建有序节点,按顺序唤醒等待程序,提高系统效率。
2026-03-24 20:38:41
643
原创 高级特性之dubbo超时机制及集群容错机制
摘要:Dubbo通过超时机制解决服务调用中的线程阻塞问题,配置参数如timeout、retries等可控制调用行为。其集群容错设计采用Failover策略作为默认方案,支持服务级和方法级重试配置,通过自动切换可用节点保障高可用性。但重试机制可能增加系统负载和响应时间,在特定场景下可能造成资源浪费。Dubbo提供多种容错策略,允许用户根据业务需求灵活配置,平衡系统可靠性与性能。
2026-03-17 11:02:14
1116
原创 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
1223
原创 企业中常见dubbo项目分层
本文介绍了基于Dubbo的分布式系统架构设计。系统采用分层架构:网关层负责统一对外接口,服务层处理业务逻辑,DAO层与数据库交互。重点阐述了Dubbo框架的实现机制:1)服务提供者启动时向注册中心注册服务信息;2)消费者订阅注册中心获取服务地址;3)通过API接口实现服务层与Web层的解耦,避免代码重复。文中还说明了各层间的调用关系:网关层调用服务层,服务层调用DAO层,并通过Dubbo实现远程服务调用,体现了分布式系统的高效协作机制。
2026-03-05 20:32:19
906
原创 zookeeper注册中心常见的三种模式
摘要:Zookeeper(ZK)的核心机制是ZAB协议,通过广播确保集群数据一致性和同步。ZAB协议包含三种模式:恢复模式在集群崩溃时选举新leader并恢复数据;同步模式在选举后,将leader数据同步到其他节点;当多数节点完成同步后,恢复模式结束。这两种模式共同保障ZK集群的高可用性和数据一致性。(150字)
2026-03-05 20:00:31
967
原创 zookeeper 日志文件清理
Zookeeper日志清理机制配置指南:1)在zoo.cfg中配置autopurge.purgeInterval(清理间隔)和autopurge.snapRetainCount(保留快照数);2)使用zkCleanup.sh脚本手动清理;3)通过cron设置定时清理任务;4)验证数据目录文件数量确认清理效果。合理配置可有效管理磁盘空间,确保Zookeeper稳定运行。
2026-03-05 10:41:48
1255
原创 zookeeper集群核心知识之三种角色及其作用
ZooKeeper集群中,leader负责处理所有写请求并协调数据修改流程,需获得多数节点同意后才能执行写入。follower只能处理读请求,会将写请求转发给leader,并参与leader选举。observer是一种特殊节点,可以分担读请求但不参与选举投票,这既提高了读取性能又避免了跨机房部署时的选举延迟问题。observer宕机不会影响集群运行,使其成为提升读取效率的安全选择。这种角色分工有效平衡了读写性能和集群稳定性需求。
2026-03-05 09:42:36
1131
原创 JDBC 连接池
本文介绍了数据库连接池中max-active参数的作用及常见配置参数含义。max-active用于限制连接池中最大活动连接数,防止资源过度占用导致性能下降。文章详细解析了连接池配置参数如name、auth、driverClassName等的功能,并对比了maxIdle、minIdle、initialSize等性能调优参数。同时阐述了连接池的工作原理,包括连接的获取、归还机制,以及如何通过HikariCP等实现来管理JDBC连接。最后指出合理配置连接池参数对系统性能优化的重要性,强调连接池在减少连接创建开销、
2026-01-08 17:19:41
3526
原创 Zookeeper 介绍
本文介绍了Apache ZooKeeper作为分布式协调服务框架的基本概念和用法,重点演示了其在Dubbo分布式系统中的应用。主要内容包括:ZooKeeper通过ZAB协议保证集群数据一致性,提供选主、分布式锁等功能;详细展示了使用Docker部署ZooKeeper及基本命令行操作;通过示例代码说明Dubbo如何利用ZooKeeper实现服务注册发现,包括服务提供者和消费者的注册流程及数据存储结构。文章还介绍了Dubbo与ZooKeeper的交互过程,展示了服务注册、订阅和动态感知的完整机制。
2026-01-08 15:50:35
3430
原创 RocketMQ 死信队列
摘要:死信队列是RocketMQ中处理无法正常消费消息的特殊队列。当消息达到最大重试次数(默认16次)仍消费失败时,会被自动转移到对应的死信队列。死信队列按消费者组创建,存储该组所有相关topic的失败消息,保留时间与普通消息相同(默认48小时)。建议为死信队列配置专门消费者进行兜底处理,如记录日志或特殊业务操作。通过控制台可对死信消息进行重发操作。死信队列机制确保了异常消息不会丢失,为系统提供了可靠的消息处理保障。
2026-01-07 20:15:55
3034
原创 分布式框架Dubbo详细介绍和使用
摘要:Apache Dubbo是一款高性能Java RPC框架,提供分布式服务治理能力。其核心架构包含服务提供者(Provider)、消费者(Consumer)、注册中心(Registry)和监控中心(Monitor)四大组件,支持多种协议和序列化方式。通过XML配置可快速实现服务注册与发现,示例展示了定义HelloService接口、实现类及Dubbo的XML配置过程,包括服务暴露和引用。Dubbo简化了分布式系统开发,具有负载均衡、容错等特性,适合构建企业级微服务架构。
2026-01-06 15:31:45
3012
原创 Zookeeper原理和Dubbo中的作用
Zookeeper是一个分布式协调服务,用于管理配置信息、命名服务、分布式锁等。它采用ZAB协议保证数据一致性,通过领导者选举和数据同步机制实现集群协调。在Dubbo框架中,Zookeeper作为注册中心,支持服务注册、发现、心跳检测和动态切换功能。配置示例展示了如何通过XML文件集成Zookeeper与Dubbo,实现服务提供者和消费者的通信协调。Zookeeper为分布式系统提供了高可用、负载均衡等关键支持。
2026-01-05 14:33:27
3359
原创 深入理解zookeeper session机制
ZooKeeper的session机制是客户端与服务端建立连接的核心机制。session创建时初始状态为connecting,连接成功后变为connected,通过心跳机制维持存活状态。session可设置超时时间,若超时未交互则自动断开。当session过期时,所有临时节点会被自动删除。心跳机制类似ping操作,客户端定期发送心跳包表明存活状态。实验表明,快速重连时临时节点仍存在,因为未超过session超时时间;而长时间断开或手动关闭session后,临时节点会被清除。这种机制确保了分布式系统的节点状态
2025-12-22 10:14:47
3394
原创 Zookeeper监控指标详解:Prometheus+Granfa实战
摘要:Zookeeper作为分布式系统的核心组件,其稳定性直接影响整个架构。本文针对Zookeeper监控难题,提出完整解决方案:首先解析核心指标(连接数、请求延迟、Leader选举等)及其重要性;然后详细指导如何从零搭建Prometheus+Grafana监控系统,包括配置Exporter、采集指标和数据可视化;最后提供性能优化建议和常见问题排查方法。通过这套方案,开发者可实时掌握Zookeeper健康状态,快速定位故障,预防系统崩溃,确保分布式协调服务稳定运行。
2025-12-18 14:50:48
4012
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
3545
原创 Zookeeper 分布式应用知识CAP理论知识
任何用户在某次会话中,一旦读到某个数据在某次更新后的值,那么在 本次会话中就不会再读到比这值更旧的值会话一致性是在单调一致性的基础上进一步放松约束,只保证单个用户单个会话内的单调性,在不同用户或同一用户不同会话间则没有保障。(只要数据更新之后被用户读取到了,这个用户就不会再读取到旧的值,获取到的数据是单调递增的)(服务一直可用,而且是正常响应时间)(zk其中有节点宕机了,这个时候要重新进行选举,在选举的期间是不能对外进行读写的,其实就是牺牲了可用性)个节点,挂了几个,不影响服务,越多机器越好)
2025-12-07 13:27:41
3661
原创 zookeeper 什么是微服务注册中心?
摘要:注册中心是服务治理的核心组件,基于生产者-消费者模型运作。服务提供者启动时向注册中心注册信息,消费者通过订阅获取服务地址。以Dubbo+Zookeeper为例,提供者将URL写入ZK目录,消费者订阅获取地址并注册自身信息。注册中心通过心跳机制监测服务可用性,超时未响应则删除节点并通知消费者。这种机制实现了服务的动态发现和故障处理,避免了手动修改配置的中断问题。Dubbo+ZK组合是常见的注册中心实现方案,通过目录订阅和心跳机制有效管理服务生命周期。
2025-12-04 10:22:11
3747
原创 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
4459
原创 RocketMQ集群核心概念 生产者端的负载均衡
摘要:RocketMQ的负载均衡分为生产者和消费者两部分。生产者通过TopicPublishInfo路由信息选择消息队列,MQFaultStrategy类定义容错策略,提供latencyFaultTolerance机制实现高可用。消费者基于拉模式获取消息,通过AllocateMessageQueueStrategy接口实现多种负载均衡策略,如平均哈希、循环平均、机房优先等。消费组内需保证队列分配均衡,避免单个消费者处理过多队列的情况。当队列与消费者关系变化时会触发rebalance重新分配。
2025-11-05 21:50:13
4682
原创 Kubernetes 在生产环境的调优笔记,建议收藏!
本文基于生产实践,详细剖析了Kubernetes集群从1000节点扩展到5000节点的系统化优化方案。核心内容包括:控制平面扩容与参数调优、etcd集群深度优化、网络架构升级、调度策略精细化等关键场景。通过某互联网公司真实案例,展示了分阶段实施的具体步骤和效果对比,最终实现APIServer响应时间降低85%、Pod调度时间缩短80%、节点资源利用率提升132%等显著优化。文章总结了大规模集群运维的关键经验,并展望了虚拟集群、边缘计算、AI调度等未来发展方向。为面临集群扩展挑战的架构师和运维工程师提供了可落
2025-10-21 09:14:19
5473
原创 RocketMQ 集群核心概念-幂等消息-幂等问题的出现
消费者在拿到消息以后,它已经将消息存在DB里面了,它已经完成它的业务了,正常要返回ack,只剩下最后一步提交offset,但是在提交offset的时候,不巧消费者挂掉了,那么意味着这个offset没有办法被提交。现在由于网络的抖动导致生产者这条消息发送之后没有办法收到broker的ack,那么生产者根据之前的机制的设定还会再次去发送,那么这条消息按照正常的链路来走的话就是被消费者消费两次。或者在消费完一条消息的时候,在提交offset的时候,消费者1挂掉了,然后消费者2继续将这条消息存放到数据库里面。
2025-10-14 20:05:03
5006
原创 Kubernetes 证书监控--x509-certificate-exporter
本文介绍了在Kubernetes集群中部署x509-certificate-exporter监控工具的配置方法。该工具通过监控集群节点上指定的证书文件和kubeconfig文件来获取证书信息。文章详细列出了需要监控的证书文件路径,并提供了从GitHub下载和修改配置文件的步骤,包括调整Chart版本号、镜像仓库地址等关键配置项。同时说明了如何通过Helm命令安装该工具,以及部署后如何检查Pod运行状态。最后还提供了异常处理建议,包括检查日志和解决证书文件权限问题的方法。
2025-09-23 17:53:45
4678
原创 RocketMQ 集群核心概念-消息重试-触发重试的条件
消息消费过程中,消费者会从broker获取消息但不会立即删除。消费者通过提交offset到consumerquenue文件来标记消息消费进度。若消费失败未提交offset,broker会保留消息并触发重试机制。当消费者宕机时,系统会通过rebalance机制将队列重新分配给其他消费者,新消费者会从最后一个已提交的offset位置继续消费。这种机制确保了消息不会因消费异常而丢失,同时支持负载均衡和故障转移。
2025-09-15 10:33:37
4549
原创 RocketMQ 集群核心概念-消息主从复制
生产者producer发送了一个消息过来,然后在master上面这个数据进来了,如果是同步方式的话,那么要等这个消息同步到slave节点上之后,那么这个broker集群才会返回ack给我们的producer。异步也可以得到broker返回的消息,但是发送完消息不需要一直等broker给我返回,这里只需要放一个回调函数,当broker返回确认消息,这个方法就会被调用,在发送完消息就可以做其他事情了。同步的方式:当生产者发送消息,消息同步到了从节点,这个时候才会返回确认消息给producer。
2025-09-10 20:48:11
4508
原创 RocketMQ 消息存储机制-索引文件及页缓存
摘要:RocketMQ采用混合存储结构,将生产者消息写入CommitLog文件,同时构建ConsumeQueue逻辑队列和IndexFile索引文件。IndexFile支持通过key或时间区间查询消息,底层采用hash索引结构。通过页缓存、顺序读写和零拷贝技术优化读写性能。Broker启动时通过abort文件判断上次关闭状态,配置信息存储在json文件中。这种设计保证了消息持久化存储和高效检索,同时支持长轮询消费模式。
2025-09-02 16:28:30
5315
原创 Velero 实现k8s跨集群迁移
K8s集群数据迁移指南 摘要:本文介绍了使用Velero工具实现Kubernetes集群间数据迁移的方法。首先需要在目标端部署干净的K8s集群,然后安装Velero服务端和客户端,配置与原集群相同的MinIO存储地址以获取备份文件。迁移过程包括:1)在目标集群部署Velero并连接源MinIO;2)查看并确认备份数据可用;3)执行还原命令;4)验证资源恢复情况。注意目标集群配置(如节点数、版本)可与源集群不同,但核心数据将保持一致。整个迁移过程实质是备份还原操作的跨集群实现,最终确保数据完整移植到新环境。
2025-09-02 11:20:46
4393
原创 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
4805
原创 RocketMQ 消息存储机制-消息刷盘
消息刷盘分为同步和异步两种方式。同步刷盘确保消息写入磁盘后才返回确认,可靠性高但吞吐量低;异步刷盘先将消息存入内存页缓存后立即返回确认,由后台线程异步写入磁盘,提高了吞吐量但存在数据丢失风险。两种方式在可靠性和性能之间各有侧重。
2025-08-26 20:08:08
2623
原创 RocketMQ 消息存储机制 CommitLog和ConsumerQu
摘要:RocketMQ通过CommitLog文件存储所有消息,采用顺序写入提升性能。为优化消费效率,引入ConsumeQueue作为索引,按Topic/QueueId组织,记录消息在CommitLog中的物理偏移量。CommitLog默认1G大小,写满后创建新文件;ConsumeQueue采用定长设计(20字节/条目),实现快速检索。这种物理存储+逻辑索引的架构既保证了消息持久化,又提升了消费性能,同时支持消费者偏移量管理以实现故障恢复。
2025-08-13 20:11:43
3267
原创 velero 资源备份恢复测试 定期备份
摘要:本文介绍了使用Velero工具进行Kubernetes集群备份和恢复的操作流程。主要内容包括:1)通过velerobackup create命令创建带时间戳的命名空间备份;2)使用velerobackup describe查看备份状态;3)演示删除命名空间后,通过velero restore create从指定备份恢复应用和数据;4)验证恢复后Pod和数据完整性。整个过程展示了Velero在K8s环境中的备份恢复能力,包括元数据备份、持久化数据恢复等功能。
2025-08-13 16:20:40
2825
原创 containerd 配置镜像加速
本文介绍如何配置containerd镜像加速器。首先修改config.toml文件,添加registry插件配置,指定证书目录。然后创建对应的certs.d目录结构,为docker.io、registry.k8s.io等镜像仓库配置hosts.toml文件,添加阿里云、DaoCloud、163等国内镜像源。配置完成后需重启containerd服务。注意ctr命令与crictl命令的差异,以及不同镜像仓库的配置方法。文中提供了docker.io、registry.k8s.io和k8s.gcr.io三种常见镜像
2025-08-13 14:06:46
4238
3
原创 Velero 简介和部署
摘要:Kubernetes集群备份工具Velero支持资源备份和PV数据迁移,与etcd备份形成互补。Velero通过API server进行细粒度备份(如按命名空间、标签等),支持周期性备份,而etcd直接备份整个数据库。部署Velero需安装客户端和服务端(控制器),配合对象存储(如Minio)使用,需配置访问凭证。Velero备份流程包括创建Backup对象、资源收集和存储上传,恢复时通过Restore控制器完成。相比etcd,Velero提供了更灵活的备份策略和迁移能力,适合生产环境集群数据的管理和
2025-08-05 16:47:43
3805
2
原创 如何使用 Nginx Ingress 实现金丝雀发布
本文详细介绍了如何使用Nginx Ingress实现金丝雀发布,包括两种主要场景:1)基于Header/Cookie的定向灰度发布,可将新版本面向特定用户群体;2)基于权重的流量比例切分(0-100%)。文章提供了完整的YAML配置示例,涵盖v1/v2版本部署、常规Ingress创建以及三种Canary策略实现(Header匹配、Cookie识别和权重分配)。同时指出了Nginx Ingress在Canary发布中的局限性,如仅支持两个版本共存、必须配置域名等。该方案适合使用Nginx Ingress且发布
2025-08-01 13:58:26
3503
原创 如何根据不同业务场景调节 HPA 扩缩容灵敏度
Kubernetes HPA自动扩缩容灵敏度控制指南 Kubernetes 1.18对HorizontalPodAutoscaler(HPA)进行了重要更新,新增了behavior字段用于控制扩缩容灵敏度。该功能允许用户根据业务需求定制化扩缩容策略:关键业务可配置快速扩容(立即新增9倍副本)和缓慢缩容(每10分钟缩1个Pod);非关键业务可设置缓慢扩容(每次新增1个Pod);还可禁止自动缩容或延长扩缩容时间窗口(最长10分钟)以避免误操作。这些特性通过scaleUp/scaleDown策略实现,使HPA能更
2025-07-23 15:16:04
3331
原创 Kubernetes 探针原理、效果以及配置建议
Kubernetes容器探针主要包括启动探针(StartupProbe)、存活探针(LivenessProbe)和就绪探针(ReadinessProbe)。启动探针用于检测容器初始化完成,存活探针判断容器是否正常运行,就绪探针确认容器是否准备好接收流量。探针支持HTTP请求、TCP连接和执行命令三种检测方式,并可通过参数调整探测行为。配置建议包括:慢启动应用应优先配置启动探针,调整合适的探测时间间隔,存活探针失败阈值应大于就绪探针等。探针失败时,存活探针会导致容器重启,就绪探针则从服务中移除实例。
2025-07-21 14:56:44
3659
原创 K8s 集群CoreDNS监控告警最佳实践
CoreDNS作为Kubernetes集群的核心DNS服务,其性能监控至关重要。关键监控指标包括:请求速率(按协议、记录类型分组)、响应速率(按状态码)、UDP/TCP请求/响应数据包大小(P50/P90/P99)、响应时延(P99阈值建议设为1s)以及缓存指标(记录数、命中/丢失率)。这些指标通过Prometheus采集,使用PromQL进行查询和告警配置。重点需关注P99响应时延、请求速率和缓存命中率,其中响应时延初始告警阈值可设为1秒(基于DNS解析超时时间2s),后续根据实际数据优化。
2025-07-21 11:18:50
2925
原创 Kubernetes NodeLocal DNSCache 简介
DNSConfig动态注入控制器,基于Admission Webhook机制拦截Pod创建的请求,自动注入使用DNS缓存的Pod DNSConfig配置;DNS缓存代理,在每个集群节点上创建一个虚拟网络接口(默认监听IP 169.254.20.10),配合Pod的DNSConfig和节点上的网络配置,Pod内产生的DNS请求会被该服务所代理。工作原理图如下图所示:1、已注入DNS本地缓存的Pod,默认会通过NodeLocal DNSCache的服务地址(169.254.20.10)解析域名;
2025-06-27 10:59:01
3575
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅