confluent系列软件介绍

zookeeper

主要功能:配置管理、名字服务、分布式同步、集群管理 集群配置:每台机器的配置都相同,主要通过myid文件区分ip端口

kafka

  1. Broker:Kafka的broker是无状态的,broker使用Zookeeper维护集群的状态。Leader的选举也由Zookeeper负责。

  2. Zookeeper:Zookeeper负责维护和协调broker。当Kafka系统中新增了broker或者某个broker发生故障失效时,由ZooKeeper通知生产者和消费者。生产者和消费者依据Zookeeper的broker状态信息与broker协调数据的发布和订阅任务。

  3. Producer:生产者将数据推送到broker上,当集群中出现新的broker时,所有的生产者将会搜寻到这个新的broker,并自动将数据发送到这个broker上。

  4. Consumer:因为Kafka的broker是无状态的,所以consumer必须使用partition offset来记录消费了多少数据。如果一个consumer指定了一个topic的offset,意味着该consumer已经消费了该offset之前的所有数据。consumer可以通过指定offset,从topic的指定位置开始消费数据。consumer的offset存储在Zookeeper中。

schema-registry

作用:让 Kafka 支持 Avro 序列化,从而减少存储空间的占用,加快读取速度。大部分结构化的数据都有相同的schema,将结构和数据分开存储,减少数据量。 Avro序列化:将结构化数据变成有序的数据格式(一般是二进制),并通过schema记录数据结构。 生产者在使用schema-registry时首先向schema-registry注册数据格式,然后使用Avro序列化将数据发送到kafka;消费者消费数据时,先向schema-registry获取数据格式,然后从kafka的到数据,反序列化。 schema-registry服务端的数据存储在kafka中名为_schemas的topic schema-registry提供了restful api 参考

kafka-rest

提供kafka restful api,实现通过http协议实现kafka 的生产者,消费者等。registry存储数据结构,提供了restful api。kafka-rest也提供了api,用于存储数据。

connect

Kafaka connect 是一种用于在Kafka和其他系统之间可扩展的、可靠的流式传输数据的工具。它使得能够快速定义将大量数据集合移入和移出Kafka的连接器变得简单。Kafka Connect可以从数据库或应用程序服务器收集数据到Kafka topic,使数据可用于低延迟的流处理。导出作业可以将数据从Kafka topic传输到二次存储和查询系统,或者传递到批处理系统以进行离线分析。 用于其他数据库与kafka的连接,实现数据的导入导出。 参考

ksql-server

实现kafka中数据的sql查询

control-center

confluent的控制中心,用于监控集群状态等。用商用版和社区版。

confluent 本地启动

$ ./bin/confluent local start
    The local commands are intended for a single-node development environment
    only, NOT for production usage. https://docs.confluent.io/current/cli/index.html

Using CONFLUENT_CURRENT: /tmp/confluent.HWNZqmRc
Starting zookeeper
zookeeper is [UP]
Starting kafka
kafka is [UP]
Starting schema-registry
schema-registry is [UP]
Starting kafka-rest
kafka-rest is [UP]
Starting connect
connect is [UP]
Starting ksql-server
ksql-server is [UP]
Starting control-center
control-center is [UP]

confluent 本地关闭

$ ./bin/confluent local stop
    The local commands are intended for a single-node development environment
    only, NOT for production usage. https://docs.confluent.io/current/cli/index.html

Using CONFLUENT_CURRENT: /tmp/confluent.HWNZqmRc
Stopping control-center
control-center is [DOWN]
Stopping ksql-server
ksql-server is [DOWN]
Stopping connect
connect is [DOWN]
Stopping kafka-rest
kafka-rest is [DOWN]
Stopping schema-registry
schema-registry is [DOWN]
Stopping kafka
kafka is [DOWN]
Stopping zookeeper
zookeeper is [DOWN]