可以用來做論文引用的網(wǎng)站2345網(wǎng)址導航怎么下載
kafka官網(wǎng)
線程和線程之間的數(shù)據(jù)交互
在jvm里不同的線程有自己的棧內存,但彼此之間交互可以在共享的內存中進行,即堆內存,堆內存會將這些消息放到隊列中,具體實現(xiàn)jvm見,棧內存各自維護,堆內存大家共享
進程和進程之間的數(shù)據(jù)交互
不同的進程在服務器上啟動的時候,中間通過socket和websocket進行交互。
可能會產(chǎn)生的問題:
①產(chǎn)生和消費的速度不對等,內存/磁盤作為稀有資源會不夠用,從而產(chǎn)生消息積壓的問題,可能通過文件存儲的方式解決
②要對消息進行處理,可能一條消息發(fā)給多個進程,也可能一條消息切割為多部分被多個進程消費此時就需要一個中間件,進行消息的緩沖處理,稱為消息中間件。
③使用消息中間件也可避免生產(chǎn)者和消費者的直連,降低系統(tǒng)的耦合性,提高可用性和可拓展性?
MQ的簡介
?Java中消息產(chǎn)生,發(fā)送到MQ軟件中,發(fā)送消息的被稱為Producer(消息提供者),接收消息的被稱為Consumer(消息消費者),MQ軟件中一般用隊列處理消息,消息一般包含消息頭、消息屬性、消息主題內容。
P2P模型
?(Publish-Subscribe)相當于是一對一,一條消息一個人發(fā)送,只能被一個人接收。
PS模型?
即是消息的發(fā)布和訂閱模型
kafka借鑒了JMS模型,但不完全遵循,所以雖然是消息中間件,但不同于RabbitMQ、ActiveMQ、RocketMQ命名中帶Message Queue,kafka中的消息message一般稱之為record,JMS Provider一般稱之為Kafka Broker,保證消費順序的索引稱之為偏移量offset
?kafka的基本組件,app調用kafka的producer和consumer進行消息的傳遞和讀取,其中kafka自身是通過broker代理進行這些消息的處理,?broker中的消息想要進行有序處理,通過偏移量實現(xiàn)也就是offset。