kafka
Catalina_yep
这个作者很懒,什么都没留下…
展开
-
kafka(九)---Kafka消息的可靠性
没有一个中间件能够做到百分之百的完全可靠,可靠性更多的还是基于几个9的衡量指标,比如4个9、5 个9. 软件系统的可靠性只能够无限去接近100%,但不可能达到100%。所以kafka如何是实现最大可能的可靠性呢?分区副本:你可以创建更多的分区来提升可靠性,但是分区数过多也会带来性能上的开销,一般来说,3个副本就能满足对大部分场景的可靠性要求acks:生产者发送消息的可靠性,也就是我要保证我这个消息一定是到了broker并且完成了多副本的持久化,但这种要求也同样会带来性能上的开销。它有几个可选项:原创 2020-12-20 16:23:58 · 223 阅读 · 0 评论 -
kafka(八)----分区的副本机制
一.分区的副本机制我们已经知道Kafka的每个topic都可以分为多个Partition,并且多个partition会均匀分布在集群的各个节点下。虽然这种方式能够有效的对数据进行分片,但是对于每个partition来说,都是单点的,当其中一个partition不可用的时候,那么这部分消息就没办法消费。所以kafka为了提高partition的可靠性而提供了副本的概念(Replica),通过副本机制来实现冗余备份。每个分区可以有多个副本,并且在副本集合中会存在一个leader的副本,所有的读写请求都原创 2020-12-20 16:16:58 · 279 阅读 · 0 评论 -
kafka(七)----如何保存消费端的消费位置
一.什么是offset每个topic可以划分多个分区(每个Topic至少有一个分区),同一topic下的不同分区包含的消息是不同的。每个消息在被添加到分区时,都会被分配一个offset(称之为偏移量),它是消息在此分区中的唯一编号,kafka通过offset保证消息在分区内的顺序,offset的顺序不跨分区,即kafka只保证在同一个分区内的消息是有序的; 对于应用层的消费来说,每次消费一个消息并且提交以后,会保存当前消费到的最近的一个offset。那么offset保存在哪里?offset在哪里维护?原创 2020-12-20 16:05:54 · 486 阅读 · 1 评论 -
kafka(六)----如何确定coordinator
一.谁来执行Rebalance以及管理consumer的group呢?kafka提供了一个角色,coordinator来执行对于consumer group的管理,当consumer group的第一个consumer启动的时候,它会去和kafka server确定谁是它们组的coordinator。之后该group内的所有成员都会和该coordinator进行协调通信二.如何确定coordinatorconsumer group如何确定自己的coordinator是谁呢, 消费者向kafka集群中的原创 2020-12-20 15:39:20 · 1304 阅读 · 4 评论 -
kafka(五)----kafka的分区分配策略
一.什么是分区分配策略同一个group中的消费者对于一个topic中的多个partition,存在一定的分区分配策略。在kafka中,存在三种分区分配策略,一种是Range(默认),另一种是RoundRobin(轮询),StickyAssignor(粘性),在消费端中的ConsumerConfig中,通过这个属性来指定分区分配策略public static final String PARTITION_ASSIGNMENT_STRATEGY_CONFIG = "partition.assignment原创 2020-12-20 15:20:32 · 463 阅读 · 0 评论 -
kafka(四)---kafka的使用原理
一.关于Topic和PartitionTopic在kafka中,topic是一个存储消息的逻辑概念,可以认为是一个消息集合。每条消息发送到kafka集群的消息都有一个类别。物理上来说,不同的topic的消息是分开存储的,每个topic可以有多个生产者向它发送消息,也可以有多个消费者去消费其中的消息。Partition每个topic可以划分多个分区(每个Topic至少有一个分区),同一topic下的不同分区包含的消息是不同的。每个消息在被添加到分区时,都会被分配一个offset(称之为偏移量)原创 2020-12-20 15:09:02 · 126 阅读 · 0 评论 -
kafka(三)----java中使用kafka进行通信
一.kafaka的异步发送kafka对于消息的发送,可以支持同步和异步,同步会需要阻塞,而异步不需要等待阻塞的过程,从本质上来说,kafka都是采用异步的方式来发送消息到broker,但是kafka并不是每次发送消息都会直接发送到broker上,而是把消息放到了一个发送队列中,然后通过一个后台线程不断从队列中取出消息进行发送,发送成功后会触发callback,kafka客户端会积累一定量的消息统一组成一个批量消息发送出去,触发条件是前面提到的batch.size和linger.ms.而同步发送的方法,原创 2020-12-20 14:51:49 · 482 阅读 · 0 评论 -
kafka(二)---kafka的安装部署
一.下载https://archive.apache.org/dist/kafka/2.0.0/kafka_2.11-2.0.0.tgz二.安装过程安装过程非常简单,只需要解压就行,因为这个是编译好之后的可执行程序tar -zxvf kafka_2.11-2.0.0.tgz三.配置zookeeper因为kafka依赖于zookeeper来做master选举一起其他数据的维护,所以需要先启动zookeeper节点kafka内置了zookeeper的服务,所以在bin目录下提供了这些脚本zo原创 2020-12-19 11:48:13 · 139 阅读 · 1 评论 -
kafka(一)----应用场景分析及名词解释
一.什么是KafkaKafka是一款分布式消息发布和订阅系统.他的特点是高性能,高吞吐量,最早设计的目的是作为LinkedIn的活动流和运营数据的处理管道。这些数据主要是用来对用户做用户画像分析以及服务器性能数据的一些监控,所以kafka一开始设计的目标就是作为一个分布式、高吞吐量的消息系统,所以适合运用在大数据传输场景二.Kafka的应用场景由于Kafka具有更好的吞吐量,内置分区,冗余及容错性的优点(Kafka每秒可以处理十几万的消息),让Kafka成为了一个很好的大规模消息处理应用的解决方案,所原创 2020-12-19 11:38:35 · 398 阅读 · 1 评论