Kafka基础
- 简介
#概念:消息中间件(消息系统)
//消息系统分类:
点对点 消息队列(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基础的更多相关文章
- Zookeeper与Kafka基础概念和原理
1.zookeeper概念介绍 在介绍ZooKeeper之前,先来介绍一下分布式协调技术,所谓分布式协调技术主要是用来解决分布式环境当中多个进程之间的同步控制,让他们有序的去访问某种共享资源,防止造成 ...
- kafka 基础知识梳理及集群环境部署记录
一.kafka基础介绍 Kafka是最初由Linkedin公司开发,是一个分布式.支持分区的(partition).多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特 ...
- kafka基础介绍
kafka基础介绍 一.kafka介绍 1.1主要功能 根据官网的介绍,kafka是一个分布式流媒体的平台,它主要有三大功能: 1.11:It lets you publish and subscri ...
- [转帖]kafka基础知识点总结
kafka基础知识点总结 https://blog.csdn.net/qq_25445087/article/details/80270790 需要学习. 1.kafka简介 kafka是由Apach ...
- 1.kafka基础架构
kafka基础架构 ## 什么是kafka? Kafka是一个分布式的基于发布/订阅模式的消息队列,主要应用于大数据实时处理领域. 1.什么是消息队列? 2.使用消息队列的好处 1)解耦 允许你独立的 ...
- 【对线面试官】Kafka基础入门
<对线面试官>系列目前已经连载33篇啦,这是一个讲人话面试系列 [对线面试官]Java注解 [对线面试官]Java泛型 [对线面试官] Java NIO [对线面试官]Java反射 &am ...
- Kafka基础教程(四):.net core集成使用Kafka消息队列
.net core使用Kafka可以像上一篇介绍的封装那样使用(Kafka基础教程(三):C#使用Kafka消息队列),但是我还是觉得再做一层封装比较好,同时还能使用它做一个日志收集的功能. 因为代码 ...
- Kafka基础系列第1讲:Kafka的诞生背景及应用
Kafka 是由 LinkedIn 开发的一个分布式的消息系统,使用 Scala 编写,它以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如 Cloudera.Apache Sto ...
- kafka 基础知识梳理-kafka是一种高吞吐量的分布式发布订阅消息系统
一.kafka 简介 今社会各种应用系统诸如商业.社交.搜索.浏览等像信息工厂一样不断的生产出各种信息,在大数据时代,我们面临如下几个挑战: 如何收集这些巨大的信息 如何分析它 如何及时做到如上两点 ...
- kafka基础知识梳理
一.Kafka的基本概念 关键字: 分布式发布订阅消息系统:分布式的,分区的消息服务 Kafka是一种高吞吐量的分布式发布订阅消息系统,使用Scala编写. 对于熟悉JMS(Java Message ...
随机推荐
- Mybatis 源码之Plugin类解析
public class Plugin implements InvocationHandler { private Object target; //目标对象 private Interceptor ...
- sieve的objective-c实现
用obj-cl来实现前面的sieve代码貌似"丑"了不少,应该有更好的方式:比如不用Foundation或不用NSArray类,而改用其它更"底层"的类. 先把 ...
- AndroidStudio加快Gradle速度的方法-android study之旅(103)
方法1 打开setting,搜索compiler ,按照如图配置,不要问我为什么,宝宝心里苦~ 方法2 到开项目的根目录的gradle.properties ,把下面的注释解除 org.gradle. ...
- BASE64 的加密与解密
package com.suning.security; import java.io.IOException; import sun.misc.BASE64Decoder; import sun.m ...
- masm的一些常用编译选项
ml命令行选项: /Dsymbol[=value] 定义给定名称的文本宏 /Fl 生成lst文件 /Sn lst文件中关闭符号表 /I 设置include文件的路径 /link 发送给link的连接器 ...
- Unity脚本编程之——协程(Coroutine)
本文翻译自Unity官方文档:https://docs.unity3d.com/Manual/Coroutines.html 专有名词: Coroutine 协程 Alpha 不透明度 当你调用一个函 ...
- Factor Pattern----工厂模式
一. 概念 工厂模式就是负责生成其他对象的类或方法,就是把创建对象的过程封装起来,这样随时可以产生一个新的对象,减少代码之间耦合. 二. 使用场景(原因) 工厂模式可以将对象的生产从直接new 一个对 ...
- R实战 第七篇:绘图文本表
文本表是显示数据的重要图形,一个文本表按照区域划分为:列标题,行标题,数据区,美学特征有:前景样式.背景央视.字体.网格线等. 一,使用ggtexttable绘图文本表 载入ggpubr包,可以使用g ...
- javaScript(8)---对象和数组
javaScript(8)---对象和数组 学习要点: 1.Object类型 2.Array类型 3.对象中的方法 什么是对象,其实就是一种类型,即引用类型.而对象的值就是引用类型的实例.在ECMAS ...
- Java错误和异常
Java 异常结构图 在 Java 中,所有的异常都有一个共同的祖先 Throwable(可抛出).Throwable 指定代码中可用异常传播机制通过 Java 应用程序传输的任何问题的共性. Th ...