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

二、服務(wù)堆棧
