代理ip提取网站源码,手机商城官方网站,网站建设使用什么软件,谷歌seo网络公司Kafka 入门#xff08;一#xff09;
Apache Kafka起源于LinkedIn#xff0c;后来于2011年成为开源Apache项目#xff0c;然后于2012年成为First-class Apache项目。Kafka是用Scala和Java编写的。 Apache Kafka是基于发布订阅的容错消息系统。 它是快速#xff0c;可扩展…Kafka 入门一
Apache Kafka起源于LinkedIn后来于2011年成为开源Apache项目然后于2012年成为First-class Apache项目。Kafka是用Scala和Java编写的。 Apache Kafka是基于发布订阅的容错消息系统。 它是快速可扩展和设计分布。
什么是Kafka
Apache Kafka是一个分布式发布 - 订阅消息系统和一个强大的队列可以处理大量的数据并使您能够将消息从一个端点传递到另一个端点。 Kafka适合离线和在线消息消费。 Kafka消息保留在磁盘上并在集群内复制以防止数据丢失。 Kafka构建在ZooKeeper同步服务之上。 它与Apache Storm和Spark非常好地集成用于实时流式数据分析。
优点
高吞吐量和低延迟High throughput and low lattencyKafka 设计时就考虑了高吞吐量和低延迟的特点能够处理高并发的消息传递同时支持快速、实时的数据处理和分析。 可靠性和容错性 Reliability and fault-toleranceKafka 采用分布式架构允许多个节点组成集群支持数据的分区和副本备份提供了高可用性和容错性。即使某个节点出现故障也不会影响整个系统的正常运行。 可扩展性 ScalabilityKafka 集群可以根据实际需求进行水平扩展只需要增加节点即可。同时Kafka 的设计也支持多数据中心的部署方式可以将数据传递到不同的数据中心以满足不同的需求。 灵活性FlexibilityKafka 支持多种数据源和数据格式可以处理各种类型的数据包括结构化数据、半结构化数据和非结构化数据。同时Kafka 也支持多种消费者和生产者的语言和协议如 Java、Python、C、REST 等。 可定制性CustomizabilityKafka 提供了可插拔的 API 和插件机制用户可以自定义各种插件如自定义序列化和反序列化插件、自定义存储插件等。 易于使用和管理Easy to use and managementKafka 的 API 和配置都相对简单使用和管理起来相对容易。同时Kafka 还提供了丰富的监控和管理工具如 Kafka Manager、Kafka Monitor 等方便用户进行管理和监控。
通常使用场景
消息传递Messing将数据从一个系统传输到另一个系统。例如一个应用程序可以将消息写入Kafka主题另一个应用程序可以从该主题读取这些消息并执行相应的操作。这个用例可以用于许多不同的场景如应用程序集成、实时流处理、日志处理等。与RabbitMQ不同之处RabbitMQ只能消费一次Kafka可以多次消费。 网站活动跟踪Website Activity Tracking收集和处理网站活动跟踪数据。网站活动跟踪数据通常以事件的形式生成例如页面浏览、搜索、购物车添加等。这些事件可以写入Kafka主题然后可以用于实时监控、实时处理或离线处理和报告生成。 数据指标Metrics聚合和处理各种数据指标。例如一些应用程序会将指标数据写入Kafka主题例如应用程序的请求响应时间、错误率、吞吐量等。这些数据可以用于监控应用程序性能和健康状况并根据需要进行实时或离线处理和报告生成。 日志聚合Log Aggregation聚合和处理各种日志数据。许多应用程序会将日志数据写入Kafka主题例如应用程序日志、服务器日志、安全日志等。这些数据可以用于实时监控、离线处理和报告生成、故障排除等。 流处理Stream Processing流处理是一种数据处理模式可以在数据到达时立即对其进行处理。Kafka提供了流处理库如Kafka Streams和KSQL可以用于构建实时流处理应用程序。这些应用程序可以用于各种场景如实时监控、实时报警、实时分析等。 事件源Event sourcing事件源是一种数据源它以事件的形式生成数据。例如一个传感器可以生成事件指示当前温度或湿度。Kafka可以用于收集和处理这些事件然后将其转换为有用的信息。 提交日志 Commit Log提交日志是一种记录系统状态的机制它可以用于恢复系统状态或进行故障排除。例如Kafka消费者将消费偏移量写入提交日志中以便在发生故障时可以恢复到正确的位置。
基本概念
主题Topic消息的逻辑容器每个消息都属于一个主题。主题可以看作是消息流的类别可以拥有多个生产者和消费者。 分区Partition每个主题可以被分成多个分区每个分区是一个有序的消息队列。分区可以提供更高的并发性和伸缩性同时还可以实现数据冗余和备份。 生产者Producer负责向主题中写入消息的应用程序可以将消息发送到指定的主题和分区。 消费者Consumer从主题中读取消息的应用程序可以订阅一个或多个主题和分区并从中读取消息。 代理BrokerKafka 集群中的每个节点都是一个代理负责接收来自生产者和消费者的消息并将其存储在本地磁盘上的分区中。 偏移量Offset每个分区中的每条消息都有一个唯一的偏移量表示该消息在分区中的位置。消费者可以通过偏移量来跟踪其读取的位置。 消费者组Consumer Group多个消费者可以组成一个消费者组来共同消费一个或多个主题。在一个消费者组中每个消费者都负责消费其中一个或多个分区中的消息。 复制Replication使用副本机制来提高数据的可靠性和容错性。每个分区可以配置多个副本其中一个副本作为领导者Leader负责处理生产者和消费者的请求其他副本作为追随者Follower复制领导者的数据并提供备份。
Kafka及生成消费Topic事件
1. 获取 Kafka
下载 Kafka
2. Kafka 安装并启动
$ tar -xzf kafka_2.13-3.4.0.tgz
$ cd kafka_2.13-3.4.0
# Start zookeeper
$ bin/zookeeper-server-start.sh config/zookeeper.properties
# open a new session
# generate random cluster id
$ KAFKA_CLUSTER_ID$(bin/kafka-storage.sh random-uuid)
$ echo $KAFKA_CLUSTER_ID
PiqNzmreRbqqlua4uUt3ZQ
# delete files under /tmp as below
$ rm -rf /tmp/kafka-logs /tmp/zookeeper /tmp/kraft-combined-logs
# modify config/kraft/server.properties relevant ip
# controller.quorum.voters1192.168.79.177:9093
# listenersPLAINTEXT://192.168.79.177:9092,CONTROLLER://192.168.79.177:9093
# advertised.listenersPLAINTEXT://192.168.79.177:9092
$ bin/kafka-storage.sh format -t $KAFKA_CLUSTER_ID -c config/kraft/server.properties
Formatting /tmp/kraft-combined-logs with metadata.version 3.4-IV0.
$ bin/kafka-server-start.sh config/kraft/server.properties3. 创建Topic
$ bin/kafka-topics.sh --create --topic first-events --bootstrap-server 192.168.79.177:9092
Created topic first-events.
$ bin/kafka-topics.sh --create --topic second-events --bootstrap-server 192.168.79.177:9092
Created topic second-events.4. 查看Topic
$ bin/kafka-topics.sh --list --bootstrap-server 192.168.79.177:9092
first-events
second-events5. 查看Topic 分区
$ bin/kafka-topics.sh --describe --topic first-events --bootstrap-server 192.168.79.177:9092
Topic: first-events TopicId: mRi_1FdLTkS45ay3haaUrA PartitionCount: 1 ReplicationFactor: 1 Configs: segment.bytes1073741824Topic: first-events Partition: 0 Leader: 1 Replicas: 1 Isr: 1
$ bin/kafka-topics.sh --describe --topic second-events --bootstrap-server 192.168.79.177:9092
Topic: second-events TopicId: 8J2iMtGMQdKD2MjsyCXzyw PartitionCount: 1 ReplicationFactor: 1 Configs: segment.bytes1073741824Topic: second-events Partition: 0 Leader: 1 Replicas: 1 Isr: 16. 生产事件/消息
$ bin/kafka-console-producer.sh --topic first-events --bootstrap-server 192.168.79.177:9092
first-events 01
first-events 02
# CtrlD or CtrlC 退出7. 消费事件/消息
$ bin/kafka-console-consumer.sh --topic first-events --from-beginning --bootstrap-server 192.168.79.177:9092
first-events 01
first-events 02
# open a new session and run the same command
$ bin/kafka-console-consumer.sh --topic first-events --from-beginning --bootstrap-server 192.168.79.177:9092
first-events 01
first-events 02
# CtrlC Exit to 多个消费者消费同一个Topic可以消费无数次可以用于事件流。
8. 删除topic
$ bin/kafka-topics.sh --delete --topic second-events --bootstrap-server 192.168.79.177:9092
$ bin/kafka-topics.sh --list --bootstrap-server 192.168.79.177:9092
first-events