暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

learn Kafka from scratch (1)

谭谭编程 2020-09-12
246

Kafka 分布式流平台(A distributed streaming platform)

事件流(event streaming)

一种实时地按照事件流的形式从(数据库,传感器,移动设备,云服务以及应用软件)事件源获取数据的实践。

可以做什么:

  • 实时处理付款和财务交易,例如股票交易,银行以及保险

  • 实时跟踪监控汽车,货运等

  • 实时获取传感器等物联网设备的数据

  • 收集并即时响应客户交互和订单

  • 用作数据平台,微服务的基础服务

Kafka 的三个关键能力:(分布式,高扩展,弹性,容错)

  • 发布以及订阅事件流
  • 按需持久且可靠地存储事件流
  • 处理事件流的发生或追溯

Apache kafka 构成

由 server 和 client 组成的分布式系统,并通过高性能的 TCP 协议通信。

  • server:Kafka 可以以一台或者多台机器组成的集群运行,其可以跨越多个数据中心或者多个云区域。其中一些 server 构成存储层,又被称作 broker。其他 server 则运行 kafka connect 持续的导入或者导出数据作为事件流,将 kafka 与现有系统集成在一起。任一 server 发生故障,其他 server 将接管其工作。
  • client:用于编写分布式应用和微服务。

Kafka 概念和术语:

event(事件):记录 "something happened",又被称为 record(记录),message(消息)。事件由 key,value,timestamp(时间戳),optional metadata headers(可选元数据头)

Event key: "Alice"
Event value: "Made a payment of $200 to bob"
Event timestamp: "Sat Sep 12 16:36:10 CST 2020"

producers(生产者):发布(写)事件到 kafka;consumers(消费者):订阅(读、处理)事件,生产者与消费者彻底解耦,生产者不必等待消费者消费。

topics(主题):事件被持久化到 topic,topic 可以被分区存储,被分成不同的 buckets 存储到不同的 kafka broker 上,这样允许客户端并发的从不同的 broker 读取和写数据(高吞吐),同样 key 的事件会被追加到同一分区。每个分区又可以被复制到多个 broker 中(容错)。

kafka 分区

Kafka 安装:zookeeper + kafka server

wget http://mirror.metrocast.net/apache/kafka/2.6.0/kafka_2.13-2.6.0.tgz

#
 启动zookeeper服务
bin/zookeeper-server-start.sh config/zookeeper.properties
# 启动kafka broker服务
bin/kafka-server-start.sh config/server.properties

#
 创建topic
bin/kafka-topics.sh --create --topic quickstart-events --bootstrap-server localhost:9092

#
 写events
bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092

#
 读events
bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server localhost:9092

参考文献:

[1] Kafka 介绍 https://kafka.apache.org/intro#intro_usage

[2] Kafka quick start https://kafka.apache.org/quickstart


文章转载自谭谭编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论