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


目录

    • 一.消息中间件
      • 1.概念
      • 2.为什么使用
      • 3.主要消息中间件的对比
    • 二.kafka
      • 1.安装
      • 2.名词解释:
      • 3.操作

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

上述未使用消息中间件,所有跟订单相关的业务全部放在订单服务中处理,订单服务臃肿繁琐。
kafka|消息中间件以及Kafka的安装和使用
文章图片

使用消息中间件后,订单服务只需处理订单业务,其他相关的业务异步推送到消息中间件即可。
3.主要消息中间件的对比
kafka|消息中间件以及Kafka的安装和使用
文章图片

主推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.名词解释:
kafka|消息中间件以及Kafka的安装和使用
文章图片

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数量,即不能大于节点数)kafka|消息中间件以及Kafka的安装和使用
文章图片

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

kafka|消息中间件以及Kafka的安装和使用
文章图片

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

【kafka|消息中间件以及Kafka的安装和使用】kafka|消息中间件以及Kafka的安装和使用
文章图片

    推荐阅读