Kafka
wanting1024
尝试把这几年的积累形成闭环
展开
-
原来 8 张图,就可以搞懂「零拷贝」了
前言磁盘可以说是计算机系统最慢的硬件之一,读写速度相差内存 10 倍以上,所以针对优化磁盘的技术非常的多,比如零拷贝、直接 I/O、异步 I/O 等等,这些优化的目的就是为了提高系统的吞吐量,另外操作系统内核中的磁盘高速缓存区,可以有效的减少磁盘的访问次数。这次,我们就以「文件传输」作为切入点,来分析 I/O 工作方式,以及如何优化传输文件的性能。正文为什么要有 DMA 技术?在没有 DMA 技术前,I/O 的过程是这样的:CPU 发出对应的指令给磁盘控制器,然后返回; ...转载 2020-09-24 18:22:02 · 114 阅读 · 0 评论 -
八、Kafka-幂等
ps : kafka幂等是针对producer来说的1、消息语义At most once : 消息可能会丢失,但不会重复At least once : 消息不会丢失,但可能重复Exactly once : 正好一次。消息不会丢失也不会重复2、为什么需要幂等?在0.11.0.0之前,如果producer未能收到已提交消息的response,除了重新发送消息外别无选择,但提供了至少一次的语义保证。即原始请求已经成功,但因为某些原因(网络抖动、超时等问题),导致producer没有收到broke原创 2020-09-13 21:50:09 · 206 阅读 · 1 评论 -
七、Kafka offset概念及提交方式
1.偏移量kafka的消息所在的位置由Topic、Partitions、Offsets三个因素决定。Offset代表Partition中的消息的顺序ID。例如:第一个进入的Offset为0,第二个为1,以此类推。由于消费者消费Kafka消息也与Offset和consumer的group.id有关,故此维护好消息的Offset对于避免消息的重复消费与遗漏消费,确保消息的Exactly-once是至关重要的。2. 提交偏移量当我们在程序中使用poll()拉取消息时,Kafka总是返回生产者写入但原创 2020-09-09 23:15:44 · 2523 阅读 · 1 评论 -
六、Kafka consumer及ConsumerRebalanceListener实现
1. comsumer代码示例及ConsumerRebalanceListener实现public class ConsumerMessage { private static final String TOPIC_NAME = "topic-07"; public static void main(String[] args) { Properties props = new Properties(); props.setProperty("boots原创 2020-09-06 09:23:24 · 1801 阅读 · 1 评论 -
五、Kafka 消息存储与同步
一、副本分配1、副本分配原则将副本平均分配给Broker 对于分配给特定的Broker分区,该分区的其他副本分布在其他Broker上 如果所有Broker都有机架信息,则尽可能将每个分区的的副本分配给不同的机架2、无机架从Broker列表中随机选取一个Broker作为起始位置,通过轮询分配每个分区的第一个副本 以增加位移的方式为每个分区分配剩余的副本 如下图,3个分区,3个副本。第一个Leader分区被分配到broker1上,那么其他两个分区会分配到broker2和broker原创 2020-08-27 22:03:12 · 548 阅读 · 0 评论 -
四、Kafka的元数据-MetaData
1、元数据(MetaData):服务器活动状态 Topic和Topic的分区 Partition都有哪些Replication 哪个Replication是Leaderps: 一般情况下,客户端会把元数据缓存起来,并直接往目标Broker上发送生产请求和获取请求。 客户端需要定时发送元数据请求来刷新这些信息。 2、元数据请求时序图:...原创 2020-08-18 22:59:22 · 2468 阅读 · 0 评论 -
三、Kafka Producer发送消息及分区策略
1、Producer代码实现ps:不建议使用自定义序列化和反序列化,他们会把生产者和消费者耦合在一起,且容易出错// 同步发送消息、// 异步发送消息public class KafkaProducerDemo { private static Properties prop; private static KafkaProducer<String, String> producer; private static final String TOPIC_N.原创 2020-08-18 16:07:50 · 4257 阅读 · 0 评论 -
二、Kafka安装及伪分布式部署
PS: Windows不是良好的运行环境 运行Kafka必须要先运行Zookeeper。可以使用内置的Zookeeper,也可以使用另外安装的Zookeeper 文件描述符限制,官方建议至少使用100000个文件描述符作为起点 设置合适的vm.max_map_count 1、下包$ wget https://mirror.bit.edu.cn/apache/kafka/2.5.0/kafka_2.12-2.5.0.tgzs2、配置这里进行单机伪分布式配置原创 2020-08-16 16:37:26 · 306 阅读 · 0 评论 -
一、Kafka基本概念整理
1、什么是kafka? Kafka最初由LinkedIn公司使用Scala开发的一个分布式、多分区、多副本,基于ZK协调的内部基础设施,先已捐给Apache。 Kafka是一个流平台,主要用来发布和订阅数据流。 Kafka具有水平可伸缩性、容错性、快速性 2、Topic Topic是Kafka的核心抽象,Topic是将信息记录到的某个类别或订阅源名称。 可用来区分业务系统。 特点: Topic始终是多用户的,即一个Topic可以有0个、1个或原创 2020-08-16 16:31:50 · 217 阅读 · 0 评论