kafka从入门到实战(一)


theme: smartblue

highlight: agate

理论

1. kafka是什么?

Kafka是分布式发布-订阅消息系统,它最初是由LinkedIn公司开发的,之后成为Apache项目的一部分,Kafka是一个分布式,可划分的,冗余备份的持久性的日志服务,它主要用于处理流式数据。

2. 为什么要使用kafka

分布式消息服务器,使用场景无非三种

  • 缓冲和削峰

    • 上游数据时有突发流量,下游可能扛不住,或者是下游没有足够的机器去处理数据请求,会导致服务器坍塌.此时消息服务,可以在其中承担缓冲作用,将消息请求缓存在kafka中,下游的服务再在可以承担压力的情况下慢慢消费.
  • 解耦

    • A系统发送数据到BCD三个系统, A通过接口发送数据,当新增E系统我们需要新增相应的接口去处理E系统,中途如果去掉B系统,还得手动去掉对应接口.引入消息服务,可以A将消息发送到kafka然后谁需要,自己去消息服务订阅消费即可

image.png + 异步 - 当A系统分布要往BCD三个服务数据库写入数据,这是A需要调用BCD三个服务,并分别写入数据再返回给A系统处理结果,由于是同步执行的,用户这边需要等待一段时间才会有返回结果,此时的对用户而言很不友好,如果直接将写数据的操作放到消息服务器,不管后续操作情况.这是对用户而言操作是瞬间的,显然可用性 极高

image.png

3. kafka和其它MQ的区别

优点: + 可扩展。Kafka集群可以透明的扩展,增加新的服务器进集群。 + 高性能。Kafka性能远超过传统的ActiveMQ、RabbitMQ等,Kafka支持Batch操作。 + 容错性。Kafka每个Partition数据会复制到几台服务器,当某个Broker失效时,Zookeeper将通知生产者和消费者从而使用其他的Broker

部署安装

安装环境 Linux 系统 Centos7.6

1. 包下载

进入服务器指定文件夹目录,根据个人喜欢指定.我这边是/usr/local/,
1. cd /usr/local/ 进入指定目录 2. 下载包 wget https://repo.huaweicloud.com/apache/kafka/2.2.2/kafka_2.11-2.2.2.tgz 3. 解压 tar -xvf kafka_2.11-2.2.2.tgz 4. 重名名 mv kafka_2.11-2.2.2 kafka

2. 部署准备

  1. kafka是基于分布式消息管理,因此需要一个媒介对kafkaBroker进去管理,zookeeper是一款高效的分布式管理工具,所以使用kafka之前需要先搭建zkzookeeper安装部署参考往期博客

  2. 修改kafka的配置文件

  3. 进入指定目录 cd /usr/local/kafka
  4. 修改配置vi config/server.properties

注意需要修改的地方如下 ```properties listeners=PLAINTEXT://:9092

改服务器的ip

advertised.listeners=PLAINTEXT://192.168.10.126:9092

日志文件夹 可以修改也可以默认不变

log.dirs=/tmp/kafka-logs

定义分区数 默认为1

num.partitions=4

zk的所有节点 如果是集群是多个节点 单机是一个节点

zookeeper.connect=192.168.10.122:2181 `` 3. 启动kafka服务,窗口启动和后台挂起启动,建议初次启动窗口启动方便查看日志是否启动成功 ./bin/kafka-server-start.sh ./config/server.properties` ,指定配置文件启动

正常启动成功如下所示

image.png

使用ctrl+c关闭当前服务,使用后台启动方式 nohup ./bin/kafka-server-start.sh ./config/server.properties &

然后使用命令ps -ef | grep kafka查看是否启动成功,成功如下所示

image.png

3. 相关操作命令

  1. 查看当前服务中所有的 topic xshell ./bin/kafka-topics.sh --zookeeper [服务名或ip]192.168.10.122:2181 --list
  2. 创建topic 指定名称为test分区数为4副本数为2 cmd ./bin/kafka-topics.sh --zookeeper 192.168.10.122:2181 --create --replication-factor 2 --partitions 3 --topic test
  3. 删除topic注意:删除topic的时候需要在server.properties中设置delete.topic.enable=true否则只是标记删除,并没有真正删除。 cmd ./bin/kafka-topics.sh --zookeeper 192.168.10.122:2181 \ --delete --topic test

  4. 查看topic详情 cmd bin/kafka-topics.sh --zookeeper 192.168.10.122:2181 \ --describe --topic first image.png

  5. 发送消息 ```cmd ./bin/kafka-console-producer.sh \ --broker-list 192.168.10.122:9092 --topic test

    如果创建kafka是集群启动的话 --broler-list 后面的多个地址使用,拼接

输入完上面的命令成功后会有">"标志,就可以输入数据了

输入数据,需要删除的时候按住ctrl 在点击backspace就可以删除了。

hello world

6. 消费消息 cmd

--from-beginning 从头开始消费所有信息

./bin/kafka-console-consumer.sh --bootstrap-server 192.168.10.122:9092 --from-beginning --topic test ```

image.png

  1. 修改分区,由于kafaka内部数据处理过于复制,目前只有增加分区操作 没有减少分区功能 cmd ./bin/kafka-topics.sh --zookeeper 192.168.10.122:2181 --alter --topic test --partitions 6

kafka在java中实战(请见下期)

博客参考csdn大佬 https://blog.youkuaiyun.com/qq_26803795/article/details/105682276

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值