單體架構:
所有**都在乙個專案中,耦合度太高,公升級乙個模組需要將所有模組都公升級一遍。
分布式系統架構:(乙個請求需要多個系統協調處理)
基於訊息中介軟體的分布式系統
訊息中介軟體概述
什麼是訊息中介軟體
利用高效可靠的訊息傳遞機制,進行平台無關的資料交流;
並基於資料通訊來進行分布式系統的整合;
通過提供訊息傳遞和訊息排隊模型,它可以在分布式系統下擴充套件程序間的通訊。
訊息中介軟體的應用場景
跨系統資料傳遞、高併發流量削峰、資料非同步處理等等
常用的訊息中介軟體
activemq、rocketmq、rabbitmq、kafka
本質一種具備接受請求、儲存資料、傳送資料等功能的網路應用。
和一般網路應用程式的區別是它主要負責資料的接受和傳遞,所以效能一般高於普通程式。
5大核心組成
協議、持久化機制、訊息分發機制、高可用機制、高可靠機制
協議:
什麼是協議?
協議是計算機之間通訊時共同遵守的一組協定,都遵守相同的協定,計算機之間才能相互交流。
是對資料格式和計算機之間交流時必須遵守的規則的正式描述。
協議三要素;
語法:資料與控制資訊的結構或格式;
語義:即要發出何種控制資訊,完成何種動作以及做出何種響應。
時序(同步):事件實現順序的詳細說明
常見協議:
http協議的三要素
語法:http規定了請求報文和響應報文的具體格式。
語義:客戶端主動發起的操作稱為請求。
乙個請求對應乙個響應。
訊息中介軟體的常見協議:amqp、openwire、mqtt、kafka、openmessage
為什麼訊息中介軟體不直接使用http協議?
答:http協議太複雜、且是短連線。
openwire協議主要是activemq使用。
amqp(advanced message queuing protocol)協議:
是高階訊息佇列協議,04年,jpmorgan chase(摩根大通集團)聯合其他公司設計。
特性:事務支援、持久化支援,出生金融行業,在可靠性訊息處理上具備天然的優勢。
mqtt(message queuing telemetry transport)協議:
訊息佇列遙測傳輸,是ibm開發的乙個即時通訊協議,物聯網系統架構中的重要組成部分。
特性:輕量、結構簡單、傳輸快、沒有事務支援、沒有持久機制
使用場景:適用於計算能力有限、低頻寬、網路不穩定的場景。
open message近兩年由阿里發起、與雅虎、滴滴出行、streamlio等公司共同參與創立的分布式訊息中介軟體、流處理領域的應用開發標準。
是國內首個在全球範圍內發起的分布式訊息領域國際標準。
特性:結構簡單、解析快,有事務設計、有持久化設計。
apache rocketmq就是用的這種協議。
kafka協議
是基於tcp的二進位制協議。訊息內部通過長度來分隔,由一些基本資料型別組成。
特性:結構簡單、解析快、無事務設計、有持久化設計。
持久化
什麼是持久化:簡單來說就是將資料存入磁碟,而不是存在記憶體,隨服務重啟而消失,使資料能夠永久儲存叫做持久化。
常用持久化方式:
訊息分發
高可用
高可靠
就是指系統能持續無故障地持續執行。比如乙個系統從來不崩潰、報錯、或崩潰報錯的機率很低,那就是高可靠。
高併發業務場景下,如果不能保證系統的高可靠,那將造成很嚴重的損失。
分布式中介軟體設計篇
利用高效可靠的訊息傳遞機制進行平台無關的資料交流 並基於資料通訊來進行分布式系統的繼承 通過提供訊息傳遞和訊息排隊模型,它可以在分布式環境下擴充套件程序間的通訊 跨系統資料傳遞 高併發流程削峰 資料非同步處理 等等 activemq rabbitmq kafka rocketmq 一種具備接受請求 ...
分布式訊息中介軟體
一 分布式訊息中介軟體入門 訊息中介軟體主要實現分布式系統中解耦 非同步訊息 流量銷鋒 日誌處理等場景。現在生產中用得最多的訊息佇列有 activemq,rabbitmq,kafka,rocketmq 等。jms 規範 類似於 jdbc 的一套介面規範,但不同的是他是面向的訊息服務,提供一套標準 a...
分布式訊息中介軟體 kafka
在我們大量使用分布式資料庫 分布式計算集群的時候,是否會遇到這樣的一些問題 這個時候,我們就可以用到分布式訊息系統了。雖然上面的描述更偏向於乙個日誌系統,但確實kafka在實際應用中被大量的用於日誌系統。首先我們要明白什麼是訊息系統,在kafka官網上對kafka的定義叫 a distributed...