怎麼理解php的中介軟體

martist發表於2018-08-15

是什麼

定義

根據zend-framework中的定義:

所謂中介軟體是指提供在請求和響應之間的,能夠截獲請求,並在其基礎上進行邏輯處理,與此同時能夠完成請求的響應或傳遞到下一個中介軟體的程式碼。
複製程式碼

在兩個服務之間的模組,都可以稱為中介軟體。

中介軟體應該一種架構方法,不侷限於特定的語言。 例如提供不同應用之間訊息通訊的訊息中介軟體。淘寶下面很多產品之間都需要資訊共享,通過一箇中間人來專門傳遞訊息。這樣做很容易擴充套件,對上層應用提供統一訊息操作介面就行了。 單個程式內部也可以有中介軟體,一個程式內部實現對中介軟體介面對支援。 把底層的介面包裝一層,然後向上層提供介面。這樣底層改變的話,上層也就是你寫的程式碼不用動,只改中介軟體即可。由於只有中介軟體一個地方呼叫底層,改起來會比較方便。

有哪些

非底層作業系統軟體、非業務應用軟體,不是直接給終端使用者使用的,不能直接給客戶帶來價值的軟體,統稱中介軟體。常見的有如下幾種:服務中介軟體、整合中介軟體、資料中介軟體、訊息中介軟體、安全中介軟體。

用Java實現的中介軟體,統稱Java中介軟體。中介軟體,可以理解為類庫,介於類庫和產品之間。中介軟體真的是java世界的產物,我等phper能找的資料太少了。

說簡單一點,就是你的程式A和程式B互相通訊使用的協議,程式A,B可以由不同語言不同平臺構建。但是協議可以保證他們能互相認識互發的東西。

簡單說,中介軟體有個很大的特點,是脫離於具體設計目標,而具備提供普遍獨立功能需求的模組。這使得中介軟體一定是可替換的。如果一個系統設計中,中介軟體是不可替換的,不是架構、框架設計有問題,那麼就是這個中介軟體,在別處可能是個中介軟體,在這個系統內是引擎。

訊息中介軟體

訊息中介軟體就是一個臨時儲存器。主要解決應用耦合,非同步訊息,流量削鋒等問題,是大型分散式系統不可缺少的中介軟體。

1.用於海量資料洪峰的臨時儲存,比如搶購秒殺,後端程式一下子處理不了這麼多搶購請求,那就由訊息中介軟體來儲存搶購請求,後端程式再慢慢取出訊息處理唄
2.用於多個系統之間的訊息傳遞
複製程式碼

目前在生產環境,使用較多的訊息佇列有ActiveMQ,RabbitMQ,ZeroMQ,Kafka,MetaMQ,RocketMQ等。

資料庫中介軟體

使用場景的比較多,比如:

1、讀寫分離
2、資料庫從庫的負載均衡
3、分散式事務
4、支援多種資料庫(Mysql、PG、Oracle等)
複製程式碼

框架中的中介軟體

CI框架和tp框架中的hook(鉤子),就是中介軟體的一種。 laravel中可以使用php artisan 命令建立中介軟體,比如請求過濾器就是最常見的中介軟體使用方法一種。Laravel支援全域性的中介軟體和根據具體路由規定的中介軟體兩種,同時優先順序又以定義順序為準。 ZendFramework是由zend公司推出的php框架,其目標就是建立一套大而全的php框架。以滿足企業應用開發的目標。其中"zend-stratigility" 負責提供中介軟體以及中介軟體執行流的功能。

附錄

一篇比較巧妙設計中介軟體的文章 blog.csdn.net/qq_20329253… 一片用閉包實現中介軟體的文章 blog.csdn.net/allen_tsang…

求關注,求喜歡

相關文章