| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 大数据 -> Kafka高可用 -> 正文阅读 |
|
[大数据]Kafka高可用 |
一.安装kafkakafka官网:http://kafka.apache.org/ 1.Docker安装zookeeper Kafka对于zookeeper是强依赖,保存kafka相关的节点数据,所以安装Kafka之前必须先安装zookeeper 下载镜像:
创建容器
2.Docker安装kafka 下载镜像:
创建容器:
二.集群
三.备份机制(Replication)
Kafka 定义了两类副本:
同步方式: ISR(in-sync replica)需要同步复制保存的follower 如果leader失效后,需要选出新的leader,选举的原则如下: 第一:选举时优先从ISR中选定,因为这个列表中follower的数据是与leader同步的 第二:如果ISR列表中的follower都不行了,就只能从其他follower中选取 极端情况,就是所有副本都失效了,这时有两种方案: 第一:等待ISR中的一个活过来,选为Leader,数据可靠,但活过来的时间不确定 第二:选择第一个活过来的Replication,不一定是ISR中的,选为leader,以最快速度恢复可用性,但数据不一定完整 四.kafka生产者详解一.发送类型同步发送:使用send()方法发送,它会返回一个Future对象,调用get()方法进行等待,就可以知道消息是否发送成功
异步发送:调用send()方法,并指定一个回调函数,服务器在返回响应时调用函数
二.参数详解一.ack
二.retries
三.消息压缩默认情况下, 消息发送时不会被压缩。
使用压缩可以降低网络传输开销和存储开销,而这往往是向 Kafka 发送消息的瓶颈所在。 五.kafka消费者详解一.消费者组
二.消息有序性应用场景:
三.提交和偏移量kafka不会像其他JMS队列那样需要得到消费者的确认,消费者可以使用kafka来追踪消息在分区的位置(偏移量) 消费者会往一个叫做_consumer_offset的特殊主题发送消息,消息里包含了每个分区的偏移量。如果消费者发生崩溃或有新的消费者加入群组,就会触发再均衡 如果消费者2挂掉以后,会发生再均衡,消费者2负责的分区会被其他消费者进行消费 问题一: 如果提交偏移量小于客户端处理的最后一个消息的偏移量,那么处于两个偏移量之间的消息就会被重复处理。 如果提交的偏移量大于客户端的最后一个消息的偏移量,那么处于两个偏移量之间的消息将会丢失。 解决: 如果想要解决这些问题,还要知道目前kafka提交偏移量的方式: 1.自动提交偏移量: 当enable.auto.commit被设置为true,提交方式就是让消费者自动提交偏移量,每隔5秒消费者会自动把从poll()方法接收的最大偏移量提交上去 2.手动提交,当enable.auto.commit被设置为false可以有以下三种提交方式: 2.1.提交当前偏移量(同步提交): 把 只要没有发生不可恢复的错误,commitSync()方法会一直尝试直至提交成功,如果提交失败也可以记录到错误日志里。
2.2.异步提交: 手动提交有一个缺点,那就是当发起提交调用时应用会阻塞。当然我们可以减少手动提交的频率,但这个会增加消息重复的概率(和自动提交一样)。另外一个解决办法是,使用异步提交的API。
2.3.同步和异步组合提交: 异步提交也有个缺点,那就是如果服务器返回提交失败,异步提交不会进行重试。相比较起来,同步提交会进行重试直到成功或者最后抛出异常给应用。异步提交没有实现重试是因为,如果同时存在多个异步提交,进行重试可能会导致位移覆盖。 举个例子,假如我们发起了一个异步提交commitA,此时的提交位移为2000,随后又发起了一个异步提交commitB且位移为3000;commitA提交失败但commitB提交成功,此时commitA进行重试并成功的话,会将实际上将已经提交的位移从3000回滚到2000,导致消息重复消费。
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 7:52:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |