1. Why Apache Kafka

  • 由Linkedln创建,现在作为开源项目主要由Confluent、IBM、Cloudera维护
  • 分布式、具有弹性体系结构,并且具有容错能力
  • 水平可扩展性
    • 可扩展到几百个broker
    • 可扩展到每秒百万条信息吞吐量
  • 高性能(低于10ms的延迟)几乎实时
  • 超过2000家公司使用kafka,财富排行100强中有80%的公司使用kafka:airbnb、NETFLIX、Linkedin、UBER、Walmart...

2. Apache Kafka:使用场景

  • 信息系统
  • 活动跟踪系统
  • 从不同位置收集指标数据
  • 收集应用程序日志
  • 流处理(以Kafka Streams API为例)
  • 解耦系统依赖和微服务
  • 集成Spark、Flink、Storm、Hadoop等大数据技术
  • 微服务pub/sub

3. 案例

  • Netflix使用Apache Kafka在你看电视节目的时候实时应用推荐
  • Uber使用kafka实时收集用户打车和出行数据,并计算和预测需求,还实时计算你的定价
  • LinkedIn使用kafka来防止垃圾邮件,收集用户交互,以便实时提供更好的连接建议

4. 本地伪分布式环境搭建

下载及安装:

kafka_2.11-1.0.0.tar 2.11表示scala的版本

解压:tar -xzvf kafka_2.11-1.0.0.tar

配置:

cp config/server.properties etc/server-0.properties
cp config/server.properties etc/server-1.properties
cp config/server.properties etc/server-2.properties

vi 操作更改配置文件

broker.id=0  #修改broker id
#listeners=PLAINTEXT://:9092 #取消注释
log.dirs=/tmp/kafka-logs-0 #区分log

listeners:指定broker启动时本机的监听名称、端口,给服务器端使用

默认名称(协议)
PLAINTEXT://:9092 PLAINTEXT
PLAINTEXT://192.168.1.10:9092 SSL
PLAINTEXT://hostname:9092 SASL_PLAINTEXT
PLAINTEXT://0.0.0.0:9092 SASL_SSL

advertised.listeners:对外发布的访问IP和端口,注册到zookeeper中,给客户端(client)使用

如果 advertised.listeners 没有配置,默认采用 listeners 的配置

外部网络需要访问时,advertised.listeners 需要配置成公网IP

## 实践
listeners=INTERNAL://:9092,EXTERNAL://0.0.0.0:9093
advertised.listeners=INTERNAL://kafka-0:9092,EXTERNAL://公网IP:9093
listener.security.protocol.map=INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
inter.broker.listener.name=INTERNAL

启动:

启动zookeeper

./bin/zookeeper-server-start.sh ./etc/zookeeper.properties

不同terminal窗口启动kafka实例

./bin/kafka-server-start.sh ./etc/server-0.properties

主题创建

./bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic topic_name --partitions 3 --replication-factor 2

查看主题

> ./bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic topic_name

Topic: topic_name Partition: 0 Leader: 1 Replicas: 1,2 Isr: 1,2
Topic: topic_name Partition: 1 Leader: 2 Replicas: 2,0 Isr: 2,0
Topic: topic_name Partition: 2 Leader: 0 Replicas: 0,1 Isr: 0,1

Replicas: 1,2表示有2个副本,在broker id: 1和broker id: 2维护,Isr表示同步正常的

创建消费者

0.10版本之后,消费者的偏移量保存在kafka主题,不再在zookeeper上保存

./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092,localhost:9093,localhost:9094 --topic topic_name

从头消费可以加--from-beginning

创建Producer

./bin/kafka-consle-producer.sh --broker-list localhost:9092,localhost:9093,localhost:9094 --topic topic_name
Copyright ©Bota5ky all right reserved,powered by GitbookLast Updated: 2023-11-13 09:41:56

results matching ""

    No results matching ""