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