selenium例項: 登入網站驗證是否成功登入
訊息中介軟體RabbitMQ
1.什麼是訊息中介軟體
MQ全稱為Message Queue,訊息佇列是應用程式和應用程式之間的通訊方法。
為什麼使用MQ?
在專案中,可將一些無需即時返回且耗時的操作提取出來,進行非同步處理,而這種非同步處理的方式大大的節省了伺服器的請求響應時間,從而提高了系統的吞吐量
2.應用場景
2.1 任務非同步處理
將不需要同步處理的並且耗時長的操作由訊息佇列通知訊息接收方進行非同步處理。提高了應用程式的響應時間。
2.2 應用程式解耦合
MQ相當於一箇中介,通過它讓生產者與消費者互動,將應用程式進行解耦合。
2.3 削峰填谷
如某個系統會往資料庫寫資料,但是資料庫只能支撐每秒1000
在系統低峰期的時候併發也就100多個,但在高峰期時候,併發量會突然激增到5000以上,這個時候資料庫肯定會卡死。
這時候,可以使用MQ,訊息會被MQ儲存起來,然後系統就可以按照自己的消費能力來消費,比如每秒1000個數據,慢慢寫入資料庫,就不會卡死資料庫了。
但使用了MQ之後,限制消費訊息的速度為1000,但是這樣一來,高峰期產生的資料勢必會被積壓在MQ中,高峰就被“削”掉了。
但是因為訊息積壓,在高峰期過後的一段時間內,消費訊息的速度還是會維持在1000QPS,直到消費完積壓的訊息,這就叫做“填谷”
3. AMQP 和 JMS
MQ是訊息通訊的模型;實現MQ的大致有兩種主流方式:AMQP、JMS。
3.1 AMQP
AMQP 是一種協議,更準確的說是一種 binary wire-level protocol(連結協議)。與 JMS 的本質差別 : AMQP不從API層進行限定,而是直接定義網路交換的資料格式。
3.2 JMS
JMS 即Java訊息服務(JavaMessage Service)應用程式介面,是一個Java平臺中關於面向訊息中介軟體(MOM)的API,用於在兩個應用程式之間,或分散式系統中傳送訊息,進行非同步通訊。
3.3 AMQP 與 JMS 區別
- JMS 是定義了統一的介面,來對訊息操作進行統一; AMQP是通過規定協議來統一資料互動的格式
- JMS 限定了必須使用Java語言; AMQP只是協議,不規定實現方式,因此是跨語言的。
- JMS 規定了兩種訊息模式; AMQP的訊息模式更加豐富
4.多種訊息中介軟體
常見的訊息佇列有如下:
- ActiveMQ:基於 JMS
- ZeroMQ:基於 C 語言開發
- RabbitMQ:基於 AMQP 協議,erlang 語言開發,穩定性好
- RocketMQ:基於 JMS,阿里巴巴產品
- Kafka:類似MQ的產品;分散式訊息系統,高吞吐量
RabbitMQ是由erlang語言開發,基於AMQP(Advanced Message Queue 高階訊息佇列協議)協議實現的訊息佇列,它是一種應用程式之間的通訊方法,訊息佇列在分散式系統開發中應用非常廣泛。
RabbitMQ官方地址:http://www.rabbitmq.com/
RabbitMQ提供了6種模式:
- 簡單模式
- work模式
- Publish/Subscribe 釋出與訂閱模式
- Routing 路由模式
- Topics 主題模式
- RPC 遠端呼叫模式;
個人部落格為:
MoYu's HomePage