zoukankan      html  css  js  c++  java
  • 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配置片段

  • 相关阅读:
    【Java EE 学习 36】【struts2】【struts2系统验证】【struts2 ognl值栈】【struts2 ongl标签】【struts2 UI标签】【struts2模型驱动和令牌机制】
    【Java EE 学习 35 下】【struts2】【struts2文件上传】【struts2自定义拦截器】【struts2手动验证】
    【Java EE 学习 35 上】【strus2】【类型转换器】【struts2和Servlet API解耦】【国际化问题】【资源文件乱码问题已经解决】
    【Java EE 学习 34】【struts2学习第一天】
    【JavaScript中的正则表达式】
    【Java EE 学习 33 下】【validate表单验证插件】
    【Java EE 学习 33 上】【JQuery样式操作】【JQuery中的Ajax操作】【JQuery中的XML操作】
    【Java EE 学习 32 下】【JQuery】【JQuey中的DOM操作】
    【Java EE 学习 32 上】【JQuery】【选择器】
    【Java EE 学习 31】【JavaScript基础增强】【Ajax基础】【Json基础】
  • 原文地址:https://www.cnblogs.com/BruceV/p/12088835.html
Copyright © 2011-2022 走看看