消息中间件的背景分析
场景分析
进程级别的异步处理
阻塞队列+线程池
应用程序级别的异步处理
通过第三方的消息中间件
技术需求
基本需求
消息的接受和发送,涉及到网络(BIO,NIO)
消息的存储(持久化,非持久化存储)
消息的序列化和反序列化
消息的确认机制,如何避免重发
高级需求
消息的有序性
是否支持事务消息
是否支持集群
kafka的介绍
什么是Kafka
Kafka是一款分布式消息发布和订阅系统,它的特点是高性能、高吞吐量。
应用场景
1 行为跟踪:kafka可以用于跟踪用户浏览页面、搜索及其他行为。
2 日志收集:将应用日志收集到Kafka
架构设计
名词解释
1 Broker(中间人):集群的每一台机器叫做Broker
2 Producer(生产者):将消息push到Broker
3 Consumer(消费者):将消息从Broker中pull
4 Topic(主题):消息的类别
5 Partition(分区):物理上的概念,一个Topic有一个或多个Partition
6 Consumer Group: 每个消费者都属于一个group(若不指定默认是group)
7 Topic & Partition: topic逻辑上是一个queue,为了性能的提升,物理上把一个topic分成一个或多个Partition,每一个Partition对应一个文件夹,该文件夹存储的是消息和索引文件。
安装部署
请参考官网文档:http://kafka.apache.org/quickstart
kafka的基本操作
具体请参考:http://kafka.apache.org/quickstart
两个问题
Cannot assign requested address
将 server.properties的配置修改如下
listeners=PLAINTEXT://内网:9092
advertised.listeners=PLAINTEXT://外网ip:9092
参考链接:https://blog.csdn.net/qq_17238449/article/details/106119230
Connection to node -1 could not be established. Broker may not be available
将bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic test --from-beginning的localhost改为ip地址
参考链接:https://www.cnblogs.com/syscn/p/9975528.html
kafka的集群安装
整体类似于zookeeper的集群安装
具体请参考http://kafka.apache.org/quickstart