首页 > 大数据 > Hadoop > 消息队列的使用场景之kafka
自己原文公众号: https://mp.weixin.qq.com/s/21VyBQtwIlNORZmVjQvdhw
kafka安装和使用其实比rabbitMQ要容易些,也舒服些。
1、防火墙关闭
2、java环境安装完毕
3、3台主机名修改规划完毕
每台机器
mkdir -p /zookeeper/data
tar -zxvf apache-zookeeper-3.7.0-bin.tar.gz
mv apache-zookeeper-3.7.0-bin /zookeeper/
vim /zookeeper/apache-zookeeper-3.7.0-bin/conf/zoo.cfg
配置文件如下
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/zookeeper/data/zookeeper
dataLogDir=/zookeeper/data/logs
clientPort=2181
maxClientCnxns=60
autopurge.snapRetainCount=3
autopurge.purgeInterval=1
server.1=10.60.156.187:2888:3888
server.2=10.60.156.188:2888:3888
server.3=10.60.156.189:2888:3888
这些是关键步骤,即Kafka要依靠zk。如果面试的时候我会问问,大致安装步骤是什么?要注意什么。最起码zk的myid要说说吧。kafka的brokerid要说说吧。就像MySQL的serverid一个意思。这个如果都没说出来,严重怀疑到底做过没有啊?
zkServer.sh status启动以后看看是flower还是leader。
以上是三台的zk。
而kafka就是解压以后直接配置
vim /root/kafka/config/server.properties
然后就启动。不想rabbitMQ那样有加入集群的步骤,因为zk完成了。
kafka的主节点和非主节点的区别是这样的:

可见任意节点都是可以的。
总体来说和rabbiMQ的套路差不多。
不过使用起来,方便一些。
下面是我从其他网站上找得到的

有人是这样总结的:
rabbitmq
1.RabbitMQ的消息应当尽可能的小,并且只用来处理实时且要高可靠性的消息。
2.消费者和生产者的能力尽量对等,否则消息堆积会严重影响RabbitMQ的性能。
3.集群部署,使用热备,保证消息的可靠性。
kafka
1.应当有一个非常好的运维监控系统,不单单要监控Kafka本身,还要监控Zookeeper。(kafka强烈的依赖于zookeeper,如果zookeeper挂掉了,那么Kafka也不行了)
2.对消息顺序不依赖,且不是那么实时的系统。
3.对消息丢失并不那么敏感的系统。
4.从 A 到 B 的流传输,无需复杂的路由,最大吞吐量可达每秒 100k 以上。
我觉得总结的对。不过我经历的不少项目不管是不是用对了,重点是都用了。问题是用了以后貌似没有太好的效果。
当然我也经历了不少没有有任何一种消息队列。消息队列还有RocketMQactiveMQ等等我就不再写了,大同小异。
其实不少时候不用也行。我之所以要写了两篇是为了说明他们,然后才说可以不要用,否则可能会被误解,不会用而不用。
我是ITPUB内存数据库版主,尽管如此我认为很多Redis都是用错的。不能因为我会什么就推荐什么,这是不负责的。
以前看到一篇博客说有的公司用redis存日志。其实 基本是开发团队喜欢什么用什么,没有特别要求。就像数据库选型一样,大多数开发可能也是人云亦云的使用。
谁谁谁用了MySQL、谁谁谁用了PG、谁谁谁用了Oracle。当然还有谁谁谁用了SQLSERVER DB2.其实他们用了什么是出于对他们自己业务场景进行了考量,非常了解什么技术合适自己。大厂的技术选型都是结合自己,而不是开发喜好。
至少数据库由DBA说了算,消息队列由SA说了算。但是现在互联网模式下DBA和SA模糊了,更多的DBA将SA的这部分做了。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/637517/viewspace-2847171/ ,如需转载,请注明出处,否则将追究法律责任。