消息中間件的背景分析
場景分析
進程級別的異步處理
阻塞隊列+線程池

應(yīng)用程序級別的異步處理
通過第三方的消息中間件
技術(shù)需求
基本需求
消息的接受和發(fā)送,涉及到網(wǎng)絡(luò)(BIO,NIO)
消息的存儲(持久化,非持久化存儲)
消息的序列化和反序列化
消息的確認機制,如何避免重發(fā)
高級需求
消息的有序性
是否支持事務(wù)消息
是否支持集群
kafka的介紹
什么是Kafka
Kafka是一款分布式消息發(fā)布和訂閱系統(tǒng),它的特點是高性能、高吞吐量。
應(yīng)用場景
1 行為跟蹤:kafka可以用于跟蹤用戶瀏覽頁面、搜索及其他行為。
2 日志收集:將應(yīng)用日志收集到Kafka
架構(gòu)設(shè)計

名詞解釋
1 Broker(中間人):集群的每一臺機器叫做Broker
2 Producer(生產(chǎn)者):將消息push到Broker
3 Consumer(消費者):將消息從Broker中pull
4 Topic(主題):消息的類別
5 Partition(分區(qū)):物理上的概念,一個Topic有一個或多個Partition
6 Consumer Group: 每個消費者都屬于一個group(若不指定默認是group)
7 Topic & Partition: topic邏輯上是一個queue,為了性能的提升,物理上把一個topic分成一個或多個Partition,每一個Partition對應(yīng)一個文件夾,該文件夾存儲的是消息和索引文件。
安裝部署
請參考官網(wǎng)文檔:http://kafka.apache.org/quickstart
kafka的基本操作
具體請參考:http://kafka.apache.org/quickstart
兩個問題
Cannot assign requested address
將 server.properties的配置修改如下
listeners=PLAINTEXT://內(nèi)網(wǎng):9092
advertised.listeners=PLAINTEXT://外網(wǎng)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