IT開(kāi)源化概述
IT開(kāi)源化就是采用開(kāi)源軟件來(lái)搭建企業(yè)的軟件基礎(chǔ)設(shè)施和業(yè)務(wù)應(yīng)用程序。開(kāi)源的含義首先是“開(kāi)放源代碼”,即將源代碼向全世界公開(kāi),沒(méi)有任何隱藏的部分。開(kāi)源的另一個(gè)含義是“免費(fèi)”,任何機(jī)構(gòu)和個(gè)人都可以免費(fèi)獲得和使用這些源代碼。
一、開(kāi)源是大勢(shì)所趨
隨著計(jì)算機(jī)技術(shù)的發(fā)展,尤其是互聯(lián)網(wǎng)技術(shù)和相關(guān)企業(yè)的興起,開(kāi)源軟件在操作系統(tǒng)、編譯工具鏈、數(shù)據(jù)庫(kù)、WEB服務(wù)器、移動(dòng)操作系統(tǒng)等各個(gè)方面已經(jīng)成為主流。而且許多企業(yè)利用開(kāi)源軟件形成了獨(dú)特的商業(yè)模式。比如谷歌的 Android 操作系統(tǒng),從 2007 年開(kāi)源發(fā)布第一個(gè)版本起,到今天已經(jīng)發(fā)展到 4.2版本,占據(jù)了智能手機(jī)操作系統(tǒng)一半以上的市場(chǎng)份額,谷歌也通過(guò) Android 操作系統(tǒng)在移動(dòng)互聯(lián)網(wǎng)這一新興行業(yè)中占據(jù)了領(lǐng)先和主導(dǎo)地位。再比如在服務(wù)器端廣泛使用的關(guān)系型數(shù)據(jù)庫(kù) MySQL,在以開(kāi)源軟件和商業(yè)許可并行的模式下,得到了快速發(fā)展,并在 2008 年作價(jià) 10 億美金由 Sun 收購(gòu)(后者又在 2009 年被 Oracle 公司以 74 億美金的高價(jià)收購(gòu))。相反,以前一直和開(kāi)源軟件做斗爭(zhēng)的微軟公司,卻因?yàn)闊o(wú)法快速推出適應(yīng)市場(chǎng)的 Windows Phone 操作系統(tǒng),在移動(dòng)互聯(lián)網(wǎng)競(jìng)爭(zhēng)中處于下風(fēng)。為順應(yīng)潮流,微軟也開(kāi)始擁抱開(kāi)源,比如向Samba項(xiàng)目貢獻(xiàn)代碼,放棄自己研發(fā)多年的大數(shù)據(jù)項(xiàng)目而選擇 Hadoop為其大數(shù)據(jù)的核心等。
顯然,縱觀 IT 行業(yè)這二十多年的發(fā)展,開(kāi)源軟件從黑客的理想之國(guó),已經(jīng)形成了一股推進(jìn)計(jì)算機(jī)及相關(guān)行業(yè)不停進(jìn)步的巨大力量。很多人可能尚未意識(shí)到,我們使用的電腦中運(yùn)行 有開(kāi)源軟件,手機(jī)中運(yùn)行有開(kāi)源軟件,家里的電視也運(yùn)行有開(kāi)源軟件,甚至小小的數(shù)碼產(chǎn)品(如電子相框)中也運(yùn)行有開(kāi)源軟件,尤其是互聯(lián)網(wǎng)服務(wù)器端軟件,幾乎 全部是開(kāi)源軟件。毫不夸張地說(shuō),開(kāi)源軟件已經(jīng)滲透到了我們?nèi)粘I畹姆椒矫婷妗D敲?,開(kāi)源軟件到底什么,開(kāi)源軟件尤其是國(guó)內(nèi)的開(kāi)源軟件及社區(qū)的現(xiàn)狀如何, 發(fā)展面臨哪些困難和問(wèn)題?
二、開(kāi)源軟件的發(fā)展歷程
開(kāi)源軟件的發(fā)展,和互聯(lián)網(wǎng)的發(fā)展密不可分。真正有規(guī)模的開(kāi)源軟件,應(yīng)該是從上個(gè)世紀(jì) 90 年代開(kāi)始進(jìn)入公眾視線,也就是互聯(lián)網(wǎng)開(kāi)始興起的年代。我們大致可以將開(kāi)源軟件的發(fā)展分為如下三個(gè)階段:
1、萌芽階段(上世紀(jì)九十年代之前)。這個(gè)階段主要以個(gè)人和大學(xué)為主,因?yàn)榘l(fā)布條件受限,大多數(shù)開(kāi)源軟件無(wú)法得到有效傳播,而僅僅流傳于互相熟悉的程序員和老師、學(xué)生之間。這個(gè)階段的典型開(kāi)源軟件為 BSD 操作系統(tǒng)。
2、以非盈利組織為主的階段。這個(gè)階段應(yīng)從上個(gè)世紀(jì)九十年代算起,說(shuō)起這個(gè)階段,我們不得不提到 Richard Stallman 發(fā)起的自由軟件基金會(huì),還有 Apache 基金會(huì)等。前者發(fā)起的 GNU 項(xiàng)目(1983 年發(fā)起,九十年代后隨 Linux普及),成就了 Linux 操作系統(tǒng);后者維護(hù)的 Apache WEB服務(wù)器,在互聯(lián)網(wǎng)上幾乎占據(jù)了統(tǒng)治地位。
3、以大型IT企業(yè)為主的階段。這個(gè)階段出現(xiàn)于 2005 年之后,以谷歌為代表的大型互聯(lián)網(wǎng)企業(yè),開(kāi)始以各種方式發(fā)布開(kāi)源軟件,最為著名的是 Chrome 瀏覽器以及 Android 操作系統(tǒng);當(dāng)然還有 Intel、Nokia 等企業(yè)主導(dǎo)的 Moblin、MeeGo 等基于 Linux 的智能手機(jī)操作系統(tǒng)。
經(jīng)過(guò)二十多年的發(fā)展,到今天,全球已有四百多萬(wàn)源代碼貢獻(xiàn)者無(wú)私地在開(kāi)源技術(shù)社區(qū)開(kāi)發(fā)了超過(guò)一千萬(wàn)個(gè)開(kāi)源軟件項(xiàng)目,形成了完整的開(kāi)源技術(shù)體系。今天,基本上所有的商業(yè)軟件都有成熟的開(kāi)源軟件與之對(duì)應(yīng),開(kāi)源技術(shù)已經(jīng)成為一座巨大的知識(shí)寶庫(kù)。
三、開(kāi)源化的SWOT分析
多年來(lái),大型企業(yè)的IT基礎(chǔ)設(shè)施和應(yīng)用軟件都被商業(yè)軟件占據(jù)。但是近年來(lái)這種狀況發(fā)生了很大的變化,大公司紛紛拋棄商業(yè)軟件,投入了開(kāi)源的懷抱。那么,采用開(kāi)源軟件具有哪些優(yōu)勢(shì)和劣勢(shì)?面臨什么樣的機(jī)遇和風(fēng)險(xiǎn)?
(一)優(yōu)勢(shì)
企業(yè)實(shí)行IT開(kāi)源化具有以下的優(yōu)勢(shì):
開(kāi)源軟件可以降低初期投入。開(kāi)源軟件都是免費(fèi)的,相比于昂貴的商業(yè)軟件,可以大大降低采購(gòu)費(fèi)用。商業(yè)的操作系統(tǒng)如各種Unix,商業(yè)應(yīng)用服務(wù)器如IBM WebSphere、Oracle WebLogic,商業(yè)數(shù)據(jù)庫(kù)如Oracle、DB2等,都是價(jià)格非常昂貴的,而且隨著CPU數(shù)量或用戶數(shù)量的增加,價(jià)格還會(huì)不斷上漲。與之相比,開(kāi)源的操作系統(tǒng)包括各種Linux、開(kāi)源應(yīng)用服務(wù)器JBoss、GlassFish、開(kāi)源數(shù)據(jù)庫(kù)MySQL和PostgreSQL等在提供基本相同的功能和質(zhì)量的同時(shí),完全免費(fèi)或者只需要支付低廉的費(fèi)用。
開(kāi)源軟件可以降低總擁有成本(TCO)。在IBM委托Freeform Dynamics進(jìn)行的一份題為“桌面Linux:主流商務(wù)采納經(jīng)驗(yàn)”的報(bào)告中指出:“采用Linux桌面不僅在操作系統(tǒng)本身的許可證上得到了節(jié)約,而且還在運(yùn)行在操作系統(tǒng)之上的應(yīng)用組合中體現(xiàn)出來(lái),因?yàn)長(zhǎng)inux環(huán)境中通常開(kāi)源軟件的比例很高?!?/div>
2. 自主性
3. 開(kāi)放標(biāo)準(zhǔn)和避免廠商鎖定
報(bào)告對(duì)大量IT工作者進(jìn)行了調(diào)查,多數(shù)答復(fù)都認(rèn)為L(zhǎng)inux能全面降低總擁有成本,這也是可靠性、安全性和靈活性這些傳統(tǒng)品質(zhì)的體現(xiàn)。在用戶體驗(yàn)方面,穩(wěn)定性和可靠性影響很大,而這些也同樣轉(zhuǎn)化成維護(hù)和支持費(fèi)用的降低。各方面的調(diào)查結(jié)果表明,在重要的商務(wù)部署中,Linux都取得了非常實(shí)在的利益。節(jié)省下來(lái)的費(fèi)用可以用來(lái)投入創(chuàng)新和研發(fā),進(jìn)一步促進(jìn)企業(yè)的生產(chǎn)力。
免費(fèi)是開(kāi)源化最明顯的優(yōu)勢(shì),自主性才是開(kāi)源化最大的優(yōu)勢(shì)。通過(guò)采用開(kāi)源軟件構(gòu)建應(yīng)用,企業(yè)對(duì)自己的IT資產(chǎn)保留了最大限度的自主權(quán)。如果我們購(gòu)買(mǎi)商業(yè)軟件,我們購(gòu)買(mǎi)到的只是使用權(quán),而不是所有權(quán)。我們并不真正擁有這套軟件,不能對(duì)它為所欲為。軟件對(duì)我們來(lái)說(shuō)是個(gè)黑箱,我們無(wú)法也無(wú)權(quán)探究它的內(nèi)部機(jī)制,通過(guò)反向工程獲得它的源代碼是違法行為。我們也不能試圖修改它,使得它能夠和我們的其他軟件更好地配合,或者更適合我們的整體企業(yè)架構(gòu)。如果發(fā)現(xiàn)某些方面不能滿足我們的需求,我們無(wú)法對(duì)它進(jìn)行擴(kuò)展,只能寄望于它未來(lái)的升級(jí),而什么時(shí)候升級(jí),升級(jí)后的軟件是否包含我們期待的新特性等等,都是不可預(yù)知的,更不要說(shuō)升級(jí)軟件又需要支付一筆額外的費(fèi)用。如果軟件出了故障,因?yàn)槲覀儾恢儡浖膬?nèi)部運(yùn)行機(jī)制,無(wú)法自行處理,只等仰賴廠商的支持,而廠商的支持往往又不及時(shí)。
如果使用開(kāi)源軟件,則一切盡在我們掌控之下。軟件對(duì)我們來(lái)說(shuō)是透明的,我們可以看到軟件的每一行源代碼,也可以隨意對(duì)它進(jìn)行修改和擴(kuò)展。我們可以自己動(dòng)手,不需要求助于軟件廠商。我們可以馬上動(dòng)手,不需要漫長(zhǎng)的等待。我們不需要為修改和擴(kuò)展支付一分錢(qián)的額外費(fèi)用,也不會(huì)因?yàn)樾薷能浖爸`反法律的風(fēng)險(xiǎn)。如果軟件運(yùn)行出了問(wèn)題,我們可以跟蹤調(diào)試到每一行源代碼中,即時(shí)解決問(wèn)題,而不需要漫長(zhǎng)的等待外力的幫助。
文件格式和協(xié)議的開(kāi)放標(biāo)準(zhǔn)是開(kāi)源軟件的首要原則?;ゲ僮餍灾赣?jì)算機(jī)系統(tǒng)應(yīng)產(chǎn)出共同的格式使一臺(tái)計(jì)算機(jī)能夠與另一臺(tái)交談,這是電子時(shí)代以來(lái)計(jì)算行業(yè)的一大目標(biāo)。開(kāi)放標(biāo)準(zhǔn)的目的是促進(jìn)不同的操作系統(tǒng)上不同應(yīng)用之間的互操作性。但是私有數(shù)據(jù)格式卻會(huì)鼓勵(lì)對(duì)單一供應(yīng)商應(yīng)用的依賴,阻止與競(jìng)爭(zhēng)產(chǎn)品的互操作性。私有數(shù)據(jù)格式將用戶鎖定到單一供應(yīng)商的升級(jí)周期中,無(wú)法保證一致性和持久性。
開(kāi)放標(biāo)準(zhǔn)允許用戶獨(dú)立于平臺(tái)、供應(yīng)商和軟件。開(kāi)放標(biāo)準(zhǔn)使網(wǎng)絡(luò)協(xié)作成為可能,使在平臺(tái)之間移動(dòng)自定義的軟件解決方案變得更加容易。開(kāi)放標(biāo)準(zhǔn)的用戶,不論是個(gè)人還是政府,都擁有在不同的軟件、平臺(tái)和供應(yīng)商之中選擇的靈活性和自由。而私有的、保密的標(biāo)準(zhǔn)使得用戶只能使用一個(gè)供應(yīng)商的軟件,并且因?yàn)樗麄兊臄?shù)據(jù)都存儲(chǔ)為私有格式,轉(zhuǎn)換代價(jià)高昂而在此后繼續(xù)受供應(yīng)商的擺布。
荷蘭國(guó)際信息經(jīng)濟(jì)研究所(International Institute of Infomatics)《自由/開(kāi)源軟件:調(diào)查研究》這篇論文的作者們也反對(duì)在政府中使用私有軟件。他們認(rèn)為:“……因此反對(duì)在公共部門(mén)使用私有軟件的一個(gè)主要理由是對(duì)私有軟件供應(yīng)商的依賴。私有標(biāo)準(zhǔn)一旦建立人們就必須服從。即使在開(kāi)放的競(jìng)標(biāo)制度下,與私有標(biāo)準(zhǔn)兼容的需求也使得制度偏向于特定的軟件供應(yīng)商,因此造成長(zhǎng)期的依賴?!?/div>
在不同的地區(qū),使用自由/開(kāi)源軟件作為擺脫供應(yīng)商依賴的手段都獲得了提倡。一份提交英國(guó)政府的報(bào)告認(rèn)為“數(shù)據(jù)標(biāo)準(zhǔn)的開(kāi)源實(shí)現(xiàn)常常能加速標(biāo)準(zhǔn)的推行,推薦政府有選擇地支持這樣的開(kāi)源實(shí)現(xiàn)?!?/div>
4. 安全
雖然并沒(méi)有完全安全的系統(tǒng)或平臺(tái),像開(kāi)發(fā)方法、程序架構(gòu)和目標(biāo)市場(chǎng)這樣的因素都會(huì)極大地影響系統(tǒng)的安全性并決定攻破它是否困難。在這方面,自由/開(kāi)源軟件系統(tǒng)有一些指標(biāo)優(yōu)于私有軟件系統(tǒng):
1. 由于微軟英特網(wǎng)信息服務(wù)(Internet Information Server, IIS)糟糕的安全記錄,Gartner 集團(tuán)推薦公司使用 Apache 或其他 web 服務(wù)器。Gartner 集團(tuán)發(fā)現(xiàn)到2001年7月美國(guó)的企業(yè)僅為修復(fù) IIS 的“紅色代碼”漏洞就花費(fèi)了12億美元。
2. J. S. Wurzler 保險(xiǎn)公司的“黑客險(xiǎn)”對(duì)使用 Windows 的用戶收取比 GNU/Linux 或 Unix 系統(tǒng)用戶多5-15%的保險(xiǎn)費(fèi)用。J. S. Wurzler 公司的保險(xiǎn)高級(jí)副總裁 Walter Kopf 說(shuō):“我們發(fā)現(xiàn)使用 NT 系統(tǒng)造成損失的可能性更大?!?/div>
5. 可靠性和穩(wěn)定性
6. 增強(qiáng)自身軟件能力
1. JBoss
2. Tomcat
1. MySQL
2. PostgreSQL
1. Apache
2. Nginx
1. memcached
2. Redis
1. Pentaho
2. JasperReports
對(duì)安全的考慮已經(jīng)推動(dòng)許多公共機(jī)構(gòu)轉(zhuǎn)移到或考慮轉(zhuǎn)移到自由/開(kāi)源軟件方案。法國(guó)海關(guān)和間接稅管理部門(mén)主要出于安全的考慮,遷移到了 Red Hat 6.2 平臺(tái)。一般認(rèn)為,自由/開(kāi)源軟件較好的安全記錄有如下原因:
- 源代碼可獲?。鹤杂?開(kāi)源軟件的源代碼開(kāi)放性讓開(kāi)發(fā)者和用戶更容易在漏洞被攻擊者利用前就能發(fā)現(xiàn)和修補(bǔ)。在 Bugtraq 上列出的許多漏洞都是在定期的評(píng)審中發(fā)現(xiàn)的,而沒(méi)有被利用的記錄。自由/開(kāi)源軟件系統(tǒng)一般都采用預(yù)應(yīng)式而非反應(yīng)式的評(píng)審制度。
- 專注于安全而非用戶友好:自由/開(kāi)源軟件支撐著互聯(lián)網(wǎng)的很大一部分,因此更專注于健壯性和功能,而不是考慮易于使用。在為任何主要的自由/開(kāi)源軟件應(yīng)用增加功能之前,人們都要考慮其安全性,只有認(rèn)為該功能不影響系統(tǒng)安全的情況下才會(huì)將其加入。
- 根用戶制度:自由/開(kāi)源軟件多數(shù)基于多用戶和支持網(wǎng)絡(luò)的 Unix 模式。因此,它們具有完備的權(quán)限結(jié)構(gòu)和很強(qiáng)的安全性。當(dāng)許多用戶共享一個(gè)強(qiáng)力的服務(wù)器時(shí)這種模式至關(guān)重要,否則,用戶將可以使服務(wù)器崩潰,偷竊其他用戶的私人資料或侵占其他用戶的資源。這種制度使得應(yīng)用程序中的漏洞即使被利用也只會(huì)造成有限的損失。
木馬、病毒和惡意軟件在Windows中很常見(jiàn),是每位辦公室經(jīng)理的心頭之患,但對(duì)于大多數(shù)Linux用戶來(lái)說(shuō)它們幾乎沒(méi)有影響。安全性是所有Linux和Unix系統(tǒng)的重大優(yōu)勢(shì),也被認(rèn) 為是開(kāi)源軟件的一大長(zhǎng)處,所有的Linux發(fā)行版都包含了更新機(jī)制,并提供即時(shí)的安全建議。
Linux系統(tǒng)適合網(wǎng)絡(luò)應(yīng)用,擁有總體安全性的優(yōu)越記錄。許多企業(yè)網(wǎng)絡(luò)的標(biāo)準(zhǔn)技巧是使用Linux計(jì)算機(jī)作為防火墻,在入侵者襲擊網(wǎng)絡(luò)之前攔截他們。雖然這并不意味著Linux完全免疫,但它的系統(tǒng)架構(gòu)讓它在面對(duì)攻擊時(shí)強(qiáng)大得多,而Windows中病毒防護(hù)的成本是無(wú)法估量的。
安全性還有另一面。商業(yè)軟件由于是閉源的,而且大多來(lái)自國(guó)外,我們無(wú)法保證里面不會(huì)隱藏惡意代碼。最近發(fā)生的斯諾登事件,就揭示了這一類的風(fēng)險(xiǎn)。采用開(kāi)源軟件可以完全規(guī)避這一類的風(fēng)險(xiǎn),因?yàn)槊恳恍写a都被晾曬在陽(yáng)光之下。
自由/開(kāi)源軟件因?yàn)樗鼈兊目煽啃院头€(wěn)定性而聞名。業(yè)界已經(jīng)有許多自由/開(kāi)源軟件服務(wù)器不需維護(hù)連續(xù)運(yùn)行數(shù)年的故事。但是,定量研究相對(duì)而言更加困難。以下介紹兩個(gè)近年進(jìn)行的研究:
1999年 ZDnet 進(jìn)行的為期10個(gè)月的穩(wěn)定性測(cè)試比較了 Red Hat Linux,Caldera Systems OpenLinux 和微軟的 Windows NT 4.0 SP3 服務(wù)器版。三個(gè)系統(tǒng)都在同樣的硬件上運(yùn)行了打印、web 服務(wù)和文件服務(wù)功能。結(jié)果是 Windows NT 每6星期就崩潰一次,而自由/開(kāi)源軟件在10個(gè)月中沒(méi)有一次崩潰。
一項(xiàng)使用隨機(jī)方法的壓力測(cè)試在1995年測(cè)試了7種商業(yè)系統(tǒng)和 GNU/Linux 系統(tǒng)。測(cè)試中模擬來(lái)自錯(cuò)誤數(shù)據(jù)或惡意用戶輸入的隨機(jī)字符被發(fā)送到這些系統(tǒng)。結(jié)果是商業(yè)系統(tǒng)的平均失效率達(dá)到23%,而 Linux 失效率為9%。GNU 軟件(FSF 下屬的 GNU 工程生產(chǎn)的軟件)失效的時(shí)間只占全部時(shí)間的6%。數(shù)年后的跟蹤研究發(fā)現(xiàn)測(cè)試中暴露的漏洞在自由/開(kāi)源軟件系統(tǒng)中得到了修補(bǔ),但在私有軟件中都完全沒(méi)有改變。
開(kāi)源軟件被廣泛采納是因?yàn)樗|(zhì)量可靠、彈性大、適應(yīng)性也更強(qiáng)。例如電信和金融部門(mén)大規(guī)模采用Linux和其它開(kāi)源解決方案是由于它們的性價(jià)比遠(yuǎn)遠(yuǎn)超過(guò)了Unix和Windows。所有的主要硬件、移動(dòng)電話和芯片制造商們都正在GPL許可及其延展協(xié)議下貢獻(xiàn)自己的想法和軟件,并且還積極參與自由軟件項(xiàng)目。
開(kāi)源和自由軟件的分布式開(kāi)發(fā)性質(zhì)幫助軟件在開(kāi)發(fā)和維護(hù)的過(guò)程中保持了良好的習(xí)慣,還有一些軟件開(kāi)發(fā)的基本規(guī)則:透明、簡(jiǎn)潔、模塊化和便攜性。良好的開(kāi)發(fā)習(xí)慣產(chǎn)生好的軟件,而良好的軟件能隨著時(shí)間而獲得更低的成本。遵循規(guī)范的開(kāi)源項(xiàng)目提高了效率,減少了商業(yè)開(kāi)發(fā)模式下幾乎不可避免的代碼重復(fù)問(wèn)題。
閉源軟件的質(zhì)量通常與軟件公司的開(kāi)發(fā)人員水平息息相關(guān),開(kāi)發(fā)人員的水平通常參差不齊,因此閉源軟件的質(zhì)量通常也是參差不齊,而開(kāi)源軟件通常是由社區(qū)中的技術(shù)高手在維護(hù),有時(shí)用戶自身也可以參與維護(hù),并且開(kāi)源軟件的用戶較多,軟件存在的bug一般都會(huì)被及時(shí)發(fā)現(xiàn)和修補(bǔ),產(chǎn)品質(zhì)量更加可靠。
人們發(fā)現(xiàn)經(jīng)濟(jì)體內(nèi)自由/開(kāi)源軟件開(kāi)發(fā)者的增長(zhǎng)與創(chuàng)造能力(軟件)成正相關(guān)關(guān)系。國(guó)際信息經(jīng)濟(jì)研究所的一份報(bào)告列出了這個(gè)現(xiàn)象的三個(gè)原因:
- 易于參與:自由/開(kāi)源軟件鼓勵(lì)自由的修改和發(fā)布,容易獲得、使用和學(xué)習(xí)。私有軟件則有許多限制,不僅源代碼的獲取受限,還有授權(quán)、專利和版權(quán)的限制。自由/開(kāi)源軟件很象基礎(chǔ)研究,允許開(kāi)發(fā)者利用已有的知識(shí)和組件生產(chǎn)軟件。
- 自由/開(kāi)源軟件可作為理想的培訓(xùn)系統(tǒng):自由/開(kāi)源軟件開(kāi)發(fā)和協(xié)作的特性讓學(xué)生能夠考察軟件概念并進(jìn)行實(shí)驗(yàn),而不會(huì)對(duì)社會(huì)造成影響。類似地,學(xué)生也可以加入全球性的自由/開(kāi)源軟件合作開(kāi)發(fā)網(wǎng)絡(luò),利用其中的大量技術(shù)信息和交互式的討論工具。
- 作為標(biāo)準(zhǔn)來(lái)源的自由/開(kāi)源軟件:自由/開(kāi)源軟件常常由于其在某一特定行業(yè)部門(mén)中的主導(dǎo)地位而成為事實(shí)上的標(biāo)準(zhǔn)。地區(qū)通過(guò)參與制定某一特定自由/開(kāi)源軟件應(yīng)用的標(biāo)準(zhǔn),可以確保產(chǎn)生的標(biāo)準(zhǔn)符合地區(qū)的需要和文化考量。
自由/開(kāi)源軟件的開(kāi)發(fā)方式不僅極大地促進(jìn)了創(chuàng)新,也有利于創(chuàng)新成果的傳播。一份微軟的內(nèi)部備忘錄寫(xiě)到,“基于 Linux 的研究/教學(xué)項(xiàng)目由于 Linux 源代碼隨處可以獲取而很容易傳播。特別是新的研究想法都先被在 Linux 上實(shí)現(xiàn)和發(fā)布,然后才在其他平臺(tái)上被整合或發(fā)布?!?/div>
7. 人才隊(duì)伍建設(shè)
1. 技術(shù)支持不足
2. 易用性不夠
3. 沒(méi)有形成上下游的生態(tài)系統(tǒng)
1. 開(kāi)源驅(qū)動(dòng)業(yè)務(wù)創(chuàng)新
2. 開(kāi)源加快業(yè)務(wù)響應(yīng)速度
3. 打造企業(yè)自己的軟件生態(tài)系統(tǒng)
1. 開(kāi)源要求更高水平的IT人才隊(duì)伍
2. 法律風(fēng)險(xiǎn)
由于開(kāi)源軟件在世界上被廣泛采用,因此更容易招聘到相關(guān)人才。因?yàn)檐浖情_(kāi)源的,下載和安裝沒(méi)有受到任何法律限制,因此容易吸引到大量的開(kāi)發(fā)者。商業(yè)軟件除了少數(shù)廣泛應(yīng)用的(Windows、Oracle等)之外,由于版權(quán)限制等問(wèn)題,很少有人有機(jī)會(huì)使用到,因此,精通商業(yè)軟件的人往往很少。所以,如果企業(yè)采用開(kāi)源軟件,容易招聘到大量的人才;而采用商業(yè)軟件,就很難招聘得到相關(guān)人才。
(二)劣勢(shì)
從企業(yè)用戶角度,使用開(kāi)源軟件的缺點(diǎn)或擔(dān)憂主要在于:服務(wù)支持、保證以及知識(shí)產(chǎn)權(quán)問(wèn)題。
首要的問(wèn)題是支持和服務(wù):當(dāng)企業(yè)從Oracle、SAP等專有軟件廠商那里購(gòu)買(mǎi)軟件時(shí),它們知道就該軟件今后應(yīng)當(dāng)向誰(shuí)尋求幫助;而一旦采用開(kāi)源軟件,它們往往不知道自己該向誰(shuí)求助 。開(kāi)源軟件的支持和維護(hù)往往依賴于其背后大規(guī)模的開(kāi)源代碼社區(qū) ,缺乏正式的服務(wù)支持和保證是可以理解的擔(dān)憂 。開(kāi)源軟件的“低成本”優(yōu)勢(shì)因而受到了質(zhì)疑:某些低廉的前期費(fèi)用往往可能導(dǎo)致較高的后期維護(hù)等費(fèi)用 ;整體IT架構(gòu)向開(kāi)源軟件移植的成本也不容忽視 。
首要的問(wèn)題是支持和服務(wù):當(dāng)企業(yè)從Oracle、SAP等專有軟件廠商那里購(gòu)買(mǎi)軟件時(shí),它們知道就該軟件今后應(yīng)當(dāng)向誰(shuí)尋求幫助;而一旦采用開(kāi)源軟件,它們往往不知道自己該向誰(shuí)求助 。開(kāi)源軟件的支持和維護(hù)往往依賴于其背后大規(guī)模的開(kāi)源代碼社區(qū) ,缺乏正式的服務(wù)支持和保證是可以理解的擔(dān)憂 。開(kāi)源軟件的“低成本”優(yōu)勢(shì)因而受到了質(zhì)疑:某些低廉的前期費(fèi)用往往可能導(dǎo)致較高的后期維護(hù)等費(fèi)用 ;整體IT架構(gòu)向開(kāi)源軟件移植的成本也不容忽視 。
對(duì)于這個(gè)問(wèn)題,開(kāi)源廠商和開(kāi)元社區(qū)已經(jīng)有一些應(yīng)對(duì)之道。首先,象Redhat、Ubuntu等開(kāi)源軟件廠商都對(duì)軟件提供了技術(shù)支持,而且其服務(wù)價(jià)格與商業(yè)軟件相比十分低廉。其次,廣為采用的開(kāi)源軟件都有非?;钴S的社區(qū),有大量的開(kāi)發(fā)人員愿意在社區(qū)里貢獻(xiàn)自己的技巧和經(jīng)驗(yàn),并為其他人解答問(wèn)題。因此,遇到問(wèn)題之后通過(guò)互聯(lián)網(wǎng)在社區(qū)里查找解決方案或者提問(wèn),往往可以非??焖倬徒鉀Q了技術(shù)問(wèn)題。
易用性問(wèn)題是開(kāi)源軟件的常見(jiàn)問(wèn)題。傳統(tǒng)上,商業(yè)軟件非常關(guān)注易用性問(wèn)題,提供了更好的用戶體驗(yàn)。而開(kāi)源軟件更關(guān)注技術(shù)核心的開(kāi)發(fā),對(duì)易用性嚴(yán)重關(guān)注不足。很多開(kāi)源軟件只提供了相對(duì)簡(jiǎn)陋的用戶界面,甚至根本不會(huì)開(kāi)發(fā)用戶界面。這個(gè)問(wèn)題暫時(shí)沒(méi)有通用的解決方案。如果易用性是個(gè)問(wèn)題,一般只能由企業(yè)自行組織技術(shù)力量去開(kāi)發(fā)。
商業(yè)軟件巨頭如IBM、Oracle、Microsoft等等,他們開(kāi)發(fā)的軟件都不是孤立的,其產(chǎn)品往往形成一個(gè)完善的軟件棧,一個(gè)完整的軟件生態(tài)系統(tǒng)。如果企業(yè)采用了同一家供應(yīng)商的多個(gè)產(chǎn)品,這些軟件產(chǎn)品之間的互操作性非常好,不會(huì)有方鑿圓枘的問(wèn)題。而開(kāi)源軟件廠商,除了少數(shù)比較成功的之外(Redhat、Spring等),基本上都沒(méi)有力量去開(kāi)發(fā)一個(gè)完善的軟件棧,其產(chǎn)品都是獨(dú)立的。要組合多個(gè)不同來(lái)源的開(kāi)源軟件組合成一個(gè)軟件棧,往往面臨很多需要磨合的問(wèn)題。好的一面是,開(kāi)源軟件認(rèn)識(shí)到了這個(gè)問(wèn)題,現(xiàn)在很多開(kāi)源軟件都是面向標(biāo)準(zhǔn)、面向規(guī)范設(shè)計(jì)和編寫(xiě),例如ActiveMQ遵循JMS規(guī)范,Hibernate遵循JPA規(guī)范,Spring和Guice遵循JSR 330規(guī)范,因此,相互之間的配合不再存在問(wèn)題。
(三)機(jī)遇
開(kāi)源化給企業(yè)帶來(lái)不可想象的發(fā)展機(jī)遇。
企業(yè)IT開(kāi)源化可以驅(qū)動(dòng)業(yè)務(wù)創(chuàng)新。通過(guò)采用開(kāi)源軟件,企業(yè)牢牢地把握了IT建設(shè)的主動(dòng)權(quán),不再受商業(yè)軟件廠商的限制。如果采用商業(yè)軟件,我們不能對(duì)它進(jìn)行任何修改,以適應(yīng)我們的商業(yè)環(huán)境,與其他軟件配合無(wú)間。受制于商業(yè)軟件,我們無(wú)法按照自己的意志行動(dòng)。而采用開(kāi)源軟件,一切都有了可能。任何新想法都可以選用開(kāi)源軟件快速實(shí)現(xiàn),如果現(xiàn)有的開(kāi)源軟件不能完全滿足需求,我們可以隨意對(duì)其進(jìn)行改造。根據(jù)企業(yè)IT戰(zhàn)略進(jìn)行創(chuàng)新是輕而易舉的事情。
同樣,因?yàn)橥ㄟ^(guò)采用開(kāi)源軟件,我們有了IT自主權(quán),就可以快速響應(yīng)業(yè)務(wù)需求的變化,即時(shí)對(duì)軟件作出調(diào)整。如果采用商業(yè)軟件,我們無(wú)法獲得這樣的快速響應(yīng)能力。商業(yè)軟件廠商不會(huì)為個(gè)別用戶對(duì)軟件作出修改,即使承諾修改也是遙遙無(wú)期的。而商機(jī)瞬息萬(wàn)變,時(shí)間就是金錢(qián),不能快速響應(yīng)變化的企業(yè)將面臨被淘汰的命運(yùn)。采用開(kāi)源軟件,我們不僅能夠隨意行動(dòng),還能隨時(shí)行動(dòng)。
采購(gòu)商業(yè)軟件的另一個(gè)風(fēng)險(xiǎn)是:除非企業(yè)中所有的軟件都是從同一個(gè)廠商手中購(gòu)買(mǎi),否則所有的軟件都是“煙囪系統(tǒng)”——每個(gè)軟件系統(tǒng)都是從底層到頂層的全棧實(shí)現(xiàn),而軟件系統(tǒng)之間沒(méi)有任何溝通和協(xié)作。這造成了兩個(gè)嚴(yán)重的問(wèn)題:一個(gè)問(wèn)題是所有的軟件都要分別實(shí)現(xiàn)本該共用的底層機(jī)制,現(xiàn)在用戶要分別操作實(shí)現(xiàn)(想象這樣一個(gè)問(wèn)題:一個(gè)員工調(diào)動(dòng)或離職,必須分別在HRM、CRM、OA等系統(tǒng)中分別操作一遍,既導(dǎo)致大量重復(fù)勞動(dòng),如果某些系統(tǒng)忘記聯(lián)動(dòng),還會(huì)引入不一致性和安全性問(wèn)題)。另一個(gè)問(wèn)題是:軟件系統(tǒng)之間無(wú)法聯(lián)動(dòng),通過(guò)相互協(xié)作以實(shí)現(xiàn)高層業(yè)務(wù)目標(biāo)。通過(guò)采用開(kāi)源軟件構(gòu)建企業(yè)自己的IT系統(tǒng),企業(yè)可以打造自己的IT基礎(chǔ)組件,所有應(yīng)用系統(tǒng)都在這些基礎(chǔ)組件之上組建,共享相同的數(shù)據(jù)和事件源,應(yīng)用系統(tǒng)之間也可以相互協(xié)作,以共同實(shí)現(xiàn)企業(yè)的業(yè)務(wù)目標(biāo)。采用開(kāi)源軟件組建企業(yè)IT系統(tǒng),所有軟件系統(tǒng)形成一個(gè)整體,一個(gè)有機(jī)的生態(tài)系統(tǒng),為企業(yè)的戰(zhàn)略目標(biāo)服務(wù)。
(四)風(fēng)險(xiǎn)
不可諱言,企業(yè)采用IT開(kāi)源化也有一定的風(fēng)險(xiǎn)。略舉如下:
如果采用商業(yè)軟件,企業(yè)的IT開(kāi)發(fā)和維護(hù)大部分可以仰賴軟件供應(yīng)商,那么就不需要保持很強(qiáng)的軟件開(kāi)發(fā)和運(yùn)行維護(hù)人才團(tuán)隊(duì),因而可以削減人員規(guī)模,節(jié)約成本。而采用開(kāi)源軟件,軟件開(kāi)發(fā)和維護(hù)主要靠自己,需要投入很多高水平的技術(shù)人員。技術(shù)問(wèn)題需要自力更生,出現(xiàn)問(wèn)題需要自行解決。如果沒(méi)有這樣一支人才隊(duì)伍,就會(huì)面臨IT系統(tǒng)崩潰失修的危險(xiǎn)。
采用開(kāi)源軟件要特別注意版權(quán)問(wèn)題。例如,有些開(kāi)源軟件只對(duì)個(gè)人或非營(yíng)利組織免費(fèi),而對(duì)商業(yè)機(jī)構(gòu)收費(fèi)。另外,GPL協(xié)議要求一旦采用其軟件,則自己的軟件也必須開(kāi)源免費(fèi)。如果不注意這些協(xié)議,就可能違反法律,或被迫公開(kāi)自己原本不想公開(kāi)的源代碼。
開(kāi)源改變IT生態(tài)環(huán)境
企業(yè)如何通過(guò)開(kāi)源化降低采購(gòu)成本,增強(qiáng)自主能力,提高創(chuàng)新能力,快速響應(yīng)變化?——使用開(kāi)源軟件替代商業(yè)軟件。
一、基礎(chǔ)設(shè)施開(kāi)源化
軟件基礎(chǔ)設(shè)施主要是指三大件:操作系統(tǒng)、中間件(應(yīng)用服務(wù)器)和數(shù)據(jù)庫(kù)。與商業(yè)軟件相比,這三大件方面都已經(jīng)有非常成熟的開(kāi)源產(chǎn)品,在互聯(lián)網(wǎng)和企業(yè)市場(chǎng)都已經(jīng)久經(jīng)考驗(yàn),完全可以替代現(xiàn)有的商業(yè)產(chǎn)品。
(一)操作系統(tǒng):Redhat Enterprise Linux
RHEL是目前Linux服務(wù)器產(chǎn)品的標(biāo)桿,在國(guó)內(nèi)和國(guó)際上都占據(jù)著主要的Linux服務(wù)器市場(chǎng)份額。RHEL產(chǎn)品功能全面,產(chǎn)品認(rèn)證齊全,用戶的接受度比較高。在服務(wù)器操作系統(tǒng)市場(chǎng)中,Linux占有約35%的市場(chǎng)份額,其中紅帽Linux在該35%開(kāi)源市場(chǎng)中占有率超過(guò)85%。
Red Hat于2010年11月11日發(fā)布Enterprise Linux 6正式版,包含更強(qiáng)大的可伸縮性和虛擬化特性,并全面改進(jìn)系統(tǒng)資源分配和節(jié)能。從理論上講,RHEL可以在一個(gè)單系統(tǒng)中使用64000顆核心。除了更好的多核心支持,RHEL 6還繼承了RHEL 5.5版本中對(duì)新型芯片架構(gòu)的支持,其中包括英特爾的Xeon 5600 和7500,以及IBM的Power7。新版帶來(lái)了一個(gè)完全重寫(xiě)的進(jìn)程調(diào)度器和一個(gè)全新的多處理器鎖定機(jī)制,并利用NVIDIA圖形處理器的優(yōu)勢(shì)對(duì)GNOME和KDE做了重大升級(jí),新的系統(tǒng)安全 服務(wù)守護(hù)程序(SSSD)功能允許集中身份管理,而SELinux的沙盒功能允許管理員更好地處理不受信任的內(nèi)容。RHEL 6內(nèi)置的新組件有GCC 4.4(包括向下兼容RHEL 4和5組件)、OpenJDK 6、Tomcat 6、Ruby 1.8.7和Rails 3、PHP 5.3.2與Perl 5.10.1,數(shù)據(jù)庫(kù)前端有PostgreSQL 8.4.4, MySQL 5.1.47和SQLite 3.6.20。
RHEL的主要的功能包括:
1. 虛擬化技術(shù)
- 在各種平臺(tái)上支持虛擬化技術(shù);
- 在Red Hat Enterprise Linux Advanced Platform支持存儲(chǔ)與擴(kuò)展的服務(wù)器虛擬化技術(shù);
- Red Hat Network提供各種虛擬化系統(tǒng)的支持;
- virt-manager, libvirt/virsh管理工具;
2. 內(nèi)核與性能
- 基于Linux 2.6.18內(nèi)核;
- 支持多核處理器;
- 廣泛的新硬件支持;
- 更新的基于Kexec/Kdump的Dump支持;
- 支持Intel Network Accelerator Technology (IOAT;)
- 對(duì)于大型SMP系統(tǒng)技持的增強(qiáng);
- 增強(qiáng)的管道緩存;
- 內(nèi)核緩存接合能力用于改進(jìn)IO緩存操作;
3. 安全
- SELinux增強(qiáng);
- 圖形化SELinux管理界面;
- 集成的目錄和安全機(jī)制;
- 新的審計(jì)機(jī)制用于提供新的搜索、報(bào)表和實(shí)時(shí)監(jiān)控的能力;
4. 網(wǎng)絡(luò)與互操作性
- 支持Autofs, FS-Cache和iSCSI;
- 增強(qiáng)的IPv6支持;
- 改進(jìn)的Microsoft ® 文件/打印和Active Directory集成;
5. 桌面
- 更新的管理工具、應(yīng)用程序和對(duì)筆記本的支持;
- 改進(jìn)的ACPI支持,包括Suspend to Disk;
- 智能卡登錄,包括PKI/Kerberos認(rèn)證;
- 集成的多媒體支持;
- 增強(qiáng)的即插即用支持;
- Network Manager提供自動(dòng)的有線和無(wú)線網(wǎng)絡(luò)配置;
- 基于AIGLX/Compiz的圖形化界面(支持淡化、透明等效果;)
6. 開(kāi)發(fā)環(huán)境
- 增強(qiáng)的開(kāi)發(fā)工具,包括System Tap和Frysk;
- GCC4.1和glibc 2.5工具鏈;
7. 存儲(chǔ)
- 支持根設(shè)置多路IO(MPIO),提高可用性;
- 服務(wù)器產(chǎn)品中包含單系統(tǒng)/客戶的Red Hat Global File System支持;
- 塊設(shè)備數(shù)據(jù)加密支持;
8. 管理
- 安裝過(guò)程更新簡(jiǎn)化系統(tǒng)配;
- 基于Yum/Pup的Red Hat Network更新;
- Conga集群和存儲(chǔ)管理;
(二)Java應(yīng)用服務(wù)器: JBoss和Tomcat
開(kāi)源Java應(yīng)用服務(wù)器中,JBoss是第一個(gè)開(kāi)源的應(yīng)用服務(wù)器,完全符合JavaEE規(guī)范。在應(yīng)用服務(wù)器市場(chǎng)中,JBoss占有超過(guò)30%的市場(chǎng)份額。
在J2EE應(yīng)用服務(wù)器領(lǐng)域,JBoss是發(fā)展最為迅速的應(yīng)用服務(wù)器。由于JBoss遵循商業(yè)友好的LGPL授權(quán)分發(fā),并且由開(kāi)源社區(qū)開(kāi)發(fā),這使得JBoss廣為流行。
JBoss的優(yōu)點(diǎn)包括:
- (1) JBoss是免費(fèi)的,開(kāi)放源代碼JavaEE的實(shí)現(xiàn),通過(guò)LGPL許可證進(jìn)行發(fā)布。但同時(shí)也有閉源的,開(kāi)源和閉源流入流出的不是同一途徑;
- (2) JBoss需要的內(nèi)存和硬盤(pán)空間比較??;
- (3) 安裝便捷:解壓后,只需配置一些環(huán)境變量即可;
- (4) JBoss支持"熱部署",部署B(yǎng)EAN時(shí),只拷貝BEAN的JAR文件到部署路徑下即可自動(dòng)加載它;如果有改動(dòng),也會(huì)自動(dòng)更新;
- (5) JBoss與Web服務(wù)器在同一個(gè)Java虛擬機(jī)中運(yùn)行,Servlet調(diào)用EJB不經(jīng)過(guò)網(wǎng)絡(luò),從而大大提高運(yùn)行效率,提升安全性能;
- (6) 用戶可以直接實(shí)施J2EE-EAR,而不是以前分別實(shí)施EJB-JAR和Web-WAR,非常方便;
- (7) JBoss支持集群;
另外,JBoss應(yīng)用服務(wù)器還具有許多優(yōu)秀的特質(zhì)。
- 其一,它將具有革命性的JMX微內(nèi)核服務(wù)作為其總線結(jié)構(gòu);
- 其二,它本身就是面向服務(wù)的架構(gòu)(Service-Oriented Architecture,SOA);
- 其三,它還具有統(tǒng)一的類裝載器,從而能夠?qū)崿F(xiàn)應(yīng)用的熱部署和熱卸載能力;
因此,它是高度模塊化的和松耦合的。JBoss用戶的積極反饋告訴我們,JBoss應(yīng)用服務(wù)器是健壯的、高質(zhì)量的,而且還具有良好的性能。
為滿足企業(yè)級(jí)市場(chǎng)日益增長(zhǎng)的需求,JBoss公司從2003年開(kāi)始就推出了24*7、專業(yè)級(jí)產(chǎn)品支持服務(wù)。同時(shí),為拓展JBoss的企業(yè)級(jí)市場(chǎng),JBoss公司還簽訂了許多渠道合作伙伴。比如,JBoss公司同HP、Novell、Computer Associates、Unisys等都是合作伙伴。
在2004年 6月,JBoss公司宣布,JBoss應(yīng)用服務(wù)器通過(guò)了Sun公司的J2EE認(rèn)證。這是JBoss應(yīng)用服務(wù)器發(fā)展史上至今為止最重要的里程碑。與此同時(shí), JBoss一直在緊跟最新的J2EE規(guī)范,而且在某些技術(shù)領(lǐng)域引領(lǐng)J2EE規(guī)范的開(kāi)發(fā)。JBoss公司一直在積極參與EJB 3.0規(guī)范的制定,并且在為EJB規(guī)范的發(fā)展貢獻(xiàn)自己的力量。其中,Gavin King(Hibernate[1]的創(chuàng)立者)和Bill Burke(JBoss公司的首席架構(gòu)師)已經(jīng)為EJB 3.0規(guī)范貢獻(xiàn)了很多內(nèi)容。因此,無(wú)論在商業(yè)領(lǐng)域,還是在開(kāi)源社區(qū),JBoss成為了第一個(gè)通過(guò)J2EE 1.4認(rèn)證的主流應(yīng)用服務(wù)器。JBoss應(yīng)用服務(wù)器已經(jīng)真正發(fā)展成具有企業(yè)強(qiáng)度(即,支持關(guān)鍵級(jí)任務(wù)的應(yīng)用)的應(yīng)用服務(wù)器。
如果是基于POJO編程,只需要Web容器,不需要EJB,那么可以采用Apache Tomcat作為Java Web容器。
Tomcat是Apache 軟件基金會(huì)(Apache Software Foundation)的Jakarta 項(xiàng)目中的一個(gè)核心項(xiàng)目,由Apache、Sun 和其他一些公司及個(gè)人共同開(kāi)發(fā)而成。由于有了Sun 的參與和支持,最新的Servlet 和JSP 規(guī)范總是能在Tomcat 中得到體現(xiàn),Tomcat7 支持最新的Servlet 3.0 和JSP 2.1 規(guī)范。因?yàn)門(mén)omcat 技術(shù)先進(jìn)、性能穩(wěn)定,而且免費(fèi),因而深受Java 愛(ài)好者的喜愛(ài)并得到了部分軟件開(kāi)發(fā)商的認(rèn)可,成為目前比較流行的Web 應(yīng)用服務(wù)器。目前最新版本是8.0。
(三)數(shù)據(jù)庫(kù):MySQL和PostgreSQL
在開(kāi)源數(shù)據(jù)庫(kù)中,得到最廣泛采用的數(shù)據(jù)庫(kù)有MySQL和PostgreSQL。
MySQL是一個(gè)開(kāi)放源碼的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),開(kāi)發(fā)者為瑞典MySQL AB公司。MySQL被廣泛地應(yīng)用在Internet上的網(wǎng)站中。由于其體積小、速度快、總體擁有成本低,尤其是開(kāi)放源碼這一特點(diǎn),許多網(wǎng)站和企業(yè)應(yīng)用為了降低網(wǎng)站總體擁有成本而選擇了MySQL作為網(wǎng)站數(shù)據(jù)庫(kù)。
2008年1月16號(hào)MySQL AB被Sun公司收購(gòu)。而2009年,SUN又被Oracle收購(gòu)。就這樣如同一個(gè)輪回,MySQL成為了Oracle公司的另一個(gè)數(shù)據(jù)庫(kù)項(xiàng)目。
MySQL的系統(tǒng)特性有:
- 1.使用C和C++編寫(xiě),并使用了多種編譯器進(jìn)行測(cè)試,保證源代碼的可移植性;
- 2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統(tǒng);
- 3.為多種編程語(yǔ)言提供了API,這些編程語(yǔ)言包括C、C++、Python、Java、Perl、PHP、 Eiffel、Ruby和Tcl等;
- 4.支持多線程,充分利用CPU資源;
- 5.優(yōu)化的SQL查詢算法,有效地提高查詢速度;
- 6. 既能夠作為一個(gè)單獨(dú)的應(yīng)用程序應(yīng)用在客戶端服務(wù)器網(wǎng)絡(luò)環(huán)境中,也能夠作為一個(gè)庫(kù)而嵌入到其他的軟件中;
- 7.提供多語(yǔ)言支持,常見(jiàn)的編碼如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作數(shù)據(jù)表名和數(shù)據(jù)列名;
- 8.提供TCP/IP、ODBC和JDBC等多種數(shù)據(jù)庫(kù)連接途徑;
- 9.提供用于管理、檢查、優(yōu)化數(shù)據(jù)庫(kù)操作的管理工具;
- 10.支持大型的數(shù)據(jù)庫(kù),可以處理?yè)碛猩锨f(wàn)條記錄的大型數(shù)據(jù)庫(kù);
- 11.支持多種存儲(chǔ)引擎,InnoDB是事務(wù)型數(shù)據(jù)庫(kù)的首選引擎,支持ACID事務(wù),支持行級(jí)鎖定, MySQL 5.5起成為默認(rèn)數(shù)據(jù)庫(kù)引擎;
- 12.支持三種應(yīng)用架構(gòu):?jiǎn)吸c(diǎn)(Single),適合小規(guī)模應(yīng)用;復(fù)制(Replication),適合中小規(guī)模應(yīng)用;集群(Cluster),適合大規(guī)模應(yīng)用;
PostgreSQL是另一種得到廣泛應(yīng)用的開(kāi)源關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng)。PostgreSQL是以加州大學(xué)伯克利分校計(jì)算機(jī)系開(kāi)發(fā)的 POSTGRES,現(xiàn)在已經(jīng)更名為POSTGRES,版本 4.2為基礎(chǔ)的對(duì)象關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(ORDBMS)。PostgreSQL支持大部分 SQL標(biāo)準(zhǔn)并且提供了許多其他現(xiàn)代特性:復(fù)雜查詢、外鍵、觸發(fā)器、視圖、事務(wù)完整性、MVCC。同樣,PostgreSQL 可以用許多方法擴(kuò)展,比如, 通過(guò)增加新的數(shù)據(jù)類型、函數(shù)、操作符、聚集函數(shù)、索引方法、過(guò)程語(yǔ)言。并且,因?yàn)樵S可證的靈活,任何人都可以以任何目的免費(fèi)使用、修改、和分發(fā) PostgreSQL,不管是私用、商用、還是學(xué)術(shù)研究使用。
POSTGRES 已經(jīng)在許多研究或?qū)嶋H的應(yīng)用中得到了應(yīng)用。 這些應(yīng)用包括: 一個(gè)財(cái)務(wù)數(shù)據(jù)分析系統(tǒng),一個(gè)噴氣引擎性能監(jiān)控軟件包,一個(gè)小行星跟蹤數(shù)據(jù)庫(kù), 一個(gè)醫(yī)療信息數(shù)據(jù)庫(kù)和一些地理信息系統(tǒng)。 POSTGRES 還被許多大學(xué)用于教學(xué)用途。 Illustra Information Technologies Illustra Information Technologies (并入 Informix) 拿到代碼并使之商業(yè)化。在 1992 年 POSTGRES 成為 Sequoia 2000 科學(xué)計(jì)算計(jì)劃的首要數(shù)據(jù)管理器。
(1) 優(yōu)點(diǎn)
事實(shí)上, PostgreSQL 的特性覆蓋了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以說(shuō)是目前世界上最豐富的數(shù)據(jù)類型的支持,其中有些數(shù)據(jù)類型可以說(shuō)連商業(yè)數(shù)據(jù)庫(kù)都不具備, 比如 IP 類型和幾何類型等;其次,PostgreSQL 是全功能的自由軟件數(shù)據(jù)庫(kù),很長(zhǎng)時(shí)間以來(lái),PostgreSQL 是唯一支持事務(wù)、子查詢、多版本并行控制系統(tǒng)(MVCC)、數(shù)據(jù)完整性檢查等特性的唯一的一種自由軟件的數(shù)據(jù)庫(kù)管理系統(tǒng)。 Inprise 的 InterBase 以及SAP等廠商將其原先專有軟件開(kāi)放為自由軟件之后才打破了這個(gè)唯一。最后,PostgreSQL擁有一支非?;钴S的開(kāi)發(fā)隊(duì)伍,而且在許多黑客的努力下,PostgreSQL 的質(zhì)量日益提高。
從技術(shù)角度來(lái)講,PostgreSQL 采用的是比較經(jīng)典的C/S(client/server)結(jié)構(gòu),也就是一個(gè)客戶端對(duì)應(yīng)一個(gè)服務(wù)器端守護(hù)進(jìn)程的模式,這個(gè)守護(hù)進(jìn)程分析客戶端來(lái)的查詢請(qǐng)求,生成規(guī)劃樹(shù),進(jìn)行數(shù)據(jù)檢索并最終把結(jié)果格式化輸出后返回給客戶端。為了便于客戶端的程序的編寫(xiě),由數(shù)據(jù)庫(kù)服務(wù)器提供了統(tǒng)一的客戶端 C 接口。而不同的客戶端接口都是源自這個(gè) C 接口,比如ODBC,JDBC,Python,Perl,Tcl,C/C++,ESQL等, 同時(shí)也要指出的是,PostgreSQL 對(duì)接口的支持也是非常豐富的,幾乎支持所有類型的數(shù)據(jù)庫(kù)客戶端接口。這一點(diǎn)也可以說(shuō)是 PostgreSQL 一大優(yōu)點(diǎn)。
(2) 缺點(diǎn)
從Postgres 開(kāi)始,PostgreSQL 就經(jīng)受了多次變化。
首先,早期的 PostgreSQL 繼承了幾乎所有 Ingres, Postgres, Postgres95 的問(wèn)題:過(guò)于學(xué)院味,因?yàn)槭紫人哪康氖菙?shù)據(jù)庫(kù)研究,因此不論在穩(wěn)定性, 性能還是使用方方面面,長(zhǎng)期以來(lái)一直沒(méi)有得到重視,直到 PostgreSQL 項(xiàng)目開(kāi)始以后,情況才越來(lái)越好,PostgreSQL 已經(jīng)完全可以勝任任何中上規(guī)模范圍內(nèi)的應(yīng)用范圍的業(yè)務(wù)。目前有報(bào)道的生產(chǎn)數(shù)據(jù)庫(kù)的大小已經(jīng)有 TB 級(jí)的數(shù)據(jù)量,已經(jīng)逼近 32 位計(jì)算的極限。不過(guò)學(xué)院味也給 PostgreSQL 帶來(lái)一個(gè)意想不到的好處:大概因?yàn)楦鞔髮W(xué)的軟硬件環(huán)境差異太大的緣故,它是目前支持平臺(tái)最多的數(shù)據(jù)庫(kù)管理系統(tǒng)的一種,所支持的平臺(tái)多達(dá)十幾種,包括不同的系統(tǒng),不同的硬件體系。至今,它仍然保持著支持平臺(tái)最多的數(shù)據(jù)庫(kù)管理系統(tǒng)的稱號(hào)。
其次,PostgreSQL 的確還欠缺一些比較高端的數(shù)據(jù)庫(kù)管理系統(tǒng)需要的特性,比如數(shù)據(jù)庫(kù)集群,更優(yōu)良的管理工具和更加自動(dòng)化的系統(tǒng)優(yōu)化功能 等提高數(shù)據(jù)庫(kù)性能的機(jī)制等。
(四)Web服務(wù)器:Apache和nginx
Apache HTTP Server(簡(jiǎn)稱Apache)是Apache軟件基金會(huì)的一個(gè)開(kāi)放源碼的Web服務(wù)器,可以在大多數(shù)計(jì)算機(jī)操作系統(tǒng)中運(yùn)行,由于其多平臺(tái)和安全性被廣泛使用,是最流行的Web服務(wù)器端軟件之一。它快速、可靠并且可通過(guò)簡(jiǎn)單的API擴(kuò)展,將Perl/Python等解釋器編譯到服務(wù)器中。
Apache http server是世界使用排名第一的Web服務(wù)器軟件,占有約60%的市場(chǎng)份額。它可以運(yùn)行在幾乎所有廣泛使用的計(jì)算機(jī)平臺(tái)上。Apache源于NCSA httpd服務(wù)器,經(jīng)過(guò)多次修改,成為世界上最流行的Web服務(wù)器軟件之一。Apache的特點(diǎn)是簡(jiǎn)單、速度快、性能穩(wěn)定,并可做代理服務(wù)器來(lái)使用。
Apache web服務(wù)器軟件擁有以下特性:
- 支持最新的HTTP/1.1通信協(xié)議;
- 擁有簡(jiǎn)單而強(qiáng)有力的基于文件的配置過(guò)程;
- 支持通用網(wǎng)關(guān)接口;
- 支持基于IP和基于域名的虛擬主機(jī);
- 支持多種方式的HTTP認(rèn)證;
- 支持多種方式的HTTP認(rèn)證;
- 集成代理服務(wù)器模塊;
- 支持實(shí)時(shí)監(jiān)視服務(wù)器狀態(tài)和定制服務(wù)器日志;
- 支持服務(wù)器端包含指令(SSI;)
- 支持安全Socket層(SSL;)
- 提供用戶會(huì)話過(guò)程的跟蹤;
- 支持FastCGI;
- 通過(guò)第三方模塊可以支持Java Servlets;
另一個(gè)得到廣泛采用的Web服務(wù)器是nginx。Nginx是一款輕量級(jí)的Web 服務(wù)器/反向代理服務(wù)器及電子郵件(IMAP/POP3)代理服務(wù)器,并在一個(gè)BSD-like 協(xié)議下發(fā)行。由俄羅斯的程序設(shè)計(jì)師Igor Sysoev所開(kāi)發(fā),供俄國(guó)大型的入口網(wǎng)站及搜索引擎Rambler使用。其特點(diǎn)是占有內(nèi)存少,并發(fā)能力強(qiáng),事實(shí)上nginx的并發(fā)能力確實(shí)在同類型的網(wǎng)頁(yè)服務(wù)器中表現(xiàn)較好,中國(guó)大陸使用nginx網(wǎng)站用戶有:新浪、網(wǎng)易、 騰訊等。
(五)云計(jì)算:OpenStack
OpenStack是一個(gè)美國(guó)國(guó)家航空航天局和Rackspace合作研發(fā)的,以Apache許可證授權(quán),并且是一個(gè)自由軟件和開(kāi)放源代碼項(xiàng)目。OpenStack是一個(gè)云平臺(tái)管理的項(xiàng)目,它不是一個(gè)軟件。這個(gè)項(xiàng)目由幾個(gè)主要的組件組合起來(lái)完成一些具體的工作。
OpenStack是一個(gè)旨在為公共及私有云的建設(shè)與管理提供軟件的開(kāi)源項(xiàng)目。它的社區(qū)擁有超過(guò)130家企業(yè)及1350位開(kāi)發(fā)者,這些機(jī)構(gòu)與個(gè)人都將OpenStack作為基礎(chǔ)設(shè)施即服務(wù)(簡(jiǎn)稱IaaS)資源的通用前端。OpenStack項(xiàng)目的首要任務(wù)是簡(jiǎn)化云的部署過(guò)程并為其帶來(lái)良好的可擴(kuò)展性。本文希望通過(guò)提供必要的指導(dǎo)信息,幫助大家利用OpenStack前端來(lái)設(shè)置及管理自己的公共云或私有云。
OpenStack 是由 Rackspace 和 NASA 共同開(kāi)發(fā)的云計(jì)算平臺(tái),幫助服務(wù)商和企業(yè)內(nèi)部實(shí)現(xiàn)類似于 Amazon EC2 和 S3 的云基礎(chǔ)架構(gòu)服務(wù)(Infrastructure as a Service, IaaS)。OpenStack 包含兩個(gè)主要模塊:Nova 和 Swift,前者是 NASA 開(kāi)發(fā)的虛擬服務(wù)器部署和業(yè)務(wù)計(jì)算模塊;后者是 Rackspace開(kāi)發(fā)的分布式云存儲(chǔ)模塊,兩者可以一起用,也可以分開(kāi)單獨(dú)用。OpenStack 是開(kāi)源項(xiàng)目,除了有 Rackspace 和 NASA 的大力支持外,后面還有包括 Dell、Citrix、 Cisco、 Canonical 這些重量級(jí)公司的貢獻(xiàn)和支持,發(fā)展速度非??欤腥〈硪粋€(gè)業(yè)界領(lǐng)先開(kāi)源云平臺(tái) Eucalyptus 的態(tài)勢(shì)。
廠商支持:
- 美國(guó)國(guó)家航空航天局的Nebula運(yùn)算平臺(tái);
- 現(xiàn)時(shí)已表示支持OpenStack項(xiàng)目的大型硬件廠商包括:AMD、Intel和戴爾等;
- 微軟在2010年10月表示支持OpenStack與Windows Server 2008 R2的整合;
- 2011年2月,思科系統(tǒng)正式加入OpenStack項(xiàng)目,重點(diǎn)研制OpenStack的網(wǎng)絡(luò)服務(wù);
- Ubuntu未來(lái)在堆棧方面的云網(wǎng)絡(luò)化方案;
- 2012年4月,IBM宣布加入OpenStack項(xiàng)目,并作為主要贊助商;
- 2012年10月,Viacloud互聯(lián)云平臺(tái)加入OpenStack項(xiàng)目,研制OpenStack公有云平臺(tái)和私有云平臺(tái);
二、基礎(chǔ)架構(gòu)開(kāi)源化
企業(yè)IT開(kāi)源化的另一個(gè)主要的方面是企業(yè)基礎(chǔ)架構(gòu)組件的開(kāi)源化,也就是選用各種開(kāi)源的基礎(chǔ)架構(gòu)組件來(lái)搭建企業(yè)IT架構(gòu)。
(一)負(fù)載均衡:LVS
LVS是Linux Virtual Server的簡(jiǎn)寫(xiě),意即Linux虛擬服務(wù)器,是一個(gè)虛擬的服務(wù)器集群系統(tǒng)。本項(xiàng)目在1998年5月由章文嵩博士成立,是中國(guó)國(guó)內(nèi)最早出現(xiàn)的自由軟件項(xiàng)目之一。
LVS的宗旨是:
- 使用集群技術(shù)和Linux操作系統(tǒng)實(shí)現(xiàn)一個(gè)高性能、高可用的服務(wù)器;
- 很好的可伸縮性(Scalability);
- 很好的可靠性(Reliability);
- 很好的可管理性(Manageability);
LVS集群采用IP負(fù)載均衡技術(shù)和基于內(nèi)容請(qǐng)求分發(fā)技術(shù)。調(diào)度器具有很好的吞吐率,將請(qǐng)求均衡地轉(zhuǎn)移到不同的服務(wù)器上執(zhí)行,且調(diào)度器自動(dòng)屏蔽掉服務(wù)器的故障,從而將一組服務(wù)器構(gòu)成一個(gè)高性能的、高可用的虛擬服務(wù)器。整個(gè)服務(wù)器集群的結(jié)構(gòu)對(duì)客戶是透明的,而且無(wú)需修改客戶端和服務(wù)器端的程序。
(二)消息中間件:ActiveMQ
ActiveMQ 是Apache出品,最流行的,能力強(qiáng)勁的開(kāi)源消息總線。ActiveMQ 是一個(gè)完全支持JMS1.1規(guī)范的 JMS Provider實(shí)現(xiàn)。使用ActiveMQ作為默認(rèn)JMS Provider的開(kāi)源項(xiàng)目有ServiceMix、Geronimo等。
ActiveMQ有如下的特性:
- 多種語(yǔ)言和協(xié)議編寫(xiě)客戶端,語(yǔ)言: Java、C、C++、C#、Ruby、Perl、Python、PHP,應(yīng)用協(xié)議:OpenWire、Stomp REST、WS Notification、XMPP、AMQP;
- 完全支持 JMS1.1 和 JavaEE 6 規(guī)范(持久化,XA消息,事務(wù));
- 對(duì)Spring的支持,ActiveMQ 可以很容易內(nèi)嵌到使用Spring的系統(tǒng)里面去,而且也支持Spring 3.0的特性;
- 通過(guò)了常見(jiàn)JavaEE服務(wù)器(如 Geronimo,JBoss,GlassFish,WebLogic)的測(cè)試,其中通過(guò)JCA 1.5 resource adaptors的配置,可以讓ActiveMQ可以自動(dòng)的部署到任何兼容JavaEE商業(yè)服務(wù)器上;
- 支持多種傳送協(xié)議:in-VM、TCP、SSL、NIO、UDP、JGroups、JXTA;
- 支持通過(guò)JDBC和journal提供高速的消息持久化;
- 從設(shè)計(jì)上保證了高性能的集群,客戶端-服務(wù)器,點(diǎn)對(duì)點(diǎn);
- 支持Ajax;
- 支持與Axis的整合;
- 可以很容易得調(diào)用內(nèi)嵌JMS provider,進(jìn)行測(cè)試;
(三)規(guī)則引擎:Drools
規(guī)則引擎由推理引擎發(fā)展而來(lái),是一種嵌入在應(yīng)用程序中的組件,實(shí)現(xiàn)了將業(yè)務(wù)決策從應(yīng)用程序代碼中分離出來(lái),并使用預(yù)定義的語(yǔ)義模塊編寫(xiě)業(yè)務(wù)決策。接受數(shù)據(jù)輸入,解釋業(yè)務(wù)規(guī)則,并根據(jù)業(yè)務(wù)規(guī)則做出業(yè)務(wù)決策。
應(yīng)用背景: 企業(yè)級(jí)管理者對(duì)企業(yè)IT系統(tǒng)的開(kāi)發(fā)有著如下的要求:
- 為提高效率,管理流程必須自動(dòng)化,即使現(xiàn)代商業(yè)規(guī)則異常復(fù)雜;
- 市場(chǎng)要求業(yè)務(wù)規(guī)則經(jīng)常變化,IT系統(tǒng)必須依據(jù)業(yè)務(wù)規(guī)則的變化快速、低成本的更新;
- 為了快速、低成本的更新,業(yè)務(wù)人員應(yīng)能直接管理IT系統(tǒng)中的規(guī)則,不需要程序開(kāi)發(fā)人員參與;
使用規(guī)則引擎可以通過(guò)降低實(shí)現(xiàn)復(fù)雜業(yè)務(wù)邏輯的組件的復(fù)雜性,降低應(yīng)用程序的維護(hù)和可擴(kuò)展性成本,其優(yōu)點(diǎn)如下:
- 分離商業(yè)決策者的商業(yè)決策邏輯和應(yīng)用開(kāi)發(fā)者的技術(shù)決策;
- 能有效的提高實(shí)現(xiàn)復(fù)雜邏輯的代碼的可維護(hù)性;
- 在開(kāi)發(fā)期間或部署后修復(fù)代碼缺陷;
- 應(yīng)付特殊狀況,即客戶一開(kāi)始沒(méi)有提到要將業(yè)務(wù)邏輯考慮在內(nèi);
- 符合組織對(duì)敏捷或迭代開(kāi)發(fā)過(guò)程的使用;
規(guī)則引擎是基于規(guī)則的專家系統(tǒng)的核心部分,主要由三部分組成:規(guī)則庫(kù)(Knowledge base)、事實(shí)(Fact base)和推理機(jī)。規(guī)則引擎根據(jù)既定事實(shí)和知識(shí)庫(kù)按照一定的算法執(zhí)行推理邏輯得到正確的結(jié)果。
Drools 是用 Java 語(yǔ)言編寫(xiě)的開(kāi)放源碼規(guī)則引擎,使用 Rete 算法對(duì)所編寫(xiě)的規(guī)則求值。Drools 允許使用聲明方式表達(dá)業(yè)務(wù)邏輯??梢允褂梅?XML 的本地語(yǔ)言編寫(xiě)規(guī)則,從而便于學(xué)習(xí)和理解。并且,還可以將 Java 代碼直接嵌入到規(guī)則文件中,這令 Drools 的學(xué)習(xí)更加吸引人。Drools 還具有其他優(yōu)點(diǎn):
- 非?;钴S的社區(qū)支持;
- 易用;
- 快速的執(zhí)行速度;
- 在 Java 開(kāi)發(fā)人員中流行;
- 與 Java Rule Engine API(JSR 94)兼容;
(四)業(yè)務(wù)流程引擎:jBPM和Activiti
所謂工作流引擎是指workflow作為應(yīng)用系統(tǒng)的一部分,并為之提供對(duì)各應(yīng)用系統(tǒng)有決定作用的根據(jù)角色、分工和條件的不同決定信息傳遞路由、內(nèi)容等級(jí)等核心解決方案。
JBPM是Redhat開(kāi)發(fā)的基于Java的最流行的開(kāi)源業(yè)務(wù)流程引擎。從JBPM 4之后,其創(chuàng)始人Tom Baeyens離開(kāi)了Redhat,另外創(chuàng)立了Activiti,繼續(xù)延續(xù)JBPM4的技術(shù)路線。而JBPM 5則完全放棄了JBPM 4的基礎(chǔ)代碼,基于Drools Flow重頭來(lái)過(guò)。
除了基本的流程功能之外,JBPM 5和Activiti都實(shí)現(xiàn)了如下特性:
- 遵循BPMN 2.0流程定義語(yǔ)言規(guī)則;
- 提供基于瀏覽器的流程設(shè)計(jì)器和表單設(shè)計(jì)器;
- 使用Java語(yǔ)言和動(dòng)態(tài)腳本語(yǔ)言進(jìn)行功能擴(kuò)展;
- 易于與規(guī)則引擎和事件處理引擎集成;
- Web管理控制臺(tái);
- 強(qiáng)大的擴(kuò)展機(jī)制,可以通過(guò)擴(kuò)展實(shí)現(xiàn)中國(guó)特色的工作流,例如會(huì)簽、傳閱、退回、撤回、自由流等等;
(五)分布式緩存:memcached和Redis
memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 為首開(kāi)發(fā)的一款緩存軟件,已成為mixi、hatena、Facebook、Vox、LiveJournal等眾多服務(wù)中提高Web應(yīng)用擴(kuò)展性的重要因素。這是一套開(kāi)放源代碼軟件,以BSD license授權(quán)發(fā)布。
memcached是高性能的分布式內(nèi)存緩存服務(wù)器。一般的使用目的是,通過(guò)緩存數(shù)據(jù)庫(kù)查詢結(jié)果,減少數(shù)據(jù)庫(kù)訪問(wèn)次數(shù),以提高動(dòng)態(tài)Web應(yīng)用的速度、提高可擴(kuò)展性。
Memcached 的守護(hù)進(jìn)程(daemon )是用C寫(xiě)的,但是客戶端可以用任何語(yǔ)言來(lái)編寫(xiě),并通過(guò)memcached協(xié)議與守護(hù)進(jìn)程通信。但是它并不提供冗余(例如,復(fù)制其hashmap條目);當(dāng)某個(gè)服務(wù)器S停止運(yùn)行或崩潰了,所有存放在S上的鍵/值對(duì)都將丟失。
Redis是一個(gè)key-value存儲(chǔ)系統(tǒng)。和Memcached類似,它支持存儲(chǔ)的value類型相對(duì)更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hashs(哈希類型)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎(chǔ)上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是redis會(huì)周期性的把更新的數(shù)據(jù)寫(xiě)入磁盤(pán)或者把修改操作寫(xiě)入追加的記錄文件,并且在此基礎(chǔ)上實(shí)現(xiàn)了master-slave(主從)同步。
Redis 是一個(gè)高性能的key-value數(shù)據(jù)庫(kù)。 redis的出現(xiàn),很大程度補(bǔ)償了memcached這類key/value存儲(chǔ)的不足,在部 分場(chǎng)合可以對(duì)關(guān)系數(shù)據(jù)庫(kù)起到很好的補(bǔ)充作用。它提供了Python,Ruby,Erlang,PHP客戶端,使用很方便。
(六)分布式計(jì)算:Hadoop
Hadoop由 Apache Software Foundation 公司于 2005 年秋天作為L(zhǎng)ucene的子項(xiàng)目Nutch的一部分正式引入。它受到最先由 Google Lab 開(kāi)發(fā)的 Map/Reduce 和 Google File System(GFS) 的啟發(fā)。2006 年 3 月份,Map/Reduce 和 Nutch Distributed File System (NDFS) 分別被納入稱為 Hadoop 的項(xiàng)目中。
Hadoop是一個(gè)能夠?qū)Υ罅繑?shù)據(jù)進(jìn)行分布式處理的軟件框架。但是 Hadoop 是以一種可靠、高效、可伸縮的方式進(jìn)行處理的。Hadoop 是可靠的,因?yàn)樗僭O(shè)計(jì)算元素和存儲(chǔ)會(huì)失敗,因此它維護(hù)多個(gè)工作數(shù)據(jù)副本,確保能夠針對(duì)失敗的節(jié)點(diǎn)重新分布處理。Hadoop 是高效的,因?yàn)樗圆⑿械姆绞焦ぷ?,通過(guò)并行處理加快處理速度。Hadoop 還是可伸縮的,能夠處理 PB 級(jí)數(shù)據(jù)。此外,Hadoop 依賴于社區(qū)服務(wù)器,因此它的成本比較低,任何人都可以使用。
Hadoop是一個(gè)能夠讓用戶輕松架構(gòu)和使用的分布式計(jì)算平臺(tái)。用戶可以輕松地在Hadoop上開(kāi)發(fā)和運(yùn)行處理海量數(shù)據(jù)的應(yīng)用程序。它主要有以下幾個(gè)優(yōu)點(diǎn):
- 高可靠性。Hadoop按位存儲(chǔ)和處理數(shù)據(jù)的能力值得人們信賴;
- 高擴(kuò)展性。Hadoop是在可用的計(jì)算機(jī)集群間分配數(shù)據(jù)并完成計(jì)算任務(wù)的,這些集簇可以方便地?cái)U(kuò)展到數(shù)以千計(jì)的節(jié)點(diǎn)中;
- 高效性。Hadoop能夠在節(jié)點(diǎn)之間動(dòng)態(tài)地移動(dòng)數(shù)據(jù),并保證各個(gè)節(jié)點(diǎn)的動(dòng)態(tài)平衡,因此處理速度非???;
- 高容錯(cuò)性。Hadoop能夠自動(dòng)保存數(shù)據(jù)的多個(gè)副本,并且能夠自動(dòng)將失敗的任務(wù)重新分配;
Hadoop帶有用Java語(yǔ)言編寫(xiě)的框架,因此運(yùn)行在 Linux 生產(chǎn)平臺(tái)上是非常理想的。Hadoop 上的應(yīng)用程序也可以使用其他語(yǔ)言編寫(xiě),比如 C++。
(七)分布式存儲(chǔ):HDFS
Hadoop Distributed File System,簡(jiǎn)稱HDFS,是一個(gè)分布式文件系統(tǒng)。HDFS有著高容錯(cuò)性的特點(diǎn),并且設(shè)計(jì)用來(lái)部署在低廉的硬件上。而且它提供高吞吐量來(lái)訪問(wèn)應(yīng)用程序的數(shù)據(jù),適合那些有著超大數(shù)據(jù)集的應(yīng)用程序。HDFS放寬了POSIX的要求,從而這樣可以實(shí)現(xiàn)流式訪問(wèn)文件系統(tǒng)中的數(shù)據(jù)。HDFS開(kāi)始是為開(kāi)源的apache項(xiàng)目nutch的基礎(chǔ)結(jié)構(gòu)而創(chuàng)建,是Hadoop項(xiàng)目的一部分,也可以獨(dú)立使用。
Hadoop HDFS分布式文件系統(tǒng)具有如下特點(diǎn):
- 非常適合PB級(jí)以上海量數(shù)據(jù)的存儲(chǔ)和處理,已在Yahoo、亞馬遜、Facebook、百度、淘寶等海量數(shù)據(jù)處理平臺(tái)上得到了廣泛驗(yàn)證;
- 系統(tǒng)擴(kuò)展性高,只需要簡(jiǎn)單添加服務(wù)器數(shù)量,即可實(shí)現(xiàn)存儲(chǔ)容量和計(jì)算能力的線性增長(zhǎng);
- 數(shù)據(jù)冗余度高,缺省每份數(shù)據(jù)在3臺(tái)服務(wù)器上保留副本;
- 適合流式訪問(wèn)(Streaming access),即一次寫(xiě)入,多次讀取,數(shù)據(jù)寫(xiě)入后極少修改;
- 除了數(shù)據(jù)存儲(chǔ)能力外,與HDFS共生的MapReduce分布式計(jì)算框架大大簡(jiǎn)化了分布式計(jì)算程序的編程難度,可快速編寫(xiě)分布式計(jì)算程序,充分利用各存儲(chǔ)節(jié)點(diǎn)的CPU計(jì)算資源;
(八)NoSQL數(shù)據(jù)庫(kù):MongoDB
MongoDB是一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由C++語(yǔ)言編寫(xiě),旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。
MongoDB是一個(gè)介于關(guān)系數(shù)據(jù)庫(kù)和非關(guān)系數(shù)據(jù)庫(kù)之間的產(chǎn)品,是非關(guān)系數(shù)據(jù)庫(kù)當(dāng)中功能最豐富,最像關(guān)系數(shù)據(jù)庫(kù)的。他支持的數(shù)據(jù)結(jié)構(gòu)非常松散,是類似json的bson格式,因此可以存儲(chǔ)比較復(fù)雜的數(shù)據(jù)類型。Mongo最大的特點(diǎn)是他支持的查詢語(yǔ)言非常強(qiáng)大,其語(yǔ)法有點(diǎn)類似于面向?qū)ο蟮牟樵冋Z(yǔ)言,幾乎可以實(shí)現(xiàn)類似關(guān)系數(shù)據(jù)庫(kù)單表查詢的絕大部分功能,而且還支持對(duì)數(shù)據(jù)建立索引。
它的特點(diǎn)是高性能、易部署、易使用,存儲(chǔ)數(shù)據(jù)非常方便。主要功能特性有:
- 面向集合存儲(chǔ),易存儲(chǔ)對(duì)象類型的數(shù)據(jù)。所謂“面向集合”(Collection-Oriented),意思是數(shù)據(jù)被分組存儲(chǔ)在數(shù)據(jù)集中,被稱為一個(gè)集合(Collection)。每個(gè)集合在數(shù)據(jù)庫(kù)中都有一個(gè)唯一的標(biāo)識(shí)名,并且可以包含無(wú)限數(shù)目的文檔。集合的概念類似關(guān)系型數(shù)據(jù)庫(kù)(RDBMS)里的表(table),不同的是它不需要定義任何模式(schema);
- 模式自由。模式自由(schema-free),意味著對(duì)于存儲(chǔ)在mongodb數(shù)據(jù)庫(kù)中的文件,我們不需要知道它的任何結(jié)構(gòu)定義。如果需要的話,你完全可以把不同結(jié)構(gòu)的文件存儲(chǔ)在同一個(gè)數(shù)據(jù)庫(kù)里;
- 支持動(dòng)態(tài)查詢;
- 支持完全索引,包含內(nèi)部對(duì)象;
- 支持查詢;
- 支持復(fù)制和故障恢復(fù);
- 使用高效的二進(jìn)制數(shù)據(jù)存儲(chǔ),包括大型對(duì)象(如視頻等);
- 自動(dòng)處理碎片,以支持云計(jì)算層次的擴(kuò)展性;
- 支持RUBY,PYTHON,JAVA,C++,PHP,C#等多種語(yǔ)言;
- 文件存儲(chǔ)格式為BSON(一種JSON的擴(kuò)展)。存儲(chǔ)在集合中的文檔,被存儲(chǔ)為鍵-值對(duì)的形式。鍵用于唯一標(biāo)識(shí)一個(gè)文檔,為字符串類型,而值則可以是各種復(fù)雜的文件類型。我們稱這種存儲(chǔ)形式為BSON(Binary Serialized Document Format);
- 可通過(guò)網(wǎng)絡(luò)訪問(wèn);
(九)門(mén)戶:Liferay
Liferay(又稱Liferay Portal)是一個(gè)開(kāi)源門(mén)戶項(xiàng)目,該項(xiàng)目包含了一個(gè)完整的JavaEE應(yīng)用。該項(xiàng)目使用了Web、EJB以及JMS等技術(shù),特別是其前臺(tái)界面部分使用Struts 框架技術(shù),基于XML的portlet配置文件可以自由地動(dòng)態(tài)擴(kuò)展,使用了Web Services來(lái)支持一些遠(yuǎn)程信息的獲取,使用 Apache Lucene實(shí)現(xiàn)全文檢索功能。
特點(diǎn):
- 1、提供單一登陸接口,多認(rèn)證模式(LDAP或SQL);
- 2、管理員能通過(guò)用戶界面輕松管理用戶,組,角色;
- 3、用戶可以根據(jù)需要定制個(gè)性化的portal layout;
- 4、能夠在主流的J2EE應(yīng)用服務(wù)器上運(yùn)行,如JBoss+Jetty/Tomcat,JOnAS;
- 5、支持主流的數(shù)據(jù)庫(kù),如PostgreSQL,MySQL;
- 6、使用了第三方的開(kāi)源項(xiàng)目,如Hibernate, Lucene, Struts;
- 7、支持包括中文在內(nèi)的多種語(yǔ)言;
- 8、采用最先進(jìn)的技術(shù) Java, EJB, JMS, SOAP, XML;
(十)商業(yè)智能(BI):Pentaho, JasperReport
Pentaho是一個(gè)以工作 流為核心的、強(qiáng)調(diào)面向解決方案而非工具組件的BI套件,整合了多個(gè)開(kāi)源項(xiàng)目,目標(biāo)是和商業(yè)BI相抗衡。它偏向于與業(yè)務(wù)流程相結(jié)合的BI解決方案,側(cè)重于大 中型企業(yè)應(yīng)用。它允許商業(yè)分析人員或開(kāi)發(fā)人員創(chuàng)建報(bào)表,儀表盤(pán),分析模型,商業(yè)規(guī)則和 BI 流程。
Pentaho是世界上最流行的開(kāi)源商務(wù)智能軟件,是一個(gè)以工作流為核心的、強(qiáng)調(diào)面向解決方案而非工具組件的BI套件,整合了多個(gè)開(kāi)源項(xiàng)目,目標(biāo)是和商業(yè)BI相抗衡。它是一個(gè)基于java平臺(tái)的商業(yè)智能(Business Intelligence,BI)套件,之所以說(shuō)是套件是因?yàn)樗ㄒ粋€(gè)web server平臺(tái)和幾個(gè)工具軟件:報(bào)表,分析,圖表,數(shù)據(jù)集成,數(shù)據(jù)挖掘等,可以說(shuō)包括了商務(wù)智能的方方面面。
授權(quán)協(xié)議:
- 授權(quán)分為兩個(gè)版本:商業(yè)版和社區(qū)版;
- 社區(qū)版——社區(qū)版為開(kāi)源,授權(quán)協(xié)議為:GPL,LGPL。社區(qū)版代碼以從官方網(wǎng)站分離,由sourceforge代為管理;
- 商業(yè)版——商業(yè)版需要付費(fèi),有試用demo可下載;
JasperReports是一個(gè)用Java開(kāi)發(fā)的開(kāi)源的程序庫(kù),用戶能夠通過(guò)它,利用Java語(yǔ)言來(lái)開(kāi)發(fā)具有報(bào)告功能的程序。JasperReports配有一個(gè)報(bào)表編輯器iReport,它可以在Java環(huán)境下像其它IDE報(bào)表工具一樣來(lái)制作報(bào)表。JasperReports 支持PDF、HTML、XLS、CSV和XML文件輸出格式。JasperReports是當(dāng)前Java開(kāi)發(fā)者最常用的報(bào)表工具。
(十一)數(shù)據(jù)挖掘(DM):Weka
數(shù)據(jù)挖掘(Data Mining,DM)又稱數(shù)據(jù)庫(kù)中的知識(shí)發(fā)現(xiàn)(Knowledge Discover in Database, KDD),是目前人工智能和數(shù)據(jù)庫(kù)領(lǐng)域研究的熱點(diǎn)問(wèn)題,所謂數(shù)據(jù)挖掘是指從數(shù)據(jù)庫(kù)的大量數(shù)據(jù)中揭示出隱含的、先前未知的并有潛在價(jià)值的信息的非平凡過(guò)程。數(shù)據(jù)挖掘是一種決策支持過(guò)程,它主要基于人工智能、機(jī)器學(xué)習(xí)、模式識(shí)別、統(tǒng)計(jì)學(xué)、數(shù)據(jù)庫(kù)、可視化技術(shù)等,高度自動(dòng)化地分析企業(yè)的數(shù)據(jù),做出歸納性的推理,從中挖掘出潛在的模式,幫助決策者調(diào)整市場(chǎng)策略,減少風(fēng)險(xiǎn),做出正確的決策。數(shù)據(jù)挖掘是通過(guò)分析每個(gè)數(shù)據(jù),從大量數(shù)據(jù)中尋找其規(guī)律的技術(shù),主要有數(shù)據(jù)準(zhǔn)備、規(guī)律尋找和規(guī)律表示3個(gè)步驟。數(shù)據(jù)準(zhǔn)備是從相關(guān)的數(shù)據(jù)源中選取所需的數(shù)據(jù)并整合成用于數(shù)據(jù)挖掘的數(shù)據(jù)集;規(guī)律尋找是用某種方法將數(shù)據(jù)集所含的規(guī)律找出來(lái);規(guī)律表示是盡可能以用戶可理解的方式(如可視化)將找出的規(guī)律表示出來(lái)。
Weka的全名是懷卡托智能分析環(huán)境(Waikato Environment for Knowledge Analysis),是一款免費(fèi)的,非商業(yè)化(與之對(duì)應(yīng)的是SPSS公司商業(yè)數(shù)據(jù)挖掘產(chǎn)品--Clementine )的,基于JAVA環(huán)境下開(kāi)源的機(jī)器學(xué)習(xí)(machine learning)以及數(shù)據(jù)挖掘(data minining)軟件。WEKA作為一個(gè)公開(kāi)的數(shù)據(jù)挖掘工作平臺(tái),集合了大量能承擔(dān)數(shù)據(jù)挖掘任務(wù)的機(jī)器學(xué)習(xí)算法,包括對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,分類,回歸、聚類、關(guān)聯(lián)規(guī)則以及在新的交互式界面上的可視化。
2005年8月,在第11屆ACM SIGKDD國(guó)際會(huì)議上,懷卡托大學(xué)的Weka小組榮獲了數(shù)據(jù)挖掘和知識(shí)探索領(lǐng)域的最高服務(wù)獎(jiǎng),Weka系統(tǒng)得到了廣泛的認(rèn)可,被譽(yù)為數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí) 歷史上的里程碑,是現(xiàn)今最完備的數(shù)據(jù)挖掘工具之一(已有11年的發(fā)展歷史)。Weka的每月下載次數(shù)已超過(guò)萬(wàn)次。
(十二)聯(lián)機(jī)分析處理(OLAP):Mondrian
聯(lián)機(jī)分析處理(On Line Analytical Proccessing,簡(jiǎn)稱OLAP) 概念最早由關(guān)系數(shù)據(jù)庫(kù)之父E.F.Codd于1993年提出。OLAP應(yīng)用是目前數(shù)據(jù)倉(cāng)庫(kù)上的重要應(yīng)用之一,是決策分析的關(guān)鍵。作為數(shù)據(jù)倉(cāng)庫(kù)最重要的多維分析工具,OLAP利用存儲(chǔ)在數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)完成各種分析操作,并以直觀易懂的形式將分析結(jié)果返回給決策人員。它的目標(biāo)是滿足決策支持或多維環(huán)境特定的查詢和報(bào)表需求,技術(shù)核心是多維分析。OLAP具有靈活的分析功能、直觀的數(shù)據(jù)操作和分析結(jié)果可視化表示等突出優(yōu)點(diǎn),從而使用戶對(duì)大量復(fù)雜數(shù)據(jù)的分析變得輕松而高效,以利于迅速做出正確的判斷,輔助決策。
Mondrian是一個(gè)開(kāi)放源代碼的Rolap服務(wù)器,使用java開(kāi)發(fā)的。它實(shí)現(xiàn)了xmla和jolap規(guī)范,而且自定義了一種使用mdx語(yǔ)言的客戶端接口。Mondrian是olap服務(wù)器,而不是數(shù)據(jù)倉(cāng)庫(kù)服務(wù)器,因此Mondrian的元數(shù)據(jù)主要包括olap建模的元數(shù)據(jù),不包括從外部數(shù)據(jù)源到數(shù)據(jù)庫(kù)轉(zhuǎn)換的元數(shù)據(jù)。也就是說(shuō)Mondria的元數(shù)據(jù)僅僅包括了多維邏輯模型,從關(guān)系型數(shù)據(jù)庫(kù)到多維邏輯模型的映射,存取權(quán)限等信息。在功能上,Mondrian支持共享維和成員計(jì)算,支持星型模型和雪花模型的功能。
Mondrian是一個(gè)開(kāi)源項(xiàng)目。一個(gè)用Java寫(xiě)成的OLAP(在線分析性處理)引擎。它用MDX語(yǔ)言實(shí)現(xiàn)查詢,從關(guān)系數(shù)據(jù)庫(kù)(RDBMS)中讀取數(shù)據(jù)。然后經(jīng)過(guò)Java API用多維的方式對(duì)結(jié)果進(jìn)行展示。
(十三)企業(yè)服務(wù)總線:FuseESB
ESB全稱為Enterprise Service Bus,即企業(yè)服務(wù)總線。它是傳統(tǒng)中間件技術(shù)與XML、Web服務(wù)等技術(shù)結(jié)合的產(chǎn)物。ESB提供了網(wǎng)絡(luò)中最基本的連接中樞,是構(gòu)筑企業(yè)神經(jīng)系統(tǒng)的必要元素。ESB的出現(xiàn)改變了傳統(tǒng)的軟件架構(gòu),可以提供比傳統(tǒng)中間件產(chǎn)品更為廉價(jià)的解決方案,同時(shí)它還可以消除不同應(yīng)用之間的技術(shù)差異,讓不同的應(yīng)用服務(wù)器協(xié)調(diào)運(yùn)作,實(shí)現(xiàn)了不同服務(wù)之間的通信與整合。從功能上看,ESB提供了事件驅(qū)動(dòng)和文檔導(dǎo)向的處理模式,以及分布式的運(yùn)行管理機(jī)制,它支持基于內(nèi)容的路由和過(guò)濾,具備了復(fù)雜數(shù)據(jù)的傳輸能力,并可以提供一系列的標(biāo)準(zhǔn)接口。
ESB是SOA(面向服務(wù)的架構(gòu))的關(guān)鍵組成部分。其基本功能包括:
- 服務(wù)的MetaData管理:在總線范疇內(nèi)對(duì)服務(wù)的注冊(cè)命名及尋址進(jìn)行管理;
- 傳輸服務(wù):確保通過(guò)企業(yè)總線互連的業(yè)務(wù)流程間的消息的正確交付,還包括基于內(nèi)容的路由功能;
- 中介:提供位置透明的路由和定位服務(wù);提供多種消息傳遞形式;支持廣泛使用的傳輸協(xié)議;
- 多服務(wù)集成方式: 如JCA,Web服務(wù),Messaging ,Adaptor等;
- 服務(wù)和事件管理支持: 調(diào)用服務(wù)的記錄、測(cè)量和監(jiān)控?cái)?shù)據(jù);提供事件檢測(cè)、觸發(fā)和分布功能;
其擴(kuò)展功能包括:
- 面向服務(wù)的元數(shù)據(jù)管理: 他必須了解被他中介的兩端,即服務(wù)的請(qǐng)求以及請(qǐng)求者對(duì)服務(wù)的要求,以及服務(wù)的提供者和他所提供的服務(wù)的描述;
- Mediation :它必須具有某種機(jī)制能夠完成中介的作用,如協(xié)議轉(zhuǎn)換;
- 通信:服務(wù)的發(fā)布/訂閱、響應(yīng)/請(qǐng)求、同步/異步消息、路由和尋址等;
- 集成: 遺留系統(tǒng)適配器,服務(wù)編排和映射,協(xié)議轉(zhuǎn)換,數(shù)據(jù)變換,企業(yè)應(yīng)用集成中間件的連續(xù)等;
- 服務(wù)交互: 服務(wù)接口定義,服務(wù)實(shí)現(xiàn)的置換,服務(wù)消息模型,服務(wù)目錄和發(fā)現(xiàn)等;
- 服務(wù)安全: 認(rèn)證和授權(quán)、不可否認(rèn)和機(jī)密性、安全標(biāo)準(zhǔn)的支持等;
- 服務(wù)質(zhì)量: 事務(wù),服務(wù)的可交付性等;
- 服務(wù)等級(jí): 性能、可用性等;
ESB 中最常提到的兩個(gè)功能是消息轉(zhuǎn)換和消息路由。
FUSE Service Framework是一個(gè)開(kāi)源的框架,基于apache的CXF,F(xiàn)USE Service Framework提供一個(gè)引擎可以創(chuàng)建重用的服務(wù),這些服務(wù)可以作為一個(gè)集成方案的一部分。 在企業(yè)集成架構(gòu)中,你可以使用FUSE SF把新的或者已有的應(yīng)用變成面向服務(wù)的。FUSE ESB可以和很多服務(wù)容器集成,支持很多語(yǔ)言,消息系統(tǒng),和不同的協(xié)議。
Fuse ESB很好的支持了JBI規(guī)范,其下產(chǎn)品均是由Apache下的著名開(kāi)源項(xiàng)目組合而成。其中若干框架均已為開(kāi)源世界廣泛應(yīng)用,比如Apache Camel和Apache ServiceMix,尤其是其中的Apache ActiveMQ和Apache CXF,且ServiceMix 4之后基于OSGi架構(gòu),更能迎合企業(yè)動(dòng)態(tài)化、模塊化的需求。此外,F(xiàn)use有豐富的文檔支持,加上其主要框架為大多開(kāi)源人士所熟知,技術(shù)上可控性強(qiáng),風(fēng)險(xiǎn)較小,是我們推薦的ESB產(chǎn)品。
Fuse ESB的突出優(yōu)點(diǎn)是:
- 支持多種Front End編程;
- 支持多種數(shù)據(jù)綁定;
- 支持多種消息綁定;
- 支持多種傳輸協(xié)議;
- 支持部署web服務(wù);
三、開(kāi)發(fā)框架開(kāi)源化
開(kāi)發(fā)框架開(kāi)源化,是指使用開(kāi)源的類庫(kù)和框架來(lái)構(gòu)建應(yīng)用軟件。
(一)領(lǐng)域?qū)涌蚣埽篋DDLib
DDDLib是我們開(kāi)發(fā)的開(kāi)源軟件,目的是推行領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(Domain Driven Design,簡(jiǎn)稱DDD)的設(shè)計(jì)范式,和提供方便的基礎(chǔ)工具,減輕程序員的重復(fù)勞動(dòng)。
領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的設(shè)計(jì)思想是:以業(yè)務(wù)領(lǐng)域(問(wèn)題域)中的概念和機(jī)制為藍(lán)圖建立領(lǐng)域模型,然后用面向?qū)ο蟮臋C(jī)制來(lái)實(shí)現(xiàn)系統(tǒng)的領(lǐng)域?qū)印nI(lǐng)域模型是軟件系統(tǒng)的核心,系統(tǒng)其余部分都圍繞著領(lǐng)域模型來(lái)構(gòu)建。
與廣為流行的“以數(shù)據(jù)庫(kù)為中心的增刪改查”(CRUD)設(shè)計(jì)思想相比,DDD是一種根本不同的設(shè)計(jì)范式。CRUD以數(shù)據(jù)庫(kù)則關(guān)系模型為中心,DDD以對(duì)象模型為中心。CRUD是面向過(guò)程的,DDD是面向?qū)ο蟮摹RUD中的領(lǐng)域?qū)ο螅I(yè)務(wù)實(shí)體)是個(gè)偽對(duì)象,只有屬性,沒(méi)有行為,本質(zhì)上代表數(shù)據(jù)庫(kù)中的一行記錄;DDD中的領(lǐng)域?qū)ο蠹扔袑傩?,也有行為,本質(zhì)上代表現(xiàn)實(shí)存在的一個(gè)業(yè)務(wù)實(shí)體。CRUD認(rèn)為應(yīng)用軟件就是存儲(chǔ)和呈現(xiàn)數(shù)據(jù),軟件的一切操作本質(zhì)上就是數(shù)據(jù)的增刪改查;DDD認(rèn)為軟件是業(yè)務(wù)現(xiàn)實(shí)的映像,軟件中的領(lǐng)域?qū)ο蟮膶傩院托袨楹蜆I(yè)務(wù)實(shí)體的屬性和行為一一對(duì)應(yīng)。
DDDLib的一個(gè)特點(diǎn)是遵循標(biāo)準(zhǔn),將IoC和持久化框架隔離在領(lǐng)域?qū)又?,保證領(lǐng)域?qū)蛹兇獗磉_(dá)業(yè)務(wù)邏輯,不依賴于任何技術(shù)框架。可以在部署時(shí)靈活選用不同的持久化框架(JPA、Hibernate等)和IoC框架(Spring、Guice、TapestryIoC等)配合使用。DDDLib已經(jīng)得到廣泛采用。
(二)應(yīng)用框架:Koala
Koala是我們自主研發(fā)的開(kāi)源JavaEE應(yīng)用框架,基于Apache 2.0開(kāi)源許可協(xié)議發(fā)布。其主要設(shè)計(jì)目標(biāo)是:
- 促進(jìn)領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD)思想的普及推廣;
- 簡(jiǎn)化架構(gòu)師的系統(tǒng)設(shè)計(jì)工作;
- 提高開(kāi)發(fā)人員的工作效率;
- 降低軟件開(kāi)發(fā)成本;
- 集成JavaEE企業(yè)應(yīng)用開(kāi)發(fā)中常用的技術(shù)組件和業(yè)務(wù)組件,使得開(kāi)發(fā)人員不必自行開(kāi)發(fā)和配置;
- 提供一個(gè)簡(jiǎn)單、一致的核心,同時(shí)不限制開(kāi)發(fā)人員的自由度;
- 促進(jìn)面向標(biāo)準(zhǔn)和規(guī)范編程,降低框架、類庫(kù)的耦合度,避免廠商鎖定;
- 促進(jìn)單元測(cè)試、驗(yàn)收測(cè)試、自動(dòng)化構(gòu)建、持續(xù)集成、軟件質(zhì)量度量等軟件質(zhì)量保證措施的廣泛采用;
其功能特性如下:
- 開(kāi)源免費(fèi)的開(kāi)發(fā)平臺(tái),允許你任意修改源碼并擴(kuò)展功能;
- 以DDD領(lǐng)域驅(qū)動(dòng)思想為核心,拋棄傳統(tǒng)的以數(shù)據(jù)庫(kù)為中心的四層編碼模型;
- 豐富的基礎(chǔ)組件支持,包括:國(guó)際化、異常、緩存等;
- 向?qū)降拇罱?xiàng)目過(guò)程,支持各種技術(shù)選擇:JPA,mybatis,SpringMVC,struts2MVC等;
- 向?qū)降臄?shù)據(jù)庫(kù)到實(shí)體的生成過(guò)程;
- 向?qū)降膶?shí)體生成CURD功能;
- 向?qū)降姆?wù)發(fā)布一鍵無(wú)縫發(fā)布成war、EJB、webservice(SOAP/REST) 多種服務(wù)形式;
- 基于RBAC3模型的權(quán)限子系統(tǒng);
- 監(jiān)控子系統(tǒng)輕松協(xié)助你監(jiān)控URL,方法,數(shù)據(jù)庫(kù),內(nèi)存等狀態(tài);
- 使用通用查詢子系統(tǒng)輕松定制完成查詢功能;
- 基于IP過(guò)濾,用戶名驗(yàn)證及方法權(quán)限控制的WS安全子系統(tǒng);
- 基于JBPM5的流程子系統(tǒng);
咨詢服務(wù)范圍
一、技術(shù)堆棧

二、服務(wù)堆棧
