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