• 简介

    #概念:消息中间件(消息系统)

         //消息系统分类:

            点对点 消息队列(peer-to-peer)

            发布/订阅 消息队列

    消费者在消费时,是通过pull 主动从broker中拉取数据的

#作用:缓存地带

#消息系统适用场景

  • 解耦 各位系统之间通过消息系统这个统一的接口交换数据,无须了解彼此的存在
  • 冗余 部分消息系统具有消息持久化能力,可规避消息处理前丢失的风险
  • 扩展 消息系统是统一的数据接口,各系统可独立扩展
  • 峰值处理能力消息系统可顶住峰值流量,业务系统可根据处理能力从消息系统中获取并处理对应量的请求
  • 可恢复性 系统中部分组件失效并不会影响整个系统,它恢复后仍然可从消息系统中获取并处理数据
  • 异步通信 在不需要立即处理请求的场景下,可以将请求放入消息系统,合适的时候再处理

#架构


主要分为3部分

    生产者(producer),消费者(consumer),kafka(broker)外加一个zookeeper来储存源数据    

            Broker 中可以包含多个topic ,topic 是一个逻辑存在的基本运行单元

            topic 中可以包含多个partation, partition是真正存储数据的地方,类似于书架,一个partition是一个强有序的队列

partition是由segmend组成的

segmend由两部分组成

一部分是.log结尾的文件,作用存储kafka的数据

    另一部分是.index结尾的文件,作用kafka存储数据的索引文件

#过程

生产者对数据的生产可以使用同步生产也可以使用异步生产,将生产完成的数据 push到kafka中

kafka收到生产者生产的数据后,将数据保存到具体的partition中,将该批数据的元数据信息写到zookeeper上,

当消费者要消费数据时,会先从zookeeper中获取数据偏移量以及元数据,获取之后,通过主动拉取的形式来消费数据。

#kafka数据生产的格式:

(key,value)格式的数据:在对数据进行存储的时候,采用的存储策略是对key进行hashcode取模来进行具体分配到哪个partiton中进行存储

string格式的数据:在对数据进行存储的时候,采用的策略是轮训策略。

如果以上的存储策略都不符合业务生产需求,可以自定义存储策略 需要集成Partitioner接口

  • 目录结构

    注意:演示的所有的命令行操作都在bin目录下进行


  • 配置详解


要想启动,我们只需要修改kafka的配置文件就可以了


注意

1.外网地址尽量写ip,别写主机名,不然可能访问不到

2.本地地址如果写ip地址的话,启动producer,consumer 参数为本地ip

3.本地地址如果写localhost的话,启动producer,consumer参数为localhost

默认localhost


  • 服务启动与查看

    由于kafka服务以来与zookeeper所以需要先启动zookeeper

    而zookeeper又需要java 来支持,所以需要大家自行准备jdk

    命令

启动zookeeper服务 ./zookeeper-server-start.sh ../config/zookeeper.properties


启动kafka服务./kafka-server-start.sh ../config/server.properties


创建topic

--partitions 3 --replication-factor 1

--zookeeper
zookeepe连接地址:端口

--create 说明要创建

--topic topic名称

--partitions partitions数量


启动生产者

./kafka-console-producer.sh --broker-list localhost:9092 --topic test3

由于生产者并不依赖于zookeeper,但是生产者需要知道写入数据到那个broker中的

又因为topic 是运行的基本单元,因此需要指定topic以及broker所在地址

启动消费者

./kafka-console-consumer.sh --zookeeper localhost:2181 --topic test3


在生产者发送数据 可以看到消费者已经在消费


Kafka基础的更多相关文章

  1. Zookeeper与Kafka基础概念和原理

    1.zookeeper概念介绍 在介绍ZooKeeper之前,先来介绍一下分布式协调技术,所谓分布式协调技术主要是用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种共享资源,防止造成 ...

  2. kafka 基础知识梳理及集群环境部署记录

    一.kafka基础介绍 Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(partition).多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特 ...

  3. kafka基础介绍

    kafka基础介绍 一.kafka介绍 1.1主要功能 根据官网的介绍,kafka是一个分布式流媒体的平台,它主要有三大功能: 1.11:It lets you publish and subscri ...

  4. [转帖]kafka基础知识点总结

    kafka基础知识点总结 https://blog.csdn.net/qq_25445087/article/details/80270790 需要学习. 1.kafka简介 kafka是由Apach ...

  5. 1.kafka基础架构

    kafka基础架构 ## 什么是kafka? Kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域. 1.什么是消息队列? 2.使用消息队列的好处 1)解耦 允许你独立的 ...

  6. 【对线面试官】Kafka基础入门

    <对线面试官>系列目前已经连载33篇啦,这是一个讲人话面试系列 [对线面试官]Java注解 [对线面试官]Java泛型 [对线面试官] Java NIO [对线面试官]Java反射 &am ...

  7. Kafka基础教程(四):.net core集成使用Kafka消息队列

    .net core使用Kafka可以像上一篇介绍的封装那样使用(Kafka基础教程(三):C#使用Kafka消息队列),但是我还是觉得再做一层封装比较好,同时还能使用它做一个日志收集的功能. 因为代码 ...

  8. Kafka基础系列第1讲:Kafka的诞生背景及应用

    Kafka 是由 LinkedIn 开发的一个分布式的消息系统,使用 Scala 编写,它以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如 Cloudera.Apache Sto ...

  9. kafka 基础知识梳理-kafka是一种高吞吐量的分布式发布订阅消息系统

    一.kafka 简介 今社会各种应用系统诸如商业.社交.搜索.浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战: 如何收集这些巨大的信息 如何分析它 如何及时做到如上两点 ...

  10. kafka基础知识梳理

    一.Kafka的基本概念 关键字: 分布式发布订阅消息系统:分布式的,分区的消息服务 Kafka是一种高吞吐量的分布式发布订阅消息系统,使用Scala编写. 对于熟悉JMS(Java Message ...

随机推荐

  1. C/C++创建多级目录

    常常需要在非MFC的环境下创建目录,尤其是多级目录,这里写了一个创建多级目录的子函数CreateDir,以后需要就可以直接拿来用了. #include <string> #include ...

  2. 【uWSGI】实战之Django配置经验

    uWSGI 是应用服务器,实现了uwsgi, wsgi等协议,可以运行wsgi 应用 uwsgi 是协议名 Django配置 下面是自己经常用的一个配置模板,基于1.9以上的版本使用的, 主要基于dj ...

  3. 基于condition 实现的线程安全的优先队列(python实现)

    可以把Condiftion理解为一把高级的琐,它提供了比Lock, RLock更高级的功能,允许我们能够控制复杂的线程同步问题.threadiong.Condition在内部维护一个琐对象(默认是RL ...

  4. python简单线程和协程学习

    python中对线程的支持的确不够,不过据说python有足够完备的异步网络框架模块,希望日后能学习到,这里就简单的对python中的线程做个总结 threading库可用来在单独的线程中执行任意的p ...

  5. Emmet之html语法

    一.简写语法 Emmet 用和 CSS 选择器相似的语法来描述元素的嵌套层级关系和属性,实现 HTML/XML/CSS 等代码的智能自动补全. 其通过文件名后缀识别文件类型,从而使用对应的自动补全语法 ...

  6. 排序算法入门之插入排序(java实现)

    插入排序思想:相当于插入元素,对于第i个元素,i之前的元素已经是有序的了,这时候将第i个元素依次与前面元素比较,插入合适的位置.

  7. 春天aopframework实现

    Java的代码   包 cn.itcast.day3.aopframework; 进口 java.io.IOException的; 进口 的java.io.InputStream; 进口 java.u ...

  8. Web系统测试Web安全性测试

    WEB安全性测试介绍WEB安全性测试--拒绝服务攻击WEB安全性测试--文件上传漏洞WEB安全性测试--跨站攻击WEB安全性测试--SQL注入一WEB安全性测试--SQL注入二WEB安全性测试--SQ ...

  9. Linux常用资源(不断改进中)

    Linux常用命令全集:  http://linux.chinaitlab.com/special/linuxcom/Index.html ubuntu 12.04 配置指南: http://www. ...

  10. 八爪鱼在哪里设置xpath

    分享:35个做好的爬虫规则+160篇图文教程汇总 一般在八爪鱼中,获取网页上某个元素的XPATH有以下几种方式:一.在内置浏览器中点选的操作,八爪鱼自动识别XPATH.但是有时候,自动识别的可能不准确 ...