kafka-概述

概述

kafka 是什么 ?

Apache Kafka® is a distributed streaming platform

是一个分布式的流(stream) 框架 

那么它意味着什么呢?一个流框架有三个重要能力 :

  • 发布-订阅流记录,就像消息队列
  • 用 fault-tolerant (错误容忍,翻译不一定正确,可以查一下 fault-tolerant 到底指的是什么意思)的方式存储流记录
  • 处理消息当流到达的时候(有点像事件驱动)

kafka 中几个重要的概念 :

  • Kafka is run as a cluster on one or more servers that can span multiple datacenters.(也就是分布式)
  • The Kafka cluster stores streams of records in categories called topics.(节点储存流记录的目录称为 topics )
  • Each record consists of a key, a value, and a timestamp (流记录包括 key,value,timestamp)

kafka 中核心的 API 有 :

  • Producer API
  • Consumer API
  • Streams API
  • Connector API
  • Admin API

总体架构图 :

img

img

img

img

总体来看 ,kafka 这个中间件只需要和 broker 节点进行联系. 深入到细节一点 , 那就是信息被分到某个节点 ,然后一个消息由多个分片组成, 多个分片组成像 SQL 读写分离一样的复制备份架构 ,防止数据丢失 (真TM人才 ,佩服 kafka 的设计)

特性-保证

  • Message 消息先发送的先被记录在在 log 中,不会因为其他因素影响 order
  • 消费者看到记录是按顺序排列在log 中的
  • 一个 topic 拥有 N 个副本,我们可以容忍 N-1 个机器失败 。

应用场景

  • kafka as message queue
  • Kafka as a Storage System
  • Kafka for Stream Processing
  • Putting the Pieces Together

kafka 大体用在两方面的应用场景 :

  • 构建实时的在系统或应用之间可靠流通的流数据管道(例如消息队列)
  • 构建实时处理,转化流数据的流应用(例如配合其他系统做大数据处理)

安装并运行

安装 zk

安装 zk 之前肯定要有 java 环境,这个不用多说(zk 是 java应用),安装好后为了让外界的zk图形化界面工具看到 znode 的信息,开放 2181 端口 。

firewall-cmd --zone=public --add-port=2181/tcp --permanent
重新加载配置!!

firewall-cmd --reload  

启动 kafka

这个就简单了,安装官方的启动方式即可。

> bin/kafka-server-start.sh config/server.properties

简单的 shell 文本

每次都要启动两个东西,于是我写了简单的shell 文本

## 先启动 zk
cd /usr/local/zookeeper/apache-zookeeper-3.6.1-bin/bin/
./zkServer.sh start

## 再启动kafka 
cd /usr/local/kafka/kafka_2.12-2.5.0/bin/
./kafka-server-start.sh ../config/server.properties

参考资料

posted @   float123  阅读(49)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 字符编码:从基础到乱码解决
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示