• kafka项目实例


     一.Kafka概述

      Kafka是Linkedin于2010年12月份创建的开源消息系统,它主要用于处理活跃的流式数据。活跃的流式数据在web网站应用中非常常见,这些活动数据包括页面访问量(Page View)、被查看内容方面的信息以及搜索情况等内容。 这些数据通常以日志的形式记录下来,然后每隔一段时间进行一次统计分析。

      传统的日志分析系统是一种离线处理日志信息的方式,但若要进行实时处理,通常会有较大延迟。而现有的消息队列系统能够很好的处理实时或者近似实时的应用,但未处理的数据通常不会写到磁盘上,这对于Hadoop之类,间隔时间较长的离线应用而言,在数据安全上会出现问题。Kafka正是为了解决以上问题而设计的,它能够很好地进行离线和在线应用。

    1.1 Kfka部署结构:

    1.2 Kafka关键字:

    •Broker : Kafka消息服务器,消息中心。一个Broker可以容纳多个Topic。

    •Producer :消息生产者,就是向Kafka broker发消息的客户端。

    •Consumer :消息消费者,向Kafka broker取消息的客户端。

    •Zookeeper :管理Producer,Broker,Consumer的动态加入与离开。

    •Topic :可以为各种消息划分为多个不同的主题,Topic就是主题名称。Producer可以针对某个主题进行生产,Consumer可以针对某个主题进行订阅。

    •Consumer Group: Kafka采用广播的方式进行消息分发,而Consumer集群在消费某Topic时, Zookeeper会为该集群建立Offset消费偏移量,最新Consumer加入并消费该主题时,可以从最新的Offset点开始消费。

    •Partition:Kafka采用对数据文件切片(Partition)的方式可以将一个Topic可以分布存储到多个Broker上,一个Topic可以分为多个Partition。在多个Consumer并发访问一个partition会有同步锁控制。

    (图2)

    1.3 消息收发流程:

    •启动Zookeeper及Broker.

    •Producer连接Broker后,将消息发布到Broker中指定Topic上(可以指定Patition)。

    •Broker集群接收到Producer发过来的消息后,将其持久化到硬盘,并将该消息保留指定时长(可配置),而不关注消息是否被消费。

    •Consumer连接到Broker后,启动消息泵对Broker进行侦听,当有消息到来时,会触发消息泵循环获取消息,获取消息后Zookeeper将记录该Consumer的消息Offset。

    1.4 Kafka特性:

    •高吞吐量

    •负载均衡:通过zookeeper对Producer,Broker,Consumer的动态加入与离开进行管理。

    •拉取系统:由于kafka broker会持久化数据,broker没有内存压力,因此,consumer非常适合采取pull的方式消费数据

    •动态扩展:当需要增加broker结点时,新增的broker会向zookeeper注册,而producer及consumer会通过zookeeper感知这些变化,并及时作出调整。

    •消息删除策略:数据文件将会根据broker中的配置要求,保留一定的时间之后删除。kafka通过这种简单的手段,来释放磁盘空间。

    二. Kafka启动命令:

    启动Zookeeper服务:

    zookeeper-server-start.bat ../../config/zookeeper.properties

    启动Broker服务:

    kafka-server-start.bat ../../config/server.properties

    通过Zookeeper的协调在Broker中创建一个Topic(主题)

    kafka-topics.bat --create --zookeeper localhost:2181 --replication-factor 1 --partitions 1 --topic testTopic

    查询当前Broker中某个指定主题的配置信息

    kafka-run-class.bat kafka.admin.TopicCommand --describe --zookeeper localhost:2181 --topic testTopic

    启动一个数据生产者Producer

    kafka-console-producer.bat --broker-list localhost:9092 --topic testTopic  

    启动一个数据消费者Consumer

    kafka-console-consumer.bat --zookeeper localhost:2181 --topic testTopic --from-beginning

    Zookeeper配置文件,zookeeper.properties配置片段

    Broker配置文件,server.properties配置片段

  • 相关阅读:
    浅浅的分析下es6箭头函数
    css实现背景半透明文字不透明的效果
    五星评分,让我告诉你半颗星星怎么做
    微信小程序--成语猜猜看
    微信小程序开发中如何实现侧边栏的滑动效果?
    强力推荐微信小程序之简易计算器,很适合小白程序员
    swing _JFileChooser文件选择窗口
    file类简单操作
    序列化对象
    MessageBox_ swt
  • 原文地址:https://www.cnblogs.com/BruceV/p/12088835.html
Copyright © 2020-2023  润新知