憨
为什么会有消息系统
消息系统起到了一个什么作用呢?
缓存的作用
解耦合
异步处理的效果
流量控制
1. kafka的核心概念
Topic(主题):类似于关系型数据库里面的一张表(只是逻辑上的概念)
Partition(分区):跟数据里面的分区含义差不多,是为了提高性能的。
分区具体在服务器上面表现为其实就是一个目录
一个主题下面,有多个分区,这些分区会存储到不同的kafka的服务器上面
或者我们可以这样说:其实就是在不同的主机上面见了不同的目录
每个分区内部有
.index文件:
.log文件:存储message
.snapshot文件:
.timeindex文件
Producer(生产者):谁往消息系统里面发送数据,谁就是生产者
Consumer(消费者):谁从kafka里面去读取数据,谁就是消费者
Message(数据):在kafka里面我们管平时处理数据叫消息
Replica(副本):就是kafka副本,kafka的partition为了保证数据安全,所以每个partition可以设置多个副本
这些副本室友角色之分的。其中有一个是leader partition(replica之一),其余的都是follower。
我们的生产者生产数据的时候,是把数据发送到leader partition(leader replica)里面。
然后follower partition(follower replica)去leader partition那儿自己去同步数据。
我们消费者消费数据的时候,也是从leader partition这去消费数据的。
Consumer Group(消费者组):消费者组,我们在消费数据的时候,会在代码里面指定一个group.id
conf.setProperty(“group.id”,“testa”)
group.id代表的是一个消费组的名字。
创建一个TopicA主题,3个分区,指定每个分区有3个副本(副本指定2个是比较好的)设计一个分布式的系统,集群里面有服务器宕机,这是一个常态化的事
(kafka0.8之前,没有副本机制)
生产者发送数据到TopicA-0(Leader)
消费者消费数据到TopicA-0(Leader)
*****************************Kafka集群****************************************
-----------------------------------------------------------------------------------|
Broker
TopicA-0(leader)
TopicA-1
TopicA-2
-----------------------------------------------------------------------------------|
Broker
TopicA-1
TopicA-0(follower) 去 TopicA-0(leader)同步数据
TopicA-2
-----------------------------------------------------------------------------------|
Broker
TopicA-2
TopicA-0(follower)
TopicA-1
-----------------------------------------------------------------------------------|
憨