場景->需求->解決方案->應用->原理html
跨進程通訊(進程間生產消費模型)java
實現消息的發送和接收。web
NIO通訊 (序列化/反序列化)--dubbo、avro、protobuf、zk(jute)數據庫
實現消息的存儲(持久化/非持久化)apache
數據庫存儲、文件存儲(磁盤:順序讀寫、頁緩存、持久化的時機(落盤策略)、零拷貝)、內存bootstrap
是否支持跨語言(多語言生態)api
消息的確認(確認機制)--在跨進程通訊中 ->業務邏輯需求緩存
是否支持集羣markdown
本身實現選舉、第三方的實現(zk)架構
是否支持有序(業務邏輯)
是否支持事務消息(業務邏輯)->最終一致性
是否支持高併發和大數據的存儲
是否支持可靠性存儲
是否支持多協議
是否收費
pub/sub--金融領域--TIB(規則)
非個性化需求, 而是共性化需求
IBM websphere mq(商業)
JMS協議->Java api->AMQP(通用性)
起源:LinkedIn 活動流 運營數據 誕生之初就是爲了解決大數據量的問題
簡介
實現語言:scala
架構圖
下載及安裝
單節點安裝:
sudo wget http://mirrors.tuna.tsinghua.edu.cn/apache/kafka/2.3.0/kafka_2.11-2.3.0.tgz
注意點:
必須安裝zk(啓動時必須先啓動zk),詳情請參考
遠程安裝 必須修改一下兩個屬性
#本機ip
listeners=PLAINTEXT://‘本機ip’:9092
#zk地址
zookeeper.connect=localhost:2181
啓動命令
sh kafka-server-start.sh -daemon server.properties
集羣安裝:
多機器部署
下載安裝同單機,主要修改配置文件server.properties文件配置
#zookeeper地址(三個節點相同)
zookeeper.connect=192.168.1.11:2181
#broker.id(三個節點分別爲0、一、2)
broker.id=1
##監聽協議(三個節點配置各自的ip地址)
listeners=PLAINTEXT://192.168.1.12:9092
僞集羣部署
在單節點建立文件目錄進行設置。參考上述多機器部署。
基本操做
##建立topic--建立成功後能夠在zk客戶端看到此消息
sh kafka-topics.sh --create --zookeeper 192.168.1.11:2181 -replication-factor 1 --partitions 1 --topic test
##消費監聽消息
sh kafka-console-consumer.sh --bootstrap-server 192.168.1.11:9092 --topic test --from-beginning
##生產消息
sh kafka-console-producer.sh --broker-list 192.168.1.11:9092 --topic test
不一樣的業務領域,異步,解耦,削峯
註冊新用戶(用戶中心)
->發送理財金/優惠券;爲了增長復購->贈送一些優惠券(營銷服務)
秒殺場景(流量大,商品少)