• 简介

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

         //消息系统分类:

            点对点 消息队列(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. 利用可变参实现fprintf函数

    #include <stdio.h> #include <stdarg.h> /* 可变参相关接口 typedef char * va_list ; void va_start ...

  2. 如果去掉UITableView上的section的headerView和footerView的悬浮效果

    项目需要cell的间距,又不需要悬浮效果,百度之后找到这个方法,记录一下,备忘. 用UIScrollView的代理方法实现 - (void)scrollViewDidScroll:(UIScrollV ...

  3. Redis 协议为例谈简单的协议分析

    怎样去研究一个协议的过程,协议的格式,好处,怎么样模拟发包等,下面是一个简单的过程记录. 研究的步骤: 协议相关的资料,RFC,官方文档等.弄清楚协议工作在4层还是7层,是二进制还是文本协议等 抓包, ...

  4. JVM学习--(三)配置参数

    JVM配置参数分为三类参数: 1.跟踪参数 2.堆分配参数 3.栈分配参数 这三类参数分别用于跟踪监控JVM状态,分配堆内存以及分配栈内存. 跟踪参数 跟踪参数用于跟踪监控JVM,往往被开发人员用于J ...

  5. Day4_生成器_三元表达式_列表解析_生成器表达式

    生成器:在函数内部包含yield关键,那么该函数执行的结果就是生成器. 生成器就是迭代器. def func(): print('first') yield 111111 print('second' ...

  6. css 字体两端对齐

    我想作为一个前端工作者,总会遇到这样的场景,一个表单展示的字段标题有4个字也有2个字的时候,这样子同时存在想展示的美观一点,就需要字体两端对齐了,其实实现方式很简单,我针对其中一种来做下介绍,以后方法 ...

  7. DjangoRestFramework的外键反向关系序列化的一个问题

    先用文档中的样例: Models定义: class Album(models.Model): album_name = models.CharField(max_length=100) artist ...

  8. Java/JSP/JS Debug笔记

    2006年的blog,当时好生涩啊: ------------------------ 谨以此文献给我没有头绪或心劲去debug的日子和很多辛苦debug的同志们. 应部门一个科的需求,给他们写一个夜 ...

  9. Windows下的OpenCVSharp配置

    OPenCvSharp是OpenCV的Net Warpper,应用最新的OpenCV库开发,目前放在github.. 本人认为OpenCvSharp比EmguCV使用起来更为方便,因为函数更接近于原生 ...

  10. python的统一编码规范

    请注意这一点:没有编码规范的代码没有阅读价值,也更谈不上复用. 目前业界比较流行的Python的编码规范目前主要有PEP8的编程.Google的编码风格.Python Guide和Pocoo Styl ...