消息中间件以及Kafka的安装和使用

一.消息中间件

1.概念

关注于数据的发送和接受,利用高效可靠的异步消息传递机制集成分布式系统。

2.为什么使用

  1. 业务解耦,代码解耦:例如,订单业务需要发送短信、推送app通知信息、扣除会员积分、发送email等,如果把这些全部写在订单业务代码中,订单代码将会变得十分臃肿,不利于修改维护,事物管理十分麻烦,使用中间件就不会有上述问题
  2. 同步变异步,加快业务响应时间,相对于RPC来说,异步通信使得生产者和消费者得以充分执行自己的逻辑而无需等待
  3. 流量消峰,消息存储堆积也是消息中间件的核心,可堆积大量的消息,当上游系统的吞吐能力远高于下游系统,在流量洪峰时可能会冲垮下游系统,消息中间件可以在峰值时堆积消息,而在峰值过去后下游系统慢慢消费消息解决流量洪峰的问题,典型的场景就是秒杀系统的设计。
  4. 消息的顺序性,消息中间件采用的是队列技术,消息队列可以保证消息的先进先出,能保证消息顺序执行。
  5. 消息的可靠性,消息中间件有消费确认机制(ACK),在收到成功被消费的确认消息之后才会把消息从队列中删除,并且消息中间件有本地刷盘存储功能。
    解决分布式事物复杂性。

使用消息中间件前后对比:
在这里插入图片描述
上述未使用消息中间件,所有跟订单相关的业务全部放在订单服务中处理,订单服务臃肿繁琐。
在这里插入图片描述
使用消息中间件后,订单服务只需处理订单业务,其他相关的业务异步推送到消息中间件即可。

3.主要消息中间件的对比

在这里插入图片描述
主推Kafka

二.kafka

1.安装

官方下载安装包后,上传到Linux系统上,解压到opt
1.修改配置文件
cd /opt/kafka/config
vi server.properties

# The id of the broker. 集群中每个节点的唯一标识(第21行)
broker.id=0
# 监听地址(第36行)
advertised.listeners=PLAINTEXT://192.168.195.20:9092
# 数据的日志存储位置(第60行)
log.dirs=/opt/kafka/kafka-logs
# Zookeeper连接地址(第123行),如果是集群,写完所有的连接ip
zookeeper.connect=192.168.195.20:2181
# 末行新增如下内容,作用:删除topic的配置,否则kafka不让删除topic
#默认是false,只是标记删除,不会真的删除,
delete.topic.enable=true

这里需要说明的是 log.dirs 指的是数据日志的存储位置,确切的说,就是分区数据的存储位置,而不是程序运行日志的位置。程序运行日志的位置是通过同一目录下的 log4j.properties 进行配置的。
2.配置环境变量

export KAFKA_HOME=/opt/kafka
export PATH=$PATH:$KAFKA_HOME/bin

3.运行
首先要启动zookeeper,zkServer.sh start
在启动kafka,[root@hadoop20 config]# kafka-server-start.sh

后台启动命令:[root@hadoop20 config]# kafka-server-start.sh -daemon ./server.properties
这里是在config的目录i下启动,如果觉得麻烦,可以用软连接来操作(任何目录下都可以启动)

[root@hadoop20 /]# ln -s /opt/kafka/config/server.properties  /opt/server.properties
[root@hadoop20 /]# kafka-server-start.sh -daemon /opt/server.properties

启动成功后,可以通过jps来查看是否启动成功,如果有kafka节点代表OK

2.名词解释:

在这里插入图片描述

3.操作

3.1创建topic

kafka-topics.sh --create --zookeeper 192.168.195.20:2181 --topic kb09demo 

3.2创建五个分区

kafka-topics.sh --create --zookeeper 192.168.195.20:2181 --topic kb09demo2 --partitions 5 --replication-factor 1

结果如下:(分区数是5,factor副本为1,不能大于broker数量,即不能大于节点数)在这里插入图片描述
3.3查看topic详情

kafka-topics.sh --zookeeper 192.168.195.20:2181 --topic kb09demo --describe

3.4查看所有的topic列表

kafka-topics.sh --zookeeper 192.168.195.20:2181 --list _consumer_offsets

3.5删除topic

kafka-topics.sh --delete --topic kb09demo --zookeeper 192.168.195.20:2181

3.6查看消息队列

 kafka-run-class.sh kafka.tools.GetOffsetShell --broker-st 192.168.195.20:9092 
 --topic kb09two -time -1 --offsets 1

3.7两个窗口连接测试操作
producer窗口1

 kafka-console-producer.sh --topic kb09demo2 --broker-list 192.168.195.20:9092
 

在这里插入图片描述

consumer窗口2

 kafka-console-consumer.sh --topic kb09demo2 --bootstrap-server 192.168.195.20:9092 --from-beginning

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值