消息队列

Kafka

随便写写Kafka,并且大俗特俗的从安装操作开始写起。 Kafka 的安装 首先要有 jdk! 其次要有 zookeeper!不过kafka的发行版压缩包中,已经集成了zookeeper。 从官网下载最新版的Kafka,解压后就可以直接使用了。 启动zookeeper: bin/zookeeper-server-start.sh -daemon config/zookeeper.properties 启动Kafka bin/kafka-server-start.sh -daemon config/server.properties 这样一个单节点的Kafka就启动了。早期的版本启动的时候还需要使用 nohup 来放到后台。现在只需要带 -daemon 参数了。 Kafka 的操作 只列几个常用的命令,更多的命令可以到官网上去翻文档。 创建topic bin/kafka-topics.sh --zookeeper localhost:2181 --create --topic etl-kafka --partitions 24 --replication-factor 1 列出所有的topic bin/kafka-topics.sh --zookeeper localhost:2181 --list 查看topic信息 bin/kafka-topics.sh --zookeeper localhost:2181 --describe --topic etl-kafka 测试发送消息 bin/kafka-console-producer.sh --broker-list localhost:9092 --topic etl-kafka 测试接受消息 bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic etl-kafka --from-beginning 以上是最常用的命令,此外还有些管理 topic 的命令,如

消息队列

关于消息队列其实已经有很多文章了,简单摘抄一些。 以下内容来自美团技术点评:消息队列设计精要 消息队列已经逐渐成为企业IT系统内部通信的核心手段。它具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。 常见的使用场景: 解耦 最终一致性 广播 错峰与流控 消息队列基本功能: RPC通信协议 高可用 服务端承载消息堆积的能力 存储子系统的选择 消费关系解析 队列高级特性设计: 可靠投递(最终一致性) 消费确认 事务 正式接触过的消息队列有Kafka、RabbitMQ,其余还稍微了解过ZeroMQ、nsq。它们都有其独特之处,都有各自的使用场景。而使用场景决定了消息队列产品的选择。 Kafka 是在搞 ETL 项目时用到的。其设计初衷是高吞吐,所以放弃了传统消息队列的设计思路(维护消息状态,保证消息一次发送…等等特性),取而代之的消息的持久化、分片、偏移量等设计思路。 RabbitMQ 是在研究 OpenStack时接触到的。主要作用是进行 python 的进程间通讯:所有的进程都会连接 RabbitMQ;控制节点会通过RabbitMQ下发命令;计算节点会通过RabbitMQ回传命令执行情况、或者是本机的信息。选择RabbitMQ,应该是看中了其可以保证消息的到达的能力。 而随着Golang社区的发展,也开始有人不断的制造新轮子,前面提到的NSQ就是其中之一,此外还有一个NATS。 另外Rust社区也在不断的发展中,估计也会诞生出一些新的轮子,之后会持续关注这些新轮子。