一、日志持久化设计1. partition的持久化队列结构:数据按先后顺序依次追加在文件末尾,读写操作分开,如下图所示。这种结构有如下优势:所有的操作复杂度都是O(1),读操作不会阻塞写操作,读操作之间也不会互相影响。由于性能和数据大小完全分离开来——服务器现在可以充分利用大量廉价、低转速的1+TB SATA硬盘,通过顺序写的方式追加数据。虽然这些硬盘的寻址性能很差,但他们在大规模读写方面的性能是            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-10-18 12:32:30
                            
                                45阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1.kafka每个节点叫做broker,producer向kafka发送消息时,是将消息发送给指定的topic。同时每个topic下面还细问分partition,具体到每条消息细分到哪个partition,是根据消息的key参数以及配置的partition规则来的,由于多个partition的存在,所以针对同一个topic,其吞吐量更高,并发性也越强 
 
  2.partition中消息都            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-09-08 20:02:25
                            
                                26阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、依赖环境准备1、检查JDK是否存在且和JVM版本一致,我这里系统是64位,JVM也是64位            2、如果出现以下报错则是JVM不一致 二、安装kafka 1、下载最新版本kafka      kafka官方下载路径: https://kafka.apache            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-17 17:24:47
                            
                                45阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            前言:Kafka是一个分布式的( distributed )、分区的( partitioned )、复制的( replicated )提交日志( commitlog )服务。“分布式”是所有分布式系统的特性;“分区”指消息会按照分区分布在集群的所有节点上;“复制”指每个分区都会有多个剧本存储在不同的节点上;“提交日志”指新的消息总是以追加的方式进行存储。日志的读写: 分区的每个副本存储在不同的消息            
                
         
            
            
            
            近闲来无事 学习下kafka 现将笔记总计如下一.简介  kafka是由Linkedin公司开发,是一个分布式的,分区的,多副本的,多订阅者的,基于zookeeper协调的分布式日志系统(MQ系统),常见可以用于web/ngix日志,访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目  主要应用场景:日志收集系统和消息系统  kafka主要涉及目标:             
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-09-21 16:06:57
                            
                                20阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
             一、Kafka线上集群部署方案既然是集群,那必然就要有多个Kafka节点机器,因为只有单台机器构成的kafka伪集群只能用于日常测试之用,根本无法满足实际的线上生产需求。 操作系统:kafka由Scals语言和Java语言编写而成,编译之后的源代码就是普通的.class文件,文本部署到哪个操作系统应该都是一样的,但是不同操作系统的差异还是给Kafka集群带来了相当大影响。&n            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-26 18:00:34
                            
                                34阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Kafka作为时下最流行的开源消息系统,被广泛地应用在数据缓冲、异步通信、汇集日志、系统解耦等方面。相比较于RocketMQ等其他常见消息系统,Kafka在保障了大部分功能特性的同时,还提供了超一流的读写性能。本文将针对Kafka性能方面进行简单分析,首先简单介绍一下Kafka的架构和涉及到的名词:1. Topic:用于划分Message的逻辑概念,一个Topic可以分布在多个Broke            
                
         
            
            
            
            生产者分析生产者(producer)是负责向Kafka提交数据的,我们先分析这一部分。Kafka会把收到的消息都写入到硬盘中,它绝对不会丢失数据。为了优化写入速度Kafka采用了两个技术, 顺序写入 和 MMFile。顺序写入: 因为硬盘是机械结构,每次读写都会寻址->写入,其中寻址是一个“机械动作”,它是最耗时的。所以硬盘最“讨厌”随机I/O,最喜欢顺序I/O。为了提高读写硬盘的速度,Ka            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-10 06:37:13
                            
                                40阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            一、消息分区 
不受单台服务器的限制,可以不受限的处理更多的数据
并且数据量过大之后,还会分段存储
二、顺序读写 
Kafka的消息时存储在磁盘中的文件中的,在写文件时以追加的方式写入,这个顺序读写效率是很高的
效率高主要是和随机读写进行比较,主要是磁盘的寻址过程效率高
磁盘顺序读写,提升读写效率
三、页缓存 
页缓存是linux中的            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-04-05 00:04:39
                            
                                54阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            顺序io:每次访问磁盘的一个块时,磁臂就需移动到正确的磁道上(这段时间为寻址时间),然后盘片就需旋转到正确的扇区上(这叫旋转时延)。这套动作需要时间。那下一个磁盘块又是如何呢?如果它在磁盘的某个地方,访问它会有同样的寻道和旋转时延,我们就把这种方式的IO叫做随机IO;但是如果它刚好就在你刚才访问的那一个磁盘块的后面,磁头就能立刻遇到,不需等待,这种IO就叫顺序IO 内存映射文件(Mema            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-22 10:12:48
                            
                                33阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            rocketmq 写文件 mmapMappedByteBuffer 写入消息的 byte 读文件 mmap读 MappedByteBuffer 发送消息给消费者 mmap + write一种:堆外 ByteBuffer 转堆内 byte 数组,通过 netty 发送另一种: netty 直接发送堆外            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2022-11-15 15:06:59
                            
                                114阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            kafka版本: 2.12-3.3.2<kafka_home>/config/server.properties配置文件#broker的全局唯一编号,不能重复,只能是数字。
broker.id=0
#============线程数配置===========
#处理网络请求的线程数量
num.network.threads=3
#用来处理磁盘IO的线程数量
num.io.threads=            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-22 18:44:10
                            
                                123阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            KafkaServer 会创建请求处理线程池 KafkaRequestHandlerPool,在请求处理线程池中会创建并启动多个请求处理线程 KafkaRequestHandlerrequestHandlerPool = new KafkaRequestHandlerPool(config.brokerId, socketServer.requestChannel, apis, config.nu            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-06-08 23:25:45
                            
                                50阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            DesignPersistence:    kafka高度依赖于文件系统来存储和缓存消息。对于磁盘的正确认识:对磁盘的线性读写比随机读写快很多倍,且有研究表明:对磁盘的线性读写在有些情况下可以比内存的随机访问要更快!Efficiency: too many small I/O operation)和过多的字节拷贝(excessive byte coping)。   &            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-09 11:18:56
                            
                                33阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            1.acksacks=0: 生产者在写入消息之前不会等待任 何来自服务器的响应,容易丢消息,但是吞吐量高。acks=1: 只要集群的首领节点收到消息,生产者会收到来自服务器的成功响应。如果消息无法到达首领节点(比如首领节点崩溃,新首领没有选举出 来),生产者会收到一个错误响应,为了避免数据丢失,生产者会重发消息。不过,如果一个没有收到消息的节点成为新首领,消息还是会丢失。默认 使用这个配置。ack            
                
         
            
            
            
             一:Kafka特性1.为什么要用消息队列      《解耦、异步、削峰》  1.1高吞吐量、低延迟: kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个主题可以分多个分区,消费组对分区进行消费操作。  1.2可扩展性: kafka集群支持热扩展  1.3持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失  1.4容错性:允许            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-07 13:19:21
                            
                                39阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            1.为何kafka把消息存在磁盘上,但可以轻松支持每秒百万级的写入请求 / kafka高吞吐率的原因?kafka为了防止丢失数据,将收到的消息写入磁盘中,但仍能保证高吞吐率,超过了大部分的消息中间件,使得kafka在日志处理等海量数据场景广泛应用。为了优化写入速度kafka采用了顺序写入和MMFile两个技术。因为硬盘是机械结构,每次读写都会寻址->写入,其中寻址是一个“机械动作”,它是最耗            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-28 09:38:05
                            
                                35阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            Kafka 是一个分布式流媒体平台,支持高吞吐量、高度分布式、容错和低延迟的消息传递的中间件.让我们了解是什么让 Kafka 如此之快的原因?低延迟 IO:在消息传递中实现低延迟的传统方法之一是通过随机存取存储器 (RAM)。虽然这种方法使它们速度很快,但 RAM 的成本远高于磁盘。当您有数百 GB 的数据时,这样的系统通常运行成本更高。Kafka 依赖磁盘进行存储和缓存。但问题是,磁盘比 RAM            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-03-27 10:44:53
                            
                                44阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            broker:(kafka的节点,也就是服务器)1.接受来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存。2.为消费者提供服务,对读取分区的请求作出相应,返回保存到磁盘的消息(大部分工作就是处理客户端、分区副本和控制器发送给分区首领的请求)。控制器:其实就是一个broker,除了具有一般broker功能之外,还负责分区首领的选举。集群里启动的broker会在zookeeper里创建临时节点            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-02-10 20:40:21
                            
                                34阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、批量插入sql语句(合并数据)能够提高程序的插入效率。主要原因是合并后日志量(MySQL的binlog和innodb的事务)减少了,降低日志刷盘的数据量和频率,从而提高效率。通过合并SQL语句,同时也能减少SQL语句解析的次数,减少网络传输的IO。二、在事务中进行插入处理(前提是数据库是基于InnoDB存储引擎)使用事务可以提高数据的插入效率,这是因为进行一个INSERT操作时,MySQL内部            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-05-16 10:10:58
                            
                                75阅读