在Java項目實際開發中,咱們所使用的ActiveMQ、RibbitMQ、Kafka、Tomcat、WebLogic,這些均可以統稱爲中間件。java
咱們初次去了解,什麼是中間件?數據庫
什麼是中間件?編程
因爲業務、機構和技術是不斷變化的,所以爲其服務的軟件系統必須適應這樣的變化。在合併、添加服務或擴展可用服務以後,公司可能無力負擔從新建立信息系統所需的成本。正是在這個關鍵時刻,才須要集成新組件或者儘量高效地擴展示有組件。要集成異類組件,最方便的方法不是將它們從新建立爲同類元素,而是提供一個容許它們進行通訊(不考慮它們之間的差別)的層。該層被稱做中間件。瀏覽器
維基百科中的介紹:緩存
中間件(英語:Middleware),又譯中間件、中介層,是提供系統軟件和應用軟件之間鏈接的軟件,以便於軟件各部件之間的溝通。在現代信息技術應用框架如 Web 服務、面向服務的體系結構等項目中應用比較普遍。如數據庫、Apache 的 Tomcat ,IBM 公司的 WebSphere ,BEA 公司的 WebLogic 應用服務器,東方通公司的 Tong 系列中間件,以及 Kingdee 公司的等都屬於中間件。服務器
中間件,顧名思義,就是鏈接在兩個軟件之間的東西,是軟件之間的一個粘合劑,一個膠水同樣的東西。它位於操做系統和咱們的應用程序之間,可讓開發者方便地處理通訊、輸入和輸出,使開發者可以專一於本身的業務邏輯開發。架構
這麼一說,好像 Tomcat 確實還有點像中間件!位於咱們的操做系統和應用程序之間!併發
中間件有不少,早在 1998 年 IDC 公司就將中間件分紅了 6 大類,國內 2005 年以前出版的中間件相關的書上,不少都是按照這 6 大類來分的,分別是:框架
這裏邊除了消息中間件和交易中間件你們可能據說過以外,其餘的中間件估計都不多據說,這是由於時代在變化,有的中間件慢慢被淘汰了(例如 終端仿真/屏幕轉換 中間件),有的則慢慢合併到其餘框架中去了(例如 遠程過程調用中間件)。異步
消息隊列中間件是分佈式系統中重要的組件,主要解決應用耦合、異步消息、流量削鋒等問題。實現高性能、高可用、可伸縮和最終一致性架構。是大型分佈式系統不可缺乏的中間件。
JMS即Java消息服務(Java Message Service)應用程序接口,是一個Java平臺中關於面向消息中間件(MOM)的API,用於在兩個應用程序之間,或分佈式系統中發送消息,進行異步通訊。Java消息服務是一個與具體平臺無關的API,絕大多數MOM提供商都對JMS提供支持。
JMS 消息傳送的對象在編程域中基本保持不變:鏈接工廠、鏈接、會話、生成方、使用方、消息和目的地。
MQ全稱爲Message Queue,消息隊列(MQ)是正確而又完整的 JMS 實現,消息隊列(MQ)是一種應用程序對應用程序的通訊方法。應用程序經過寫和檢索出入列隊的針對應用程序的數據(消息)來通訊,而無需專用鏈接來連接它們。消息傳遞指的是程序之間經過在消息中發送數據進行通訊,而不是經過直接調用彼此來通訊,直接調用一般是用於諸如遠程過程調用的技術。
場景說明:新用戶註冊發放100積分,180元新手大禮包,激活會員卡,傳統的作法有兩種:串行方式,並行方式。
以上兩種方式,很容易發現同步處理的狀況下都會涉及到非主業務的其餘操做,其實註冊的的主流程不該該受其餘事件影響,經過消息隊列的方式,能夠把後續的處理流程進行異步處理能夠大大提升響應速度。
場景說明:企業中常常出現企業合做如:本公司的驢粉卡與電信合做,新開卡的用戶從電信端推送到我方,除了相對應的福利外,首先判斷是否註冊本公司帳戶, 沒有給予註冊,可是新用戶的相對應權益須要對等的發放。
缺點:
1.與其餘系統過分耦合
2.短信發放或優惠券發放失敗,影響主業務
優勢:
1.註冊完成而後將消息寫入隊列返回成功。
2.發放權益業務不影響主業務,實現解耦。
場景說明:秒殺活動對稀缺或者特價的商品進行定時定量售賣,吸引成大量的消費者進行搶購,但又只有少部分消費者能夠下單成功。 所以,秒殺活動將在較短期內產生比平時大數十倍,上百倍的頁面訪問流量和下單請求流量。