工作纪实_63-Mac电脑使用brew安装软件

最近在接触kafka,想着在自己的电脑安装一套环境,docker也能行,但是还是想装一些原生的软件试试看,因此便想着整理一下brew的命令,这命令确实是方便,不需要下载tar包乱八七糟的东西,一键安装

brew

Brew全称叫Homebrew,是Mac系统上的软件包管理工具;

常用命令

  1. brew services【查看所有brew管理的软件】
shell 复制代码
> brew services
Name          Status  User File
redis         started a58  ~/Library/LaunchAgents/homebrew.mxcl.redis.plist
zookeeper     none         

none代表没有启动

  1. brew services start xxx【启动brew管理的软件】
shell 复制代码
a58@192 kafka % brew services start zookeeper
==> Successfully started `zookeeper` (label: homebrew.mxcl.zookeeper)
  1. breew services stop 软件名【停止】
  2. brew services restart 软件名【重启】
  3. brew upgrade 软件名【更新软件】
  4. brew list 或 brew services 【查看已安装的软件包列表】
  5. brew list --versions 软件名【查看已安装的软件包版本】
  6. brew search 软件名【搜索云端的软件】
  7. brew install 软件名【安装】
  8. brew uninstall【卸载】
  9. cd /opt/homebrew/etc【已安装软件的配置文件位置】

brew安装的软件配置,一般都在这个地方,比如kafka的话,是在/opt/homebrew/etc/kafka目录下

cd /opt/homebrew/bin【已安装软件的支持的命令】

brew安装的软件支持的命令,一般都在这个地方,在/opt/homebrew/bin目录,我们可以看一下kafka有哪些命令

shell 复制代码
a58@192 bin % ls -l |grep kafka
lrwxr-xr-x  1 a58 admin   47  4 18 22:27 connect-distributed -> ../Cellar/kafka/3.3.1_1/bin/connect-distributed
lrwxr-xr-x  1 a58 admin   48  4 18 22:27 connect-mirror-maker -> ../Cellar/kafka/3.3.1_1/bin/connect-mirror-maker
lrwxr-xr-x  1 a58 admin   46  4 18 22:27 connect-standalone -> ../Cellar/kafka/3.3.1_1/bin/connect-standalone
lrwxr-xr-x  1 a58 admin   38  4 18 22:27 kafka-acls -> ../Cellar/kafka/3.3.1_1/bin/kafka-acls
lrwxr-xr-x  1 a58 admin   53  4 18 22:27 kafka-broker-api-versions -> ../Cellar/kafka/3.3.1_1/bin/kafka-broker-api-versions
lrwxr-xr-x  1 a58 admin   41  4 18 22:27 kafka-cluster -> ../Cellar/kafka/3.3.1_1/bin/kafka-cluster
lrwxr-xr-x  1 a58 admin   41  4 18 22:27 kafka-configs -> ../Cellar/kafka/3.3.1_1/bin/kafka-configs
lrwxr-xr-x  1 a58 admin   50  4 18 22:27 kafka-console-consumer -> ../Cellar/kafka/3.3.1_1/bin/kafka-console-consumer
lrwxr-xr-x  1 a58 admin   50  4 18 22:27 kafka-console-producer -> ../Cellar/kafka/3.3.1_1/bin/kafka-console-producer
lrwxr-xr-x  1 a58 admin   49  4 18 22:27 kafka-consumer-groups -> ../Cellar/kafka/3.3.1_1/bin/kafka-consumer-groups
lrwxr-xr-x  1 a58 admin   52  4 18 22:27 kafka-consumer-perf-test -> ../Cellar/kafka/3.3.1_1/bin/kafka-consumer-perf-test
lrwxr-xr-x  1 a58 admin   51  4 18 22:27 kafka-delegation-tokens -> ../Cellar/kafka/3.3.1_1/bin/kafka-delegation-tokens
lrwxr-xr-x  1 a58 admin   48  4 18 22:27 kafka-delete-records -> ../Cellar/kafka/3.3.1_1/bin/kafka-delete-records
lrwxr-xr-x  1 a58 admin   42  4 18 22:27 kafka-dump-log -> ../Cellar/kafka/3.3.1_1/bin/kafka-dump-log
lrwxr-xr-x  1 a58 admin   42  4 18 22:27 kafka-features -> ../Cellar/kafka/3.3.1_1/bin/kafka-features
lrwxr-xr-x  1 a58 admin   45  4 18 22:27 kafka-get-offsets -> ../Cellar/kafka/3.3.1_1/bin/kafka-get-offsets
lrwxr-xr-x  1 a58 admin   49  4 18 22:27 kafka-leader-election -> ../Cellar/kafka/3.3.1_1/bin/kafka-leader-election
lrwxr-xr-x  1 a58 admin   42  4 18 22:27 kafka-log-dirs -> ../Cellar/kafka/3.3.1_1/bin/kafka-log-dirs
lrwxr-xr-x  1 a58 admin   49  4 18 22:27 kafka-metadata-quorum -> ../Cellar/kafka/3.3.1_1/bin/kafka-metadata-quorum
lrwxr-xr-x  1 a58 admin   48  4 18 22:27 kafka-metadata-shell -> ../Cellar/kafka/3.3.1_1/bin/kafka-metadata-shell
lrwxr-xr-x  1 a58 admin   46  4 18 22:27 kafka-mirror-maker -> ../Cellar/kafka/3.3.1_1/bin/kafka-mirror-maker
lrwxr-xr-x  1 a58 admin   52  4 18 22:27 kafka-producer-perf-test -> ../Cellar/kafka/3.3.1_1/bin/kafka-producer-perf-test
lrwxr-xr-x  1 a58 admin   53  4 18 22:27 kafka-reassign-partitions -> ../Cellar/kafka/3.3.1_1/bin/kafka-reassign-partitions
lrwxr-xr-x  1 a58 admin   54  4 18 22:27 kafka-replica-verification -> ../Cellar/kafka/3.3.1_1/bin/kafka-replica-verification
lrwxr-xr-x  1 a58 admin   43  4 18 22:27 kafka-run-class -> ../Cellar/kafka/3.3.1_1/bin/kafka-run-class
lrwxr-xr-x  1 a58 admin   46  4 18 22:27 kafka-server-start -> ../Cellar/kafka/3.3.1_1/bin/kafka-server-start
lrwxr-xr-x  1 a58 admin   45  4 18 22:27 kafka-server-stop -> ../Cellar/kafka/3.3.1_1/bin/kafka-server-stop
lrwxr-xr-x  1 a58 admin   41  4 18 22:27 kafka-storage -> ../Cellar/kafka/3.3.1_1/bin/kafka-storage
lrwxr-xr-x  1 a58 admin   59  4 18 22:27 kafka-streams-application-reset -> ../Cellar/kafka/3.3.1_1/bin/kafka-streams-application-reset
lrwxr-xr-x  1 a58 admin   40  4 18 22:27 kafka-topics -> ../Cellar/kafka/3.3.1_1/bin/kafka-topics
lrwxr-xr-x  1 a58 admin   46  4 18 22:27 kafka-transactions -> ../Cellar/kafka/3.3.1_1/bin/kafka-transactions
lrwxr-xr-x  1 a58 admin   53  4 18 22:27 kafka-verifiable-consumer -> ../Cellar/kafka/3.3.1_1/bin/kafka-verifiable-consumer
lrwxr-xr-x  1 a58 admin   53  4 18 22:27 kafka-verifiable-producer -> ../Cellar/kafka/3.3.1_1/bin/kafka-verifiable-producer
lrwxr-xr-x  1 a58 admin   35  4 18 22:27 trogdor -> ../Cellar/kafka/3.3.1_1/bin/trogdor
lrwxr-xr-x  1 a58 admin   56  4 18 22:27 zookeeper-security-migration -> ../Cellar/kafka/3.3.1_1/bin/zookeeper-security-migration
lrwxr-xr-x  1 a58 admin   50  4 18 22:27 zookeeper-server-start -> ../Cellar/kafka/3.3.1_1/bin/zookeeper-server-start
lrwxr-xr-x  1 a58 admin   49  4 18 22:27 zookeeper-server-stop -> ../Cellar/kafka/3.3.1_1/bin/zookeeper-server-stop
lrwxr-xr-x  1 a58 admin   43  4 18 22:27 zookeeper-shell -> ../Cellar/kafka/3.3.1_1/bin/zookeeper-shell

1.安装一套kafka环境

kafka4.0版本就不再需要zk做注册中心了,但是我使用brew安装发现版本是3.4.4,因此需要单独安装一下zookeeper;

1. 安装kafka和zookeeper

shell 复制代码
brew install kafka

安装完kafka之后,有必要就修改一下kafka的配置,端口9092,如果不修改则直接忽略【配置文件上面已提到过了】

是否具体需要zookeeper配合,其实只需要看一下server.properties文件中有没有zookeeper.connect=localhost:2181

shell 复制代码
brew install zookeeper
shell 复制代码
Name          Status  User File
kafka         started a58  ~/Library/LaunchAgents/homebrew.mxcl.kafka.plist
zookeeper     none         

2.启动kafka和zookeeper

shell 复制代码
brew services start zookeeper
shell 复制代码
Name          Status  User File
grafana       none         
kafka         started a58  ~/Library/LaunchAgents/homebrew.mxcl.kafka.plist
zookeeper     started a58  ~/Library/LaunchAgents/homebrew.mxcl.zookeeper.plist

3.kafka小试牛刀

上面一开始我们就提到,brew安装的软件命令都在/opt/homebrew/bin下,且使用ls -l |grep kafka就可以查看到相关的命令;

那么我们试一下吧,看看能不能完成一次生产消费的case

1.创建一个topic=leo

shell 复制代码
a58@192 bin % kafka-topics  --create --bootstrap-server localhost:9092 --topic leo  
Created topic leo.

在查看一下是否真的有了

shell 复制代码
a58@192 bin % kafka-topics --list --bootstrap-server localhost:9092
leo

好,成功后就再继续创一个vicky,方便后续使用;

  • kafka-topics : 管理Kafka主题,涵盖创建、删除、查看;
  • --create:表明要执行创建动作,具体什么动作看前面的主命令
  • --bootstrap-server localhost:9092:指定Kafka集群的初始连接地址来作为命令的执行方
  • --topic:主题名,此处表示要创建的topic
  • --list:此处表明列出所有topic列表

2.生产kafka消息

shell 复制代码
kafka-console-producer --bootstrap-server localhost:9092 --topic leo

输入这段命令后会进入一个控制台:输入消息内容回车即发送成功了,如下图,我发送了3条消息:

3.消费kafka消息

再开一个控制台,执行下面的消费命令;

这里需要注意一个问题,kafka是支持按照指定偏移量offset进行消费的,即我们可以有选择的消费;

1.从offset=0开始消费topic
shell 复制代码
kafka-console-consumer --bootstrap-server localhost:9092 --topic leo --from-beginning
123
456
789

这命令意味着,不管生产方何时发送的消息,只要这个命令下去则从头开始消费

2.从当前执行完命令后开始消费topic
shell 复制代码
kafka-console-consumer --bootstrap-server localhost:9092 --topic leo
3.从偏移量offset=[num]时消费
shell 复制代码
kafka-console-consumer --bootstrap-server localhost:9092 --topic leo --partition 0 --offset 5

这个命令,是必须要指定分区的:--partition 0;我是本地环境,只有默认的分区,可以缺省,但生产环境不能缺省;

4.使用消费组

我加上一个命令:--group one即指定消费组id=one

shell 复制代码
kafka-console-consumer --bootstrap-server localhost:9092 --topic leo --group one

生产者生产消息,当前消费者的控制台,会收到消息;

假设我重新再开一个mac控制台,命令也是:

shell 复制代码
kafka-console-consumer --bootstrap-server localhost:9092 --topic leo --group one

即此时有两个mac消费者控制台在消费,输入以下的命令,会发现,只有其中的一个控制台可以接收到消息,且只要一开始接收到消息的控制台不关闭,则会一直接收消息,另一个控制台消费者一点机会都没有;

这里我提个问题,如果不指定group的情况下,开两个消费者消费控制台,会怎么样?

假设把groupId改一下:two

shell 复制代码
kafka-console-consumer --bootstrap-server localhost:9092 --topic leo --group two

此时生产者控制台继续输入内容回车发送消息,我们会发现两个消费者消费的消息内容都是一样的;

为什么会这样呢,等我后面写文章讲一下kafka就知道了!

相关推荐
110101 小时前
AppKit(一):NSAppliaction类
mac
xmyLydia1 小时前
Kafka + MongoDB 构建异步日志系统(含 DLQ、Prometheus 可视化)实战记录
kafka
跟着珅聪学java2 小时前
kafka菜鸟教程
分布式·kafka
慧一居士10 小时前
Spring Boot 集成 Kafka 及实战技巧总结
spring boot·kafka
斯普信专业组17 小时前
Kafka安全认证技术:SASL/SCRAM-ACL方案详解
分布式·安全·kafka
Goldchenn19 小时前
kafka服务端和springboot中使用
spring boot·分布式·kafka
Piper蛋窝1 天前
如何在 Mac M1 Pro 上 debug Linux Kernel | 基于 Ubuntu 24 工具链和 QEMU
linux·mac
芝法酱1 天前
芝法酱躺平攻略(21)——kafka安装和使用
分布式·kafka
小奏技术3 天前
Kafka要保证消息的发送和消费顺序性似乎没那么简单
后端·kafka