阳江市最大人才招聘网,怎么做网站关键词优化,ac86u做网站服务器,世界足球排名最新1、Topic的分片和副本机制
分片作用#xff1a;
解决单台节点容量有限的问题#xff0c;节点多#xff0c;效率提升#xff0c;吞吐量提升。通过分片#xff0c;将一个大的容器分解为多个小的容器#xff0c;分布在不同的节点上#xff0c;从而实现分布式存储。
分片…1、Topic的分片和副本机制
分片作用
解决单台节点容量有限的问题节点多效率提升吞吐量提升。通过分片将一个大的容器分解为多个小的容器分布在不同的节点上从而实现分布式存储。
分片的数量没有限制与节点数量没有关系分片数量不会超过总节点数量的三倍。
副本作用
提升数据的可靠性副本越多数据越可靠但是数据冗余越高。
副本数量有限制最多和节点的数量相等但是一般构建1~3个之间。
2、Kafka如何保证数据不丢失
数据传输的三个阶段
生产者生产是数据到broker
broker存储数据
消费者从broker上消费数据
生产端如何保证数据不丢失
当生产者生产数据到Broker后Broker应该给于确认相应ack。
ack 确认机制主要有三种方案分别为0 1 -1(ALL)
0生产者只管将数据生产到Borker 不等待Broker返回的ack 信息
1生产者将数据生产到Broker需要等待Broker端Topic的对应分片上的主副本接收到消息后即为成功发送消息。
-1: 生产者将数据生产到broker需要等待broker端Topic的对应分片所有副本都接收到消息即为成功发送
生产中一般根据消息重要情况以及生成和消费速率来选择相应的级别。一般来说重要程度越高的安全级别越高速率越高优先保证安全性在此基础上保持平衡。
相关问题思考
1-生产者发送一条数据到BrokerBroker给于一次响应如果Broker迟迟不予响应怎么办
先等待然后重试最后报错先等待一段时间当超时后然后触发充重试策略进行重试擦擦操作当重试后依然没有响应最后程序报错停止发送。
2-生产者发送一条数据Broker就要给予一次响应那么这样是否会占用更多的带宽如果占用如何解决
肯定会影响可以引入缓存池生产者在生产数据的时候底层先将其放置到一个缓存池当池子中消息数据达到一批数据大小后会专门有一个子线程触发执行将数据生产到Broker此时Broker只需要对这一批数据给予一次响应即可异步发送。
3- 如果采用一批一批的发送如果Broker又没有给予响应但是此时缓存池中数据已经满了如何解决
可以选择直接清空缓存池或者不清空如果数据可以重复读直接报错清空即可后续重新读取数据即可如果数据不可重复读可以提前设置处理方案将每一个消息提前先找一个容器进行备份存储自己维护数据当发送成功删除一部分数据如果出错重启后先从这个容器将剩余的数据发送即可当然如果选择不清空那么一直等待即可。
相关的一些参数设置
buffer.memory 设置缓存池大小默认值3355443232M
retries 重试的次数默认值2147483647最终的重试策略取决于超时设置
batch.size 表示一批数据大小默认值1638416KB
delivery.timeout.ms 总超时时间默认值120000120S
requesst.timeout.ms 每一次请求后的超时时间等待时间默认值 3000030s