消息队列
文章平均质量分 94
消息队列相关文章
jazon@
芜湖
展开
-
从KafkaProducer源码学习异步发送,缓冲区管理,NIO编程。
KafkaProducer初始化参数clientId没主动设置clientId时,后台都会生成一个client.id,producer-自增长的数字,producer-1。partitioner决定消息路由到Topic的哪个分区里去的metadata组件,生产端拉取Topic的元数据,包括Topic有哪些分区,分区的Leader位于哪个broker,有一个metadata.max.age参数默认是五分钟,强制重新刷新数据。request.max.size默认是1mb,一次请求最大为1原创 2021-06-06 23:54:05 · 826 阅读 · 4 评论 -
Kafka监测
Kafka监测非同步分区监测如果集群里多个非同步分区数量一直不变,应该是broker离线了。诊断问题前,试着运行默认的副本选举。如果数量恒定,但是没有broker离线或者数量波动,则需要根据非同步分区的情况进行分析,检查其共性,kafka-topic.sh --zookeeper zoo1.example.com:2181/kafka-cluster --describe。如果没有发现哪个broker级别的问题,那么就是整个集群的问题了。集群级别的问题一般分为两类:不均衡的负载和资源过度消耗。负载不原创 2020-11-08 17:21:00 · 440 阅读 · 0 评论 -
保证Kafka的可靠性
可靠性保证Kafka可以保证分区消息的顺序只有当消息被写入分区的所有同步副本时,它才被认为是"已提交"的。生产者可以选择接收不同类型的确认。只要还有一个副本是活跃的,那么已经提交的消息就不会丢失。消费者只能读取已经提交的消息。复制分区首领是同步副本,而对于跟随者副本来说,它需要满足以下条件才能被认为是同步的。与ZooKeeper之间有一个活跃的会话,也就是说,在过去的6s(可配置)内向Zookeeper发送过心跳。在过去的10s内从首领那获取过消息。在过去的10s内从首领那获取过最新原创 2020-11-08 16:41:50 · 194 阅读 · 0 评论 -
深入Kafka
深入Kafka集群成员关系每个broker都有一个唯一标识符,在broker启动时,通过创建临时节点把自己的ID注册到Zookeeper。Kafka组件订阅Zookeeper的/brokers/ids路径,当有broker加入集群或退出集群时,这些组件可以获得通知。在broker停机,出现网络分区或长时间垃圾回收停顿时,broker会在Zookeeper上断开连接,此时临时节点自动移除,其他broker能够感知到。在关闭broker时,它对应的节点会消失,不过它的ID会继续存在于其他数据结构中。在完全原创 2020-11-08 16:41:30 · 126 阅读 · 0 评论 -
KafkaConsumer
KafkaConsumer消费者群组和分区再平衡一个新的消费者加入群组时,它读取的是原本由其他消费者读取的消息。当一个消费者被关闭或发生崩溃时,它就离开群组,原本由它读取的分区将有群组里的其他消费者来读取。在主题发生变化时,比如加入了新的分区,也将发生重新分配。分区的所有权从一个消费者转移到另一个消费者,称为再均衡。再均衡期间,消费者无法读取消息,造成整个群组一小段时间不可用。当分区被重新分配给另一个消费者时,消费者当前的读取状态会丢失,有可能还需要去刷新缓存。这样会拖慢整个应用程序。消费者通过向被原创 2020-11-08 16:40:48 · 223 阅读 · 0 评论 -
Kafka生产者
Kafka生产者生产流程一个ProducerRecord包含topic,partition,key,value。键和值要序列化才能在网络上传输,接下来到达分区器,如果没有指定分区,分区器会根据ProducerRecord对象的键来选择一个分区,指定了分区则直接返回。紧接着,这条记录被添加到一个记录批次里,这个批次里的所有消息都会发送到相同的主题和分区上。服务器收到后消息后会返回一个响应,如果消息成功写入Kafka,就会返回一个RecordMetaData,里面包含了topic,分区,分区偏移量。如果写原创 2020-11-08 16:40:22 · 164 阅读 · 0 评论 -
Kafka调优
Kafka调优这些参数通常与虚拟内存、网络子系统和用来存储日志片段的磁盘挂载点有关,一般配置在/etc/sysctl.conf中。1.虚拟内存对于大多数依赖吞吐量的应用程序来说,尽量避免内存交换。内存页和磁盘之间的交换对Kafka各方面的性能都有重大影响。Kafka大量地使用系统页面缓存,如果虚拟内存被交换到磁盘,说明已经没有多余内存可以分配给页面缓存了。建议把vm.swappiness参数的值设置得小一点,比如1,这样可以防止系统内存不够用的时候,进程突然中止,又可以减少内存交换次数。该参数指明了原创 2020-11-08 14:50:55 · 441 阅读 · 5 评论 -
kafka(一)
分布式流处理平台Kafka高吞吐,低延时,O(1)的时间复杂度,用于实时事件响应的场景。分布式,副本备份,有容错的集群。扩展性强支持队列和发布订阅模式Kafka的架构Producer即生产者将消息发往kafka实例(kafka Broker)的一个topic,如果topic配置了副本则kafka会将信息同步到Follower中,Leader负责与producer和consumer交互,而follower只负责从leader同步数据。一个topic的某一个分区能被多个分组消费,但是每个分组内只原创 2020-07-12 21:58:39 · 157 阅读 · 0 评论