世界著名的資訊機構Giga Group把中間件分為三大類,共十五種。另一家世界著名的資訊機構IDC同時指出,最近幾年到未來的2002年,增長率最高的中間件將集中在數據存取中間件、消息中間件、交易中間件、對象中間件、應用服務器中間件5種。
數據訪問中間件適用于應用程序與數據源之間的互操作模型,客戶端使用面向數據庫的API,以提請直接訪問和更新基于服務器的數據源,數據源可以是關系 型、非關系型和對象型。這類中間件大都基于SQL語句,采用同步通訊方式。此類中間件使應用開發簡單,但如果是透過廣域網使用,會帶來嚴重的效率問題,因為在低速網上來回交互SQL語句會使通訊流量過大,同時對數據壓縮、加密帶來不便。
消息中間件
消息中間件消息中間件適用于需要進行網絡通信的系統上,負責建立網絡通信的邏輯通道,由消息中間件實現數據或文件發送。 消息中間件的一個重要作用是可以實現跨平臺操作,越來越多的分布式應用采用消息中間件來構建,通過消息中間件來把應用擴展到不同的操作系統和不同的網絡環 境 中間件領域目前最熱門的技術是異步的消息中間件,異步中間件技術比同步中間件技術具有更強的容錯性,在系統故障時可以保證消息的正常傳輸,因而在過去的兩 年里增長迅速。
交易中間件
交易中間件交易中間件是專門針對聯機交易處理系統而設計的。交易中間件就是一組程序模塊,用以大大減少開發一個聯機交易處理系統所需的編程量。交易中間件 的主要標準是X/OPEN 組織定義的分布式交易處理參考模型。交易中間件理論上相對成熟,功能和性能界定清晰,但基本上適用于聯機交易系統,如銀行業務系統、定票系統等。交易中間 件管理由應用聲明和提交的交易,并通過兩階段提交協議等方式保證分布式交易的完整性、控制并發、實現交易路由和均衡負載。
對象中間件
對象中間件面向對象的中間件提供一個標準的構件框架,能使不同的廠家的軟件通過不同的地址空間、網絡和操作系統互相交互訪問。該構件的具體實現、位置及 所依附的操作系統對客戶來說都是透明的。例如,我們可以通過簡單的組裝或擴展已有的構件就可以建立一個客戶機/服務器結構的信息系統。面向對象的中間件技 術的目標就是為軟件用戶及開發者提供一種應用級的即插即用的互操作性,就象現在使用集成塊和擴展板一樣。 有關對象中間件的標準相繼問世,像OMG組織的CORBA、Microsoft的COM 以及IBM公司的SOM等,這些標準都極大地促進了對象中間件技術的發展。
應用服務器中間件
應用服務器中間件針對Internet/Intranet和其它分布式構件應用,提供服務方構件的完整環境。與交易監控器類似,只不過是面向對象的、支 持構件、具有標準API。應用服務器將在越來越熱的電子商務領域發揮重大作用。
其實,一個復雜的分布式系統可以通過搭積木的方式來建立,每個積木就是一個中間件,可通過適當的代碼將其黏合在一起。
Tomcat
Tomcat是Sun的JSWDK(JavaServer Web Development Kit)中Servlet的運行環境(servlet容器)。Tomcat是Apache Jakarta軟件組織的一個子項目,Tomcat是一個JSP/Servlet容器,它是在SUN公司的JSWDK(Java Server Web Development Kit)基礎上發展起來的一個JSP和Servlet規范的標準實現,使用Tomcat可以體驗JSP和Servlet的最新規范。經過多年的發展,Tomcat不僅是JSP和Servlet規范的標準實現,而且具備了很多商業Java Servlet容器的特性,并被一些企業用于商業用途。
JBoss
JBoss是一個運行EJB的J2EE應用服務器。它是開放源代碼的項目,遵循最新的J2EE規范。從JBoss項目開始至今,它已經從一個EJB容器發展成為一個基于的J2EE的一個web 操作系統(operating system for web),它體現了J2EE規范中最新的技術
WebLogic服務器是企業級的應用服務器,支持EJB, 集群以及 ERP(企業資源計劃)的連通性 ,開發公司:BEA。
WebSphere產品系列是IBM公司一套典型的電子商務應用開發工具及運行環境
ZooKeeper
ZooKeeper 提供基礎的目錄/名字服務、配置管理服務。并且在此基礎上還能提供分布式鎖、leader選舉等高級功能。網上有一段有趣生動的介紹:“ZooKeeper,顧名思義就是動物園里大象(hadoop)、蜜蜂(Hive)、小豬(Pig)、和我的貓(MyCat)的管理員”。
客戶端建議采用Apache Curator這個二次封裝的客戶端來進行客戶端代碼的編寫,它封裝和簡化了很多于業務無關的邏輯,使用簡單,質量可靠。
Apache Kafka
Kafka是一個高吞吐量的分布式消息系統,由LinkIn開源,被描述為LinkeIn的“中樞神經系統”。Kafka管理從各個應用程序匯聚到此的信息流,這些數據經過處理后再被分發到何處。
Kafka使用Scala開發,而Scala又是JVM上運行的動態需要,因此對會Java的同學來說學習難度并不大,其客戶端也支持Java語言,比較容易部署在本機上進行學習研究。
Facebook Thrift
Facebook Thrift是最新一代高性能、跨需要的RPC通信框架,支持多種語言。
Facebook Thrift與Ice類似,不過沒有Ice完整和成熟。與Facebook Thrift類似的還有Apache Avro。
Apache Storm、Spark Streaming 、Samza
與Hadoop相比Storm是個實時的高容錯的分布式計算系統。Storm也可以處理批量數據,但其在保證高可靠性的前提下還可以讓處理進行得更加實時,所有的信息都會被處理。Storm同樣還具備容錯和分布計算的特性,這讓Storm可以擴展到不同的機器上進行大批量的數據處理。
Storm的主要開發語言為Java,并且包括了Clojure這種Lisp語言,對于Java工程師來說,學習難度并不大。與Strom類似的還有Spark Streaming、LinkIn的Samza,它們都是最近開源的熱門項目。
Spark Streaming是Spark中新的流式計算框架。Spark并不會像Strom那樣一次處理一個數據流,而是在處理前按時間間隔預先將其分為一段段的批處理作業。
而Samza處理數據流時,會依次處理收到的每條消息。Samza的流單位既不是元組,也不是Dstream而是一條條消息。
Strom、Spark Streming、Samza這三種實時流計算系統都是分布式系統,具有低延遲、可擴展和容錯性等諸多優點。它們的共同特同特色在于:允許你在運行數據流代碼時,將任務分配到一系列具有容錯能力的計算機上并行運行,此外,它們都提供了簡單的API來簡化底層實現的復雜程度。
MyCat
MyCat是一個基于MySQL的分表分庫的中間件軟件,也可以說是一個分布式數據庫,其前身為阿里巴巴開源的Cobar,但由于阿里巴巴后來發展云平臺并提供收費RDS服務,因此最終關閉了這個開源項目。然后國內一幫技術大拿一起發起了MyCat開源項目 ( http : / / www my cat org. cn ),目標是成為Apache旗下的頂級中國開源項目。
Java里的“中間件”有哪些?分別是什么意思?
中間件:非底層操作系統軟件、非業務應用軟件,不是直接給最終用戶使用的,不能直接給客戶帶來價值的軟件,統稱中間件。常見的有如下幾種:服務中間件、集成中間件、數據中間件、消息中間件、安全中間件。
用Java實現的中間件,統稱Java中間件。中間件,可以理解為類庫,介于類庫和產品之間。
說簡單一點,就是你的程序A和程序B互相通信使用的協議,程序A,B可以由不同語言不同平臺構建。但是協議可以保證他們能互相認識互發的東西。
簡單說,中間件有個很大的特點,是脫離于具體設計目標,而具備提供普遍獨立功能需求的模塊。這使得中間件一定是可替換的。如果一個系統設計中,中間件是不可替換的,不是架構、框架設計有問題,那么就是這個中間件,在 別處可能是個中間件,在這個系統內是引擎。
一般本地開發的話建議使用tomcat。
linux系統建議使用jetty或apache hpptd
大型的項目就用JBOSS或webloigc
小項目,或者是個人開發tomcat 大項目或者商業項目一般采用:weblgoic/webshere
其他的還有jboss、glasshfish等
一些示例項目或者小項目常采用jetty
tomcat , jboss, weblogic, websphere 一般項目tomcat就可以了。
評論
查看更多