MySQL筆記5:函式
訊息佇列通訊的兩種模式:
一、點對點模式
點對點模式通常是基於拉取或者輪詢的訊息傳送模型,這個模型的特點是傳送到佇列的訊息被一個且只有一個消費者進行處理。生產者將訊息放入訊息佇列後,由消費者主動的去拉取訊息進行消費。點對點模型的的優點是消費者拉取訊息的頻率可以由自己控制。但是訊息佇列是否有訊息需要消費,在消費者端無法感知,所以在消費者端需要額外的執行緒去監控。
二、釋出訂閱模式:
如上圖所示,釋出訂閱模式是一個基於訊息傳送的訊息傳送模型,該模型可以有多種不同的訂閱者。生產者將訊息放入訊息佇列後,佇列會將訊息推送給訂閱過該類訊息的消費者(類似微信公眾號)。由於是消費者被動接收推送,所以無需感知訊息佇列是否有待消費的訊息!但是consumer1、consumer2、consumer3由於機器效能不一樣,所以處理訊息的能力也會不一樣,但訊息佇列卻無法感知消費者消費的速度!所以推送的速度成了釋出訂閱模模式的一個問題!假設三個消費者處理速度分別是8M/s、5M/s、2M/s,如果佇列推送的速度為5M/s,則consumer3無法承受!如果佇列推送的速度為2M/s,則consumer1、consumer2會出現資源的極大浪費!
Kafka
kafka是一種高吞吐量的分散式釋出訂閱訊息系統,它可以處理消費者規模網站中的所有動作流資料,具有高效能、持久化、多副本複用、橫向擴充套件能力...
基礎架構圖
Producer: Producer即生產者,訊息的生產者,是訊息的入口。
kafka cluster:
Broker:Broker是kafka例項,每個伺服器上有一個或者多個kafka的例項,我們姑且認為每個broker對應一臺伺服器,每個kafka叢集內的broker都有一個不重複的編號,如圖中的broker-0、broker-1等。。。
Topic:訊息的主題,可以理解為訊息的分類,kafka的資料就儲存在topic,在每個broker上都可以建立多個topic。
Partition
Replication:每一個分割槽都有多個副本,副本的作用是做備胎,但主分割槽(Leader)故障的時候會選擇一個備胎(Follower)上位。成為Leader
在kafka中預設副本的最大數量是10個,且副本的數量不能大於Broker的數量。follower和leader絕對是在不同的機器,同一機器對同一個分割槽也只可能存放一個副本(包括自己)
message:每一條傳送的訊息主體
Consumer:消費者,即訊息的消費方,是訊息的出口
ConsumerGroup
Zookeeper: kafka叢集依賴zookeeper來儲存叢集的元資訊,來保證系統的可用性。