• 2024-10-01Linux 部署Zookeeper集群详解
    Zookeeper是一个分布式协调服务,它可以用来解决分布式系统中的很多问题,如配置管理、分布式锁、集群管理等。以下是如何在Linux环境下部署Zookeeper集群的详细步骤,以及Zookeeper集群的工作原理和选举原理。Zookeeper集群工作原理Zookeeper集群由一个领导者(Leader)和多个跟随
  • 2024-09-29Kafka:架构与核心机制
    ApacheKafka是一种高吞吐量的分布式消息队列,广泛应用于实时数据流处理和大数据架构中。本文将详细探讨Kafka的架构、Replica管理、消息读取、分区策略、可靠性保障等核心机制。1.Kafka的架构1.1组件概述Kafka的架构由多个组件构成,主要包括以下部分:Broker:Kafka
  • 2024-09-28RocksDB代码分析——写入流程
    分析均基于v6.27.3。以下流程为了方便理解均经过了简化。首先,我们通过调用DB::Open来创建数据库,它返回了一个DB*。DB::Open内部调用了DBImpl::Open,在里面构造了一个DBImpl*并转换成DB*返回。所以我们拿到的DB*其实是DBImpl*。然后我们调用DB::Put来写入数据。DB::Put是个virtual
  • 2024-09-25ZooKeeper 学习笔记
    概述ZooKeeper是一个分布式协调服务,其设计初衷是为分布式软件提供一致性服务。ZooKeeper提供了一个类似Linux文件系统的树形结构,ZooKeeper的每个节点既可以是目录,也可以是数据,同时ZooKeeper提供了对每个节点的监控与通知机制。基于ZooKeeper的一致性服务,可以方便地实现
  • 2024-09-24Raft总结
    Raft算法State所有server都有的持久化状态先存储,然后响应RPCcurrentTerm当前任期,初始为0,单调递增votedFor当前任期投票给谁了,没有就是nulllog[]日志条目,每个条目都包含命令、Leader收到条目时的任期,第一个条目的index为1所有server都有的Volatilestate
  • 2024-09-24Lab3 Raft
    Lab3Raft1.GettingStarted代码位置:基础框架代码位置:src/raft/raft.go测试代码:src/raft/test_test.go建议测试时使用-race2.Thecode向raft/raft.go添加代码来实现Raft。实现必须支持以下接口//创建一个RaftServerrf:=Make(peers,me,persister,applyC
  • 2024-09-24Lab3 记录
    Part3A:leaderelection1.选举主要流程新服务器加入集群服务器在启动时状态是Follower。只要持续接收到Leader或Candidate的心跳信息,就继续保持Follower状态。开始选举每个Server都有一个随机的选举超时时间,选举超时在一个固定区间内随机选择(例如,150-300毫秒)如果Follo
  • 2024-09-18外包干了2年,技术退步明显。。。
    前言简单的说下,我大学的一个同学,毕业后我自己去了自研的公司,他去了外包,快两年了我薪资、技术各个方面都有了很大的提升,他在外包干的这两年人都要废了,技术没一点提升,学不到任何东西,一直都在点点点,其实感觉挺可惜的,毕竟我和他关系还算不错!前段时间他和我说了下,说不能在废下去了
  • 2024-09-15中间件知识点-消息中间件(Kafka)二
    Kafka一、Kafka介绍及基本原理kafka是一个分布式的、支持分区的、多副本、基于zookeeper的分布式消息系统/中间件。kafka一般不会删除消息,不管这些消息有没有被消费。只会根据配置的日志保留时间(log.retention.hours)确认消息多久被删除,默认保留最近一周的日志消息(日志
  • 2024-09-15分布式学习:Raft算法以及具体实现
    Raft算法一致性算法的要求:安全性,网络延迟、分区、丢包、重复和乱序等错误需要保证正确可用性:集群中只需要大多数机器即可运行不依赖时序保证一致性三种状态:follower,candidate,leader任期:逻辑时钟的作用,每一段任期从一次选举开始分票可能会导致一个任期没有leader用
  • 2024-09-14kafka集群架构设计原理详解
    目录从Zookeeper数据理解Kafka集群工作机制Kafka的Zookeeper元数据梳理1、zookeeper整体数据2、ControllerBroker选举机制3、LeaderPartition选举机制4、LeaderPartition自动平衡机制5、Partition故障恢复机制6、HW一致性保障-Epoch更新机制7、总结从Zookeeper
  • 2024-09-13ZooKeeper面试必备:ZooKeeper4种数据节点类型、了解事务ID
    1.ZooKeeper数据模型1.1ZooKeeper数据节点ZooKeeper的数据模型是一颗树结构,每一个树节点是一个数据节点,我们称它为ZNode。而每一个ZNode的节点路径标识使用斜杠/作为分隔符,我们可以在ZNode节点下写入数据、创建节点,这种斜杠/作为路径分隔符的方式和Unix文件系统路径非常相
  • 2024-09-10MIT6.824 课程-Raft
    FaultTolerance-Raft容错模式我们已经学习了以下几种容错模式(fault-tolerancepattern):计算冗余:MapReduce,但是所有计算由单点Master进行调度。数据冗余:GFS,也是依赖单点Master来对多个副本进行选主。服务冗余:VMware-FT依赖单个TestAndSet操作可以看出他们都依赖单
  • 2024-09-07Kafka原理剖析之「Topic创建」
    一、前言Kafka提供了高性能的读写,而这些读写操作均是操作在Topic上的,Topic的创建就尤为关键,其中涉及分区分配策略、状态流转等,而Topic的新建语句非常简单bashkafka-topics.sh\--bootstrap-serverlocalhost:9092\//需要写入endpoints--create--topictopicA //要创
  • 2024-09-06Kafka的三高设计原理
    1.生产者缓存机制--高性能生产者缓存机制的主要目的是将消息打包,减少网络IO频率kafka生产者端存在消息累加器RecordAccumulator,它会对每个Partition维护一个双端队列,队列中消息到达一定数量后或者到达一定时间后,通过sender线程批量的将消息发送给kafka服务端。(批量发送)2.
  • 2024-09-02分布式概念及选举算法
    概念  由很多自主的计算机组成。很容易地把运行在不同计算机上的不同应用程序集成到单个系统中。清晰的记录接口。轻松的扩展。分布式类型:分布式计算系统、分布式信息系统(数据处理)互斥    集中式算法      每个程序在需要访问临界资源时,先给协调
  • 2024-08-28kafka ---- producer与broker配置详解以及ack机制详解
    一、producer配置1、bootstrap.serverskafkabroker集群的ip列表,格式为:host1:port1,host2:port2,…2、client.id用于追踪消息的源头3、retries当发送失败时客户端会进行重试,重试的次数由retries指定,默认值是2147483647,即Integer.MAX_VALUE;在重试次数耗尽和delivery.
  • 2024-08-27面试官:Leader崩溃Follower不够新怎么办?
    这是一道非常经典的Kafka问题,是关于Leader在“异常”情况下的选举问题。背景我们知道Kafka中的Partition(分区)是存储消息的最终介质,但Partition又有两种分类:LeaderPartition:主分区,负责数据写入和读取。FollowerPartition:副本分区,用于数据备份和主节点宕机之后的分
  • 2024-08-25Zookeeper分布式一致性协议ZAB介绍
    目录ZAB协议介绍消息广播崩溃恢复数据同步ZAB写数据源码流程图整个Zookeeper就是一个多节点分布式一致性算法的实现,底层采用的实现协议是ZAB。ZAB协议介绍ZAB协议全称:ZookeeperAtomicBroadcast(Zookeeper原子广播协议)。Zookeeper是一个为分布式应用提供高效且
  • 2024-08-23[消息队列]kafka
    Kafka如何保证消息的消费顺序?我们在使用消息队列的过程中经常有业务场景需要严格保证消息的消费顺序,比如我们同时发了2个消息,这2个消息对应的操作分别对应的数据库操作是:更改用户会员等级。根据会员等级计算订单价格。假如这两条消息的消费顺序不一样造成的最终结果就会
  • 2024-08-21Linux CentOS 7 Kafka 单机版安装
    Kafka从2.6.0开始,默认使用Java11,3.0.0开始,不再支持Java8,详见:https://kafka.apache.org/downloadsProducer:消息生产者,就是向kafkabroker发消息的客户端:Consumer:消息消费者,向kafkabroker取消息的客户端;ConsumerGroup:消费者组,由多个consumer组成。消费者组
  • 2024-08-20ZooKeeper系列之ZAB协议
    概述ZooKeeperAtomicBroadcast,ZooKeeper原子消息广播协议。ZAB协议是为分布式协调服务ZK专门设计的一种支持崩溃恢复的原子广播协议。ZK主要依赖ZAB协议来实现分布式数据的最终一致性,基于该协议,ZK实现一种主备模式的系统架构来保持集群中各个副本之间的数据一致性。集群角色
  • 2024-08-18RabbitMQ集群 - 仲裁队列、Raft协议(最详细的选举流程)
    文章目录仲裁队列概述Raft协议概述基本概念选举流程(重点)消息复制仲裁队列的使用MQ管理平台SpringAMQP仲裁队列概述1)RabbitMQ普通队列在一个节点宕机之后,其他节点无法读写宕机节点的队列,为了解决这个问题,引入了仲裁队列.2)仲裁队列通过Raft协议,实现了不同
  • 2024-08-15KV存储之ETCD
    ETCD是一种分布式键值存储系统,主要用于分布式系统中的配置管理、服务发现和分布式协调。它由CoreOS团队开发,现在是CNCF(云原生计算基金会)托管的一个开源项目。ETCD在设计时非常注重一致性、可用性和性能,通常被用于容器编排系统(如Kubernetes)中,用作其后台数据存储。以下是
  • 2024-08-13图解Kafka | 彻底弄明白 Kafka 两个最重要的配置
    我已经使用Kafka近两年了,我发现有两个配置很重要,但是不太容易理解。这两个配置分别是acks和min.insync.replicas。本文将通过一些插图来帮助理解这2个配置,以便更好的使用Kafka为我们服务。复制我假设你已经熟悉Kafka了,但为了更好地理解这些配置,还是有必要回顾一下Kaf