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内部消息是有序的

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/49333.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java爽看Stream

Java Stream MD笔记 一、Java Stream概念 Java Stream是Java 8引入的一种新的数据处理方式,提供了一种高效、便利的方法来处理集合数据。Stream流可以让开发人员以声明式的方式对数据进行操作,从而使代码更加简洁、易读。Stream本身不存储数据&#xf…

怎么拼接几张图片为一张?拼接几张图片为一张的四种方法推荐

怎么拼接几张图片为一张?要将几张图片拼接成一张完整的图像,你可以利用现代软件和工具来实现这一操作。这种技术可以帮助你创建更大、更复杂的图像,无论是为了美学上的需要还是为了展示更完整的视觉信息。通过合并多张图片,你可以…

Windows上让Qt支持https请求

一.前言 Qt默认其实支持https的,但需要openssl的支持。所以有时候你代码中写了支持https的请求连接,发现程序可以运行,但到了https请求时会报错,如下: 这就是没有openssl的支持,导致QSslSocket无法进行ht…

利用customElements.define()设置自定义元素生成一个简单的对话框,且模版的css样式与外面的css样式相互不干扰

直接上代码 说明javascript代码直接嵌入在html里 <!DOCTYPE html> <html><head><meta http-equiv"content-type" content"text/html charsetutf-8"/><title>用影子DOM创建一个对话框</title><style>//这个对话…

关于c#的简单应用三题

#region 输入一个正整数&#xff0c;求1~这个数的阶乘 public static void Factorial(int a) { int result 1; for (int i 1; i < a; i) { result result * i; } Console.WriteLine(result); } #endregion #region 一个游戏&#…

【Vue3】从零开始编写项目

【Vue3】从零开始编写项目 背景简介开发环境开发步骤及源码总结 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的…

Java Development Kit

JDK&#xff08;Java Development Kit&#xff09;是Java程序的软件开发工具包。JDK包含了Java的运行环境&#xff08;Java Runtime Environment&#xff0c;JRE&#xff09;以及Java工具和Java基础的类库。JDK的主要组成部分包括&#xff1a; JRE(Java Runtime Environment) …

阶梯-度小满春招算法方向第1批

问题的题面是典型的最长上升子序列问题。求方案数属动态规划问题&#xff0c;可推出以a[i]为最大节点的上升子序列方案数公式 dp[i]{dp[j] , 1<j<i-1&&f[j]1f[i]} &#xff08;f为最大上升子序列&#xff09;。 并且这个方案总数不会超过n&#xff0c;因此也…

C2W1.Assignment.Autocorrect.Part2

理论课&#xff1a;C2W1.Auto-correct 文章目录 3. Combining the edits3.1 Exercise 8.Edit one letter3.2 Exercise 9.Edit two letters3.3 Exercise 10.suggest spelling suggestions 4. Minimum Edit Distance4.1 Dynamic ProgrammingExercise 11Test All-in-one 5. Backt…

python项目中__init__.py是什么文件有什么作用

__init__.py 文件在 Python 项目中的作用主要是将目录标识为一个 Python 包。它在包的初始化过程中起到了重要作用。具体来说&#xff0c;__init__.py 文件有以下几个功能&#xff1a; 1.标识包&#xff1a; - 当一个目录中包含 __init__.py 文件时&#xff0c;这个目录就被视…

javaScrip的学习(一)

目录 引言 一、java和JavaScript的联系 二、js中的弹出框 1.alert弹出框 2.confirm带确认取消的按钮弹框 3.prompt带有提示信息且带有输入框的弹框 4.输出到网页中 ​三、js引入方式 1. 放在script标签中 2.放在外部js文件中 四、执行顺序 五、书写规范 1. 语句结…

python爬虫基础——Webbot库介绍

本文档面向对自动化网页交互、数据抓取和网络自动化任务感兴趣的Python开发者。无论你是初学者还是有经验的开发者&#xff0c;Webbot库都能为你的自动化项目提供强大的支持。 Webbot库概述 Webbot是一个专为Python设计的库&#xff0c;用于简化网页自动化任务。它基于Seleniu…

Hi3751V560_SELinux

Hi3751V560_SELinux setenforce Enforcing setenforce Permissive(或“setenforce 0”) getenforce V560:demo本身的: [ 13.765161] type=1400 audit(1628821512.905:4): avc: denied { read } for pid=1926 comm="system_server" name="ifindex" d…

CCRC-DCO数据合规入表正式落地!全流程操作指南来啦!(业内专家总结)

数据合规已绝非大企业专属&#xff01; 随着《网络安全法》《数据安全法》《个人信息保护法》相继落地&#xff0c;只要企业涉及用户的各种信息&#xff0c;哪怕是中小企业也会面临数据合规的监管&#xff0c;从而产生相关的法律需求。 小到APP对个人信息数据的采集&#xff0c…

[MY-013129] [Server]

日志 [MY-013129] [Server] A message intended for a client cannot be sent there as no client-session is attached. Therefore, we’re sending the information to the error-log instead: MY-001158 - Got an error reading communication packets 分析&#xff1a;如…

【深入C++】map和set的使用

文章目录 C 中的容器分类1. 顺序容器2. 关联容器3. 无序容器4. 容器适配器5. 字符串容器6. 特殊容器 set1.构造函数2.迭代器3.容量相关的成员函数4.修改器类的成员函数5.容器相关操作的成员函数 multiset1.equal_range map1.初始化相关的函数2.迭代器3.容量相关的成员函数4.访问…

LeetCode题(66,69,35,88)--《c++》

66.加一 // // Created by wxj05 on 2024/7/20. // //法一 class Solution { public:vector<int> plusOne(vector<int>& digits) {bool carry true; // 进位标志for (int i digits.size() - 1; i > 0 && carry; --i) {digits[i] 1;carry digit…

NAS:自动化设计目标检测模型的革命

标题&#xff1a;NAS&#xff1a;自动化设计目标检测模型的革命 随着人工智能技术的飞速发展&#xff0c;自动化机器学习&#xff08;AutoML&#xff09;已成为研究的热点之一。特别是在目标检测领域&#xff0c;自动化神经架构搜索&#xff08;NAS&#xff09;技术的应用&…

Ollama 如何让模型保持在内存或卸载

Ollama 默认情况下&#xff0c;模型会在内存中保存 5 分钟&#xff0c;然后才会卸载。如果您向 LLM 发出大量请求&#xff0c;这可以缩短响应时间。但是&#xff0c;您可能希望在 5 分钟过去之前释放内存&#xff0c;或者无限期地加载模型。使用参数keep_alive和/api/generateA…

AVL树的理解和实现[C++]

文章目录 AVL树AVL树的规则或原理 AVL树的实现1.节点的定义2.功能和接口等的实现默认构造函数&#xff0c;析构函数拷贝构造函数插入搜索打印函数检查是否为平衡树&#xff0c;检查平衡因子旋转 AVL树 AVL树&#xff0c;全称Adelson-Velsky和Landis树&#xff0c;是一种自平衡…