(一)kafka

为什么会有消息系统

消息系统起到了一个什么作用呢?

  缓存的作用

  解耦合

  异步处理的效果

  流量控制

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



-----------------------------------------------------------------------------------|

 

原文地址:https://www.cnblogs.com/hanchaoyue/p/13289719.html