当前位置: 首页 > news >正文

kafka基础介绍

一、为什么使用消息队列

1.使用同步的通信方式来解决多个服务之间的通信

在这里插入图片描述
同步的通信方式会存在性能和稳定性的问题。

2.使用异步的通信方式

在这里插入图片描述
针对于同步的通信方式来说,异步的方式,可以让上游快速成功,极大提高了系统的吞吐量。而且在分布式系统中,通过下游多个服务的
分布式事务的保障,也能保障业务执行之后的最终一致性。

二、消息队列的流派

目前消息队列的中间件选型有很多种:

  • rabbitMQ:内部的可玩性(功能性)是非常强的
  • rocketMQ:阿里内部一个大神,根据kafka的内部执行原理,手写的一个消息队列中间件。性能是与Kafka相比肩,除此之外,在功D
    能上封装了更多的功能。
  • kafka:全球消息处理性能最快的一款MQ
  • zeroMQ

这些消息队列中间件有什么区别?

1.有broker

  • 重topic:Kafka、RocketMQ、ActiveMQ
    整个broker,依据topic来进行消息的中转。在重topic的消息队列里必然需要topic的存在

  • 轻topic:RabbitMQ
    topic只是一种中转模式。

2.无broker

在生产者和消费者之间没有使用broker,例如zeroMQ,直接使用socket进行通信。

三、Kafka的基本知识

1.Kafka的安装

  • 部署一台zookeeper服务器
  • 安装jdk
  • 下载kafka的安装包:http://kafka.apache.org/downloads
  • 上传到kafka服务器上:/usr/local/kafka
  • 解压缩压缩包
  • 进入到config目录内,修改server.properties
#broker.id属性在kafka集群中必须要是唯一
broker.id=0
#kafka部署的机器ip和提供服务的端口号
listeners=PLAINTEXT://192.168.65.60:9092
#kafka的消息存储文件
log.dir=/usr/local/data/kafka-logs
#kafka连接zookeeper的地址
zookeeper.connect=192.168.65.60:2181

进入到bin目录内,执行以下命令来启动kafka服务器(带着配置文件)

./kafka-server-start.sh -daemon ../config/server.properties

校验kafka是否启动成功:
进入到zk内查看是否有kafka的节点:/brokers/ids/0

名称解释
Broker消息中间件处理节点,一个Kafka节点就是一个broker,一个或者多个Broker可以组成一个Kafka集群
TopicKafka根据topic对消息进行归类,发布到Kafka集群的每条消息都需要指定一个topic
Producer消息生产者,向Broker发送消息的客户端
Consumer消息消费者,从Broker读取消息的客户端
ConsumerGroup每个Consumer属于一个特定的ConsumerGroup,一条消息?可以被多个不同的Consumer Group消费,但是一个Consumer Group中只能有一个Consumer能够消费该消息
Partition物理上的概念,一个topic可以分为多个partition,每个partition内部消息是有序的

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 卷与nfs实现多台主机容器之间的数据共享
  • 十、Docker版Redis集群搭建
  • DP学习——状态模式
  • idea将普通项目转换为maven项目
  • 使用JAVA代码实现生成二维码
  • windows网络应急排查
  • 以线程完成并发的UDP服务端
  • 使用kali对操作系统和网络服务类型进行探测
  • 列举excel中调整行高列宽的五种方法
  • Telegram曝零日漏洞,可伪装成视频攻击安卓用户
  • linux系统安装pytorch_中文地址命名实体识别案例
  • 使用Kafka Streams进行事件流处理
  • 实时视频流中的目标检测与跟踪:动态视觉的挑战与实现
  • 基于单片机控制的变压器油压油温故障检测
  • AI学习记录 - 激活函数的作用
  • 【技术性】Search知识
  • canvas 绘制双线技巧
  • Effective Java 笔记(一)
  • golang中接口赋值与方法集
  • Odoo domain写法及运用
  • React Transition Group -- Transition 组件
  • Sublime Text 2/3 绑定Eclipse快捷键
  • v-if和v-for连用出现的问题
  • 区块链将重新定义世界
  • 使用putty远程连接linux
  • 它承受着该等级不该有的简单, leetcode 564 寻找最近的回文数
  • 项目实战-Api的解决方案
  • 学习使用ExpressJS 4.0中的新Router
  • const的用法,特别是用在函数前面与后面的区别
  • 浅谈sql中的in与not in,exists与not exists的区别
  • 专访Pony.ai 楼天城:自动驾驶已经走过了“从0到1”,“规模”是行业的分水岭| 自动驾驶这十年 ...
  • ‌‌雅诗兰黛、‌‌兰蔻等美妆大品牌的营销策略是什么?
  • $ git push -u origin master 推送到远程库出错
  • (1)Jupyter Notebook 下载及安装
  • (2015)JS ES6 必知的十个 特性
  • (C++哈希表01)
  • (echarts)echarts使用时重新加载数据之前的数据存留在图上的问题
  • (Matalb时序预测)PSO-BP粒子群算法优化BP神经网络的多维时序回归预测
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (pytorch进阶之路)扩散概率模型
  • (TOJ2804)Even? Odd?
  • (阿里云在线播放)基于SpringBoot+Vue前后端分离的在线教育平台项目
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (附源码)springboot掌上博客系统 毕业设计063131
  • (译) 理解 Elixir 中的宏 Macro, 第四部分:深入化
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转载)OpenStack Hacker养成指南
  • ..回顾17,展望18
  • .Net IE10 _doPostBack 未定义
  • .net 逐行读取大文本文件_如何使用 Java 灵活读取 Excel 内容 ?
  • .Net--CLS,CTS,CLI,BCL,FCL
  • .NET编程——利用C#调用海康机器人工业相机SDK实现回调取图与软触发取图【含免费源码】
  • @angular/cli项目构建--http(2)
  • @GlobalLock注解作用与原理解析
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce