• <u id="pomzk"></u>
      1. IT開源化概述

        IT開源化就是采用開源軟件來搭建企業的軟件基礎設施和業務應用程序。開源的含義首先是“開放源代碼”,即將源代碼向全世界公開,沒有任何隱藏的部分。開源的另一個含義是“免費”,任何機構和個人都可以免費獲得和使用這些源代碼。

        一、開源是大勢所趨

        隨著計算機技術的發展,尤其是互聯網技術和相關企業的興起,開源軟件在操作系統、編譯工具鏈、數據庫、WEB服務器、移動操作系統等各個方面已經成為主流。而且許多企業利用開源軟件形成了獨特的商業模式。比如谷歌的 Android 操作系統,從 2007 年開源發布第一個版本起,到今天已經發展到 4.2版本,占據了智能手機操作系統一半以上的市場份額,谷歌也通過 Android 操作系統在移動互聯網這一新興行業中占據了領先和主導地位。再比如在服務器端廣泛使用的關系型數據庫 MySQL,在以開源軟件和商業許可并行的模式下,得到了快速發展,并在 2008 年作價 10 億美金由 Sun 收購(后者又在 2009 年被 Oracle 公司以 74 億美金的高價收購)。相反,以前一直和開源軟件做斗爭的微軟公司,卻因為無法快速推出適應市場的 Windows Phone 操作系統,在移動互聯網競爭中處于下風。為順應潮流,微軟也開始擁抱開源,比如向Samba項目貢獻代碼,放棄自己研發多年的大數據項目而選擇 Hadoop為其大數據的核心等。
        顯然,縱觀 IT 行業這二十多年的發展,開源軟件從黑客的理想之國,已經形成了一股推進計算機及相關行業不停進步的巨大力量。很多人可能尚未意識到,我們使用的電腦中運行 有開源軟件,手機中運行有開源軟件,家里的電視也運行有開源軟件,甚至小小的數碼產品(如電子相框)中也運行有開源軟件,尤其是互聯網服務器端軟件,幾乎 全部是開源軟件。毫不夸張地說,開源軟件已經滲透到了我們日常生活的方方面面。那么,開源軟件到底什么,開源軟件尤其是國內的開源軟件及社區的現狀如何, 發展面臨哪些困難和問題?

        二、開源軟件的發展歷程

        開源軟件的發展,和互聯網的發展密不可分。真正有規模的開源軟件,應該是從上個世紀 90 年代開始進入公眾視線,也就是互聯網開始興起的年代。我們大致可以將開源軟件的發展分為如下三個階段:
        1、萌芽階段(上世紀九十年代之前)。這個階段主要以個人和大學為主,因為發布條件受限,大多數開源軟件無法得到有效傳播,而僅僅流傳于互相熟悉的程序員和老師、學生之間。這個階段的典型開源軟件為 BSD 操作系統。
        2、以非盈利組織為主的階段。這個階段應從上個世紀九十年代算起,說起這個階段,我們不得不提到 Richard Stallman 發起的自由軟件基金會,還有 Apache 基金會等。前者發起的 GNU 項目(1983 年發起,九十年代后隨 Linux普及),成就了 Linux 操作系統;后者維護的 Apache WEB服務器,在互聯網上幾乎占據了統治地位。
        3、以大型IT企業為主的階段。這個階段出現于 2005 年之后,以谷歌為代表的大型互聯網企業,開始以各種方式發布開源軟件,最為著名的是 Chrome 瀏覽器以及 Android 操作系統;當然還有 Intel、Nokia 等企業主導的 Moblin、MeeGo 等基于 Linux 的智能手機操作系統。
        經過二十多年的發展,到今天,全球已有四百多萬源代碼貢獻者無私地在開源技術社區開發了超過一千萬個開源軟件項目,形成了完整的開源技術體系。今天,基本上所有的商業軟件都有成熟的開源軟件與之對應,開源技術已經成為一座巨大的知識寶庫。

        三、開源化的SWOT分析

        多年來,大型企業的IT基礎設施和應用軟件都被商業軟件占據。但是近年來這種狀況發生了很大的變化,大公司紛紛拋棄商業軟件,投入了開源的懷抱。那么,采用開源軟件具有哪些優勢和劣勢?面臨什么樣的機遇和風險?

        (一)優勢

        企業實行IT開源化具有以下的優勢:
      2. 1. 降低IT采購成本
      3. 開源軟件可以降低初期投入。開源軟件都是免費的,相比于昂貴的商業軟件,可以大大降低采購費用。商業的操作系統如各種Unix,商業應用服務器如IBM WebSphere、Oracle WebLogic,商業數據庫如Oracle、DB2等,都是價格非常昂貴的,而且隨著CPU數量或用戶數量的增加,價格還會不斷上漲。與之相比,開源的操作系統包括各種Linux、開源應用服務器JBoss、GlassFish、開源數據庫MySQL和PostgreSQL等在提供基本相同的功能和質量的同時,完全免費或者只需要支付低廉的費用。
        開源軟件可以降低總擁有成本(TCO)。在IBM委托Freeform Dynamics進行的一份題為“桌面Linux:主流商務采納經驗”的報告中指出:“采用Linux桌面不僅在操作系統本身的許可證上得到了節約,而且還在運行在操作系統之上的應用組合中體現出來,因為Linux環境中通常開源軟件的比例很高。”
        報告對大量IT工作者進行了調查,多數答復都認為Linux能全面降低總擁有成本,這也是可靠性、安全性和靈活性這些傳統品質的體現。在用戶體驗方面,穩定性和可靠性影響很大,而這些也同樣轉化成維護和支持費用的降低。各方面的調查結果表明,在重要的商務部署中,Linux都取得了非常實在的利益。節省下來的費用可以用來投入創新和研發,進一步促進企業的生產力。
      4. 2. 自主性
      5. 免費是開源化最明顯的優勢,自主性才是開源化最大的優勢。通過采用開源軟件構建應用,企業對自己的IT資產保留了最大限度的自主權。如果我們購買商業軟件,我們購買到的只是使用權,而不是所有權。我們并不真正擁有這套軟件,不能對它為所欲為。軟件對我們來說是個黑箱,我們無法也無權探究它的內部機制,通過反向工程獲得它的源代碼是違法行為。我們也不能試圖修改它,使得它能夠和我們的其他軟件更好地配合,或者更適合我們的整體企業架構。如果發現某些方面不能滿足我們的需求,我們無法對它進行擴展,只能寄望于它未來的升級,而什么時候升級,升級后的軟件是否包含我們期待的新特性等等,都是不可預知的,更不要說升級軟件又需要支付一筆額外的費用。如果軟件出了故障,因為我們不知道軟件的內部運行機制,無法自行處理,只等仰賴廠商的支持,而廠商的支持往往又不及時。
        如果使用開源軟件,則一切盡在我們掌控之下。軟件對我們來說是透明的,我們可以看到軟件的每一行源代碼,也可以隨意對它進行修改和擴展。我們可以自己動手,不需要求助于軟件廠商。我們可以馬上動手,不需要漫長的等待。我們不需要為修改和擴展支付一分錢的額外費用,也不會因為修改軟件而冒著違反法律的風險。如果軟件運行出了問題,我們可以跟蹤調試到每一行源代碼中,即時解決問題,而不需要漫長的等待外力的幫助。
      6. 3. 開放標準和避免廠商鎖定
      7. 文件格式和協議的開放標準是開源軟件的首要原則。互操作性指計算機系統應產出共同的格式使一臺計算機能夠與另一臺交談,這是電子時代以來計算行業的一大目標。開放標準的目的是促進不同的操作系統上不同應用之間的互操作性。但是私有數據格式卻會鼓勵對單一供應商應用的依賴,阻止與競爭產品的互操作性。私有數據格式將用戶鎖定到單一供應商的升級周期中,無法保證一致性和持久性。
        開放標準允許用戶獨立于平臺、供應商和軟件。開放標準使網絡協作成為可能,使在平臺之間移動自定義的軟件解決方案變得更加容易。開放標準的用戶,不論是個人還是政府,都擁有在不同的軟件、平臺和供應商之中選擇的靈活性和自由。而私有的、保密的標準使得用戶只能使用一個供應商的軟件,并且因為他們的數據都存儲為私有格式,轉換代價高昂而在此后繼續受供應商的擺布。
        荷蘭國際信息經濟研究所(International Institute of Infomatics)《自由/開源軟件:調查研究》這篇論文的作者們也反對在政府中使用私有軟件。他們認為:“……因此反對在公共部門使用私有軟件的一個主要理由是對私有軟件供應商的依賴。私有標準一旦建立人們就必須服從。即使在開放的競標制度下,與私有標準兼容的需求也使得制度偏向于特定的軟件供應商,因此造成長期的依賴。”
        在不同的地區,使用自由/開源軟件作為擺脫供應商依賴的手段都獲得了提倡。一份提交英國政府的報告認為“數據標準的開源實現常常能加速標準的推行,推薦政府有選擇地支持這樣的開源實現。”
      8. 4. 安全
      9. 雖然并沒有完全安全的系統或平臺,像開發方法、程序架構和目標市場這樣的因素都會極大地影響系統的安全性并決定攻破它是否困難。在這方面,自由/開源軟件系統有一些指標優于私有軟件系統:
        1. 由于微軟英特網信息服務(Internet Information Server, IIS)糟糕的安全記錄,Gartner 集團推薦公司使用 Apache 或其他 web 服務器。Gartner 集團發現到2001年7月美國的企業僅為修復 IIS 的“紅色代碼”漏洞就花費了12億美元。
        2. J. S. Wurzler 保險公司的“黑客險”對使用 Windows 的用戶收取比 GNU/Linux 或 Unix 系統用戶多5-15%的保險費用。J. S. Wurzler 公司的保險高級副總裁 Walter Kopf 說:“我們發現使用 NT 系統造成損失的可能性更大。”
        對安全的考慮已經推動許多公共機構轉移到或考慮轉移到自由/開源軟件方案。法國海關和間接稅管理部門主要出于安全的考慮,遷移到了 Red Hat 6.2 平臺。一般認為,自由/開源軟件較好的安全記錄有如下原因:
        • 源代碼可獲取:自由/開源軟件的源代碼開放性讓開發者和用戶更容易在漏洞被攻擊者利用前就能發現和修補。在 Bugtraq 上列出的許多漏洞都是在定期的評審中發現的,而沒有被利用的記錄。自由/開源軟件系統一般都采用預應式而非反應式的評審制度。
        • 專注于安全而非用戶友好:自由/開源軟件支撐著互聯網的很大一部分,因此更專注于健壯性和功能,而不是考慮易于使用。在為任何主要的自由/開源軟件應用增加功能之前,人們都要考慮其安全性,只有認為該功能不影響系統安全的情況下才會將其加入。
        • 根用戶制度:自由/開源軟件多數基于多用戶和支持網絡的 Unix 模式。因此,它們具有完備的權限結構和很強的安全性。當許多用戶共享一個強力的服務器時這種模式至關重要,否則,用戶將可以使服務器崩潰,偷竊其他用戶的私人資料或侵占其他用戶的資源。這種制度使得應用程序中的漏洞即使被利用也只會造成有限的損失。
        木馬、病毒和惡意軟件在Windows中很常見,是每位辦公室經理的心頭之患,但對于大多數Linux用戶來說它們幾乎沒有影響。安全性是所有Linux和Unix系統的重大優勢,也被認 為是開源軟件的一大長處,所有的Linux發行版都包含了更新機制,并提供即時的安全建議。
        Linux系統適合網絡應用,擁有總體安全性的優越記錄。許多企業網絡的標準技巧是使用Linux計算機作為防火墻,在入侵者襲擊網絡之前攔截他們。雖然這并不意味著Linux完全免疫,但它的系統架構讓它在面對攻擊時強大得多,而Windows中病毒防護的成本是無法估量的。
        安全性還有另一面。商業軟件由于是閉源的,而且大多來自國外,我們無法保證里面不會隱藏惡意代碼。最近發生的斯諾登事件,就揭示了這一類的風險。采用開源軟件可以完全規避這一類的風險,因為每一行代碼都被晾曬在陽光之下。
      10. 5. 可靠性和穩定性
      11. 自由/開源軟件因為它們的可靠性和穩定性而聞名。業界已經有許多自由/開源軟件服務器不需維護連續運行數年的故事。但是,定量研究相對而言更加困難。以下介紹兩個近年進行的研究:
        1999年 ZDnet 進行的為期10個月的穩定性測試比較了 Red Hat Linux,Caldera Systems OpenLinux 和微軟的 Windows NT 4.0 SP3 服務器版。三個系統都在同樣的硬件上運行了打印、web 服務和文件服務功能。結果是 Windows NT 每6星期就崩潰一次,而自由/開源軟件在10個月中沒有一次崩潰。
        一項使用隨機方法的壓力測試在1995年測試了7種商業系統和 GNU/Linux 系統。測試中模擬來自錯誤數據或惡意用戶輸入的隨機字符被發送到這些系統。結果是商業系統的平均失效率達到23%,而 Linux 失效率為9%。GNU 軟件(FSF 下屬的 GNU 工程生產的軟件)失效的時間只占全部時間的6%。數年后的跟蹤研究發現測試中暴露的漏洞在自由/開源軟件系統中得到了修補,但在私有軟件中都完全沒有改變。
        開源軟件被廣泛采納是因為它質量可靠、彈性大、適應性也更強。例如電信和金融部門大規模采用Linux和其它開源解決方案是由于它們的性價比遠遠超過了Unix和Windows。所有的主要硬件、移動電話和芯片制造商們都正在GPL許可及其延展協議下貢獻自己的想法和軟件,并且還積極參與自由軟件項目。
        開源和自由軟件的分布式開發性質幫助軟件在開發和維護的過程中保持了良好的習慣,還有一些軟件開發的基本規則:透明、簡潔、模塊化和便攜性。良好的開發習慣產生好的軟件,而良好的軟件能隨著時間而獲得更低的成本。遵循規范的開源項目提高了效率,減少了商業開發模式下幾乎不可避免的代碼重復問題。
        閉源軟件的質量通常與軟件公司的開發人員水平息息相關,開發人員的水平通常參差不齊,因此閉源軟件的質量通常也是參差不齊,而開源軟件通常是由社區中的技術高手在維護,有時用戶自身也可以參與維護,并且開源軟件的用戶較多,軟件存在的bug一般都會被及時發現和修補,產品質量更加可靠。
      12. 6. 增強自身軟件能力
      13. 人們發現經濟體內自由/開源軟件開發者的增長與創造能力(軟件)成正相關關系。國際信息經濟研究所的一份報告列出了這個現象的三個原因:
        • 易于參與:自由/開源軟件鼓勵自由的修改和發布,容易獲得、使用和學習。私有軟件則有許多限制,不僅源代碼的獲取受限,還有授權、專利和版權的限制。自由/開源軟件很象基礎研究,允許開發者利用已有的知識和組件生產軟件。
        • 自由/開源軟件可作為理想的培訓系統:自由/開源軟件開發和協作的特性讓學生能夠考察軟件概念并進行實驗,而不會對社會造成影響。類似地,學生也可以加入全球性的自由/開源軟件合作開發網絡,利用其中的大量技術信息和交互式的討論工具。
        • 作為標準來源的自由/開源軟件:自由/開源軟件常常由于其在某一特定行業部門中的主導地位而成為事實上的標準。地區通過參與制定某一特定自由/開源軟件應用的標準,可以確保產生的標準符合地區的需要和文化考量。
        自由/開源軟件的開發方式不僅極大地促進了創新,也有利于創新成果的傳播。一份微軟的內部備忘錄寫到,“基于 Linux 的研究/教學項目由于 Linux 源代碼隨處可以獲取而很容易傳播。特別是新的研究想法都先被在 Linux 上實現和發布,然后才在其他平臺上被整合或發布。”
      14. 7. 人才隊伍建設
      15. 由于開源軟件在世界上被廣泛采用,因此更容易招聘到相關人才。因為軟件是開源的,下載和安裝沒有受到任何法律限制,因此容易吸引到大量的開發者。商業軟件除了少數廣泛應用的(Windows、Oracle等)之外,由于版權限制等問題,很少有人有機會使用到,因此,精通商業軟件的人往往很少。所以,如果企業采用開源軟件,容易招聘到大量的人才;而采用商業軟件,就很難招聘得到相關人才。

        (二)劣勢

        從企業用戶角度,使用開源軟件的缺點或擔憂主要在于:服務支持、保證以及知識產權問題。
      16. 1. 技術支持不足
      17. 首要的問題是支持和服務:當企業從Oracle、SAP等專有軟件廠商那里購買軟件時,它們知道就該軟件今后應當向誰尋求幫助;而一旦采用開源軟件,它們往往不知道自己該向誰求助 。開源軟件的支持和維護往往依賴于其背后大規模的開源代碼社區 ,缺乏正式的服務支持和保證是可以理解的擔憂 。開源軟件的“低成本”優勢因而受到了質疑:某些低廉的前期費用往往可能導致較高的后期維護等費用 ;整體IT架構向開源軟件移植的成本也不容忽視 。
        首要的問題是支持和服務:當企業從Oracle、SAP等專有軟件廠商那里購買軟件時,它們知道就該軟件今后應當向誰尋求幫助;而一旦采用開源軟件,它們往往不知道自己該向誰求助 。開源軟件的支持和維護往往依賴于其背后大規模的開源代碼社區 ,缺乏正式的服務支持和保證是可以理解的擔憂 。開源軟件的“低成本”優勢因而受到了質疑:某些低廉的前期費用往往可能導致較高的后期維護等費用 ;整體IT架構向開源軟件移植的成本也不容忽視 。
        對于這個問題,開源廠商和開元社區已經有一些應對之道。首先,象Redhat、Ubuntu等開源軟件廠商都對軟件提供了技術支持,而且其服務價格與商業軟件相比十分低廉。其次,廣為采用的開源軟件都有非常活躍的社區,有大量的開發人員愿意在社區里貢獻自己的技巧和經驗,并為其他人解答問題。因此,遇到問題之后通過互聯網在社區里查找解決方案或者提問,往往可以非常快速就解決了技術問題。
      18. 2. 易用性不夠
      19. 易用性問題是開源軟件的常見問題。傳統上,商業軟件非常關注易用性問題,提供了更好的用戶體驗。而開源軟件更關注技術核心的開發,對易用性嚴重關注不足。很多開源軟件只提供了相對簡陋的用戶界面,甚至根本不會開發用戶界面。這個問題暫時沒有通用的解決方案。如果易用性是個問題,一般只能由企業自行組織技術力量去開發。
      20. 3. 沒有形成上下游的生態系統
      21. 商業軟件巨頭如IBM、Oracle、Microsoft等等,他們開發的軟件都不是孤立的,其產品往往形成一個完善的軟件棧,一個完整的軟件生態系統。如果企業采用了同一家供應商的多個產品,這些軟件產品之間的互操作性非常好,不會有方鑿圓枘的問題。而開源軟件廠商,除了少數比較成功的之外(Redhat、Spring等),基本上都沒有力量去開發一個完善的軟件棧,其產品都是獨立的。要組合多個不同來源的開源軟件組合成一個軟件棧,往往面臨很多需要磨合的問題。好的一面是,開源軟件認識到了這個問題,現在很多開源軟件都是面向標準、面向規范設計和編寫,例如ActiveMQ遵循JMS規范,Hibernate遵循JPA規范,Spring和Guice遵循JSR 330規范,因此,相互之間的配合不再存在問題。

        (三)機遇

        開源化給企業帶來不可想象的發展機遇。
      22. 1. 開源驅動業務創新
      23. 企業IT開源化可以驅動業務創新。通過采用開源軟件,企業牢牢地把握了IT建設的主動權,不再受商業軟件廠商的限制。如果采用商業軟件,我們不能對它進行任何修改,以適應我們的商業環境,與其他軟件配合無間。受制于商業軟件,我們無法按照自己的意志行動。而采用開源軟件,一切都有了可能。任何新想法都可以選用開源軟件快速實現,如果現有的開源軟件不能完全滿足需求,我們可以隨意對其進行改造。根據企業IT戰略進行創新是輕而易舉的事情。
      24. 2. 開源加快業務響應速度
      25. 同樣,因為通過采用開源軟件,我們有了IT自主權,就可以快速響應業務需求的變化,即時對軟件作出調整。如果采用商業軟件,我們無法獲得這樣的快速響應能力。商業軟件廠商不會為個別用戶對軟件作出修改,即使承諾修改也是遙遙無期的。而商機瞬息萬變,時間就是金錢,不能快速響應變化的企業將面臨被淘汰的命運。采用開源軟件,我們不僅能夠隨意行動,還能隨時行動。
      26. 3. 打造企業自己的軟件生態系統
      27. 采購商業軟件的另一個風險是:除非企業中所有的軟件都是從同一個廠商手中購買,否則所有的軟件都是“煙囪系統”——每個軟件系統都是從底層到頂層的全棧實現,而軟件系統之間沒有任何溝通和協作。這造成了兩個嚴重的問題:一個問題是所有的軟件都要分別實現本該共用的底層機制,現在用戶要分別操作實現(想象這樣一個問題:一個員工調動或離職,必須分別在HRM、CRM、OA等系統中分別操作一遍,既導致大量重復勞動,如果某些系統忘記聯動,還會引入不一致性和安全性問題)。另一個問題是:軟件系統之間無法聯動,通過相互協作以實現高層業務目標。通過采用開源軟件構建企業自己的IT系統,企業可以打造自己的IT基礎組件,所有應用系統都在這些基礎組件之上組建,共享相同的數據和事件源,應用系統之間也可以相互協作,以共同實現企業的業務目標。采用開源軟件組建企業IT系統,所有軟件系統形成一個整體,一個有機的生態系統,為企業的戰略目標服務。

        (四)風險

        不可諱言,企業采用IT開源化也有一定的風險。略舉如下:
      28. 1. 開源要求更高水平的IT人才隊伍
      29. 如果采用商業軟件,企業的IT開發和維護大部分可以仰賴軟件供應商,那么就不需要保持很強的軟件開發和運行維護人才團隊,因而可以削減人員規模,節約成本。而采用開源軟件,軟件開發和維護主要靠自己,需要投入很多高水平的技術人員。技術問題需要自力更生,出現問題需要自行解決。如果沒有這樣一支人才隊伍,就會面臨IT系統崩潰失修的危險。
      30. 2. 法律風險
      31. 采用開源軟件要特別注意版權問題。例如,有些開源軟件只對個人或非營利組織免費,而對商業機構收費。另外,GPL協議要求一旦采用其軟件,則自己的軟件也必須開源免費。如果不注意這些協議,就可能違反法律,或被迫公開自己原本不想公開的源代碼。

        開源改變IT生態環境

        企業如何通過開源化降低采購成本,增強自主能力,提高創新能力,快速響應變化?——使用開源軟件替代商業軟件。

        一、基礎設施開源化

        軟件基礎設施主要是指三大件:操作系統、中間件(應用服務器)和數據庫。與商業軟件相比,這三大件方面都已經有非常成熟的開源產品,在互聯網和企業市場都已經久經考驗,完全可以替代現有的商業產品。
        (一)操作系統:Redhat Enterprise Linux
        RHEL是目前Linux服務器產品的標桿,在國內和國際上都占據著主要的Linux服務器市場份額。RHEL產品功能全面,產品認證齊全,用戶的接受度比較高。在服務器操作系統市場中,Linux占有約35%的市場份額,其中紅帽Linux在該35%開源市場中占有率超過85%。
        Red Hat于2010年11月11日發布Enterprise Linux 6正式版,包含更強大的可伸縮性和虛擬化特性,并全面改進系統資源分配和節能。從理論上講,RHEL可以在一個單系統中使用64000顆核心。除了更好的多核心支持,RHEL 6還繼承了RHEL 5.5版本中對新型芯片架構的支持,其中包括英特爾的Xeon 5600 和7500,以及IBM的Power7。新版帶來了一個完全重寫的進程調度器和一個全新的多處理器鎖定機制,并利用NVIDIA圖形處理器的優勢對GNOME和KDE做了重大升級,新的系統安全 服務守護程序(SSSD)功能允許集中身份管理,而SELinux的沙盒功能允許管理員更好地處理不受信任的內容。RHEL 6內置的新組件有GCC 4.4(包括向下兼容RHEL 4和5組件)、OpenJDK 6、Tomcat 6、Ruby 1.8.7和Rails 3、PHP 5.3.2與Perl 5.10.1,數據庫前端有PostgreSQL 8.4.4, MySQL 5.1.47和SQLite 3.6.20。
        RHEL的主要的功能包括:
        1. 虛擬化技術
        • 在各種平臺上支持虛擬化技術;
        • 在Red Hat Enterprise Linux Advanced Platform支持存儲與擴展的服務器虛擬化技術;
        • Red Hat Network提供各種虛擬化系統的支持;
        • virt-manager, libvirt/virsh管理工具;
        2. 內核與性能
        • 基于Linux 2.6.18內核;
        • 支持多核處理器;
        • 廣泛的新硬件支持;
        • 更新的基于Kexec/Kdump的Dump支持;
        • 支持Intel Network Accelerator Technology (IOAT;)
        • 對于大型SMP系統技持的增強;
        • 增強的管道緩存;
        • 內核緩存接合能力用于改進IO緩存操作;
        3. 安全
        • SELinux增強;
        • 圖形化SELinux管理界面;
        • 集成的目錄和安全機制;
        • 新的審計機制用于提供新的搜索、報表和實時監控的能力;
        4. 網絡與互操作性
        • 支持Autofs, FS-Cache和iSCSI;
        • 增強的IPv6支持;
        • 改進的Microsoft ® 文件/打印和Active Directory集成;
        5. 桌面
        • 更新的管理工具、應用程序和對筆記本的支持;
        • 改進的ACPI支持,包括Suspend to Disk;
        • 智能卡登錄,包括PKI/Kerberos認證;
        • 集成的多媒體支持;
        • 增強的即插即用支持;
        • Network Manager提供自動的有線和無線網絡配置;
        • 基于AIGLX/Compiz的圖形化界面(支持淡化、透明等效果;)
        6. 開發環境
        • 增強的開發工具,包括System Tap和Frysk;
        • GCC4.1和glibc 2.5工具鏈;
        7. 存儲
        • 支持根設置多路IO(MPIO),提高可用性;
        • 服務器產品中包含單系統/客戶的Red Hat Global File System支持;
        • 塊設備數據加密支持;
        8. 管理
        • 安裝過程更新簡化系統配;
        • 基于Yum/Pup的Red Hat Network更新;
        • Conga集群和存儲管理;
        (二)Java應用服務器: JBoss和Tomcat
      32. 1. JBoss
      33. 開源Java應用服務器中,JBoss是第一個開源的應用服務器,完全符合JavaEE規范。在應用服務器市場中,JBoss占有超過30%的市場份額。
        在J2EE應用服務器領域,JBoss是發展最為迅速的應用服務器。由于JBoss遵循商業友好的LGPL授權分發,并且由開源社區開發,這使得JBoss廣為流行。
        JBoss的優點包括:
        • (1) JBoss是免費的,開放源代碼JavaEE的實現,通過LGPL許可證進行發布。但同時也有閉源的,開源和閉源流入流出的不是同一途徑;
        • (2) JBoss需要的內存和硬盤空間比較小;
        • (3) 安裝便捷:解壓后,只需配置一些環境變量即可;
        • (4) JBoss支持"熱部署",部署BEAN時,只拷貝BEAN的JAR文件到部署路徑下即可自動加載它;如果有改動,也會自動更新;
        • (5) JBoss與Web服務器在同一個Java虛擬機中運行,Servlet調用EJB不經過網絡,從而大大提高運行效率,提升安全性能;
        • (6) 用戶可以直接實施J2EE-EAR,而不是以前分別實施EJB-JAR和Web-WAR,非常方便;
        • (7) JBoss支持集群;
        另外,JBoss應用服務器還具有許多優秀的特質。
        • 其一,它將具有革命性的JMX微內核服務作為其總線結構;
        • 其二,它本身就是面向服務的架構(Service-Oriented Architecture,SOA);
        • 其三,它還具有統一的類裝載器,從而能夠實現應用的熱部署和熱卸載能力;
        因此,它是高度模塊化的和松耦合的。JBoss用戶的積極反饋告訴我們,JBoss應用服務器是健壯的、高質量的,而且還具有良好的性能。
        為滿足企業級市場日益增長的需求,JBoss公司從2003年開始就推出了24*7、專業級產品支持服務。同時,為拓展JBoss的企業級市場,JBoss公司還簽訂了許多渠道合作伙伴。比如,JBoss公司同HP、Novell、Computer Associates、Unisys等都是合作伙伴。
        在2004年 6月,JBoss公司宣布,JBoss應用服務器通過了Sun公司的J2EE認證。這是JBoss應用服務器發展史上至今為止最重要的里程碑。與此同時, JBoss一直在緊跟最新的J2EE規范,而且在某些技術領域引領J2EE規范的開發。JBoss公司一直在積極參與EJB 3.0規范的制定,并且在為EJB規范的發展貢獻自己的力量。其中,Gavin King(Hibernate[1]的創立者)和Bill Burke(JBoss公司的首席架構師)已經為EJB 3.0規范貢獻了很多內容。因此,無論在商業領域,還是在開源社區,JBoss成為了第一個通過J2EE 1.4認證的主流應用服務器。JBoss應用服務器已經真正發展成具有企業強度(即,支持關鍵級任務的應用)的應用服務器。
      34. 2. Tomcat
      35. 如果是基于POJO編程,只需要Web容器,不需要EJB,那么可以采用Apache Tomcat作為Java Web容器。
        Tomcat是Apache 軟件基金會(Apache Software Foundation)的Jakarta 項目中的一個核心項目,由Apache、Sun 和其他一些公司及個人共同開發而成。由于有了Sun 的參與和支持,最新的Servlet 和JSP 規范總是能在Tomcat 中得到體現,Tomcat7 支持最新的Servlet 3.0 和JSP 2.1 規范。因為Tomcat 技術先進、性能穩定,而且免費,因而深受Java 愛好者的喜愛并得到了部分軟件開發商的認可,成為目前比較流行的Web 應用服務器。目前最新版本是8.0。

        (三)數據庫:MySQL和PostgreSQL

        在開源數據庫中,得到最廣泛采用的數據庫有MySQL和PostgreSQL。
      36. 1. MySQL
      37. MySQL是一個開放源碼的關系數據庫管理系統,開發者為瑞典MySQL AB公司。MySQL被廣泛地應用在Internet上的網站中。由于其體積小、速度快、總體擁有成本低,尤其是開放源碼這一特點,許多網站和企業應用為了降低網站總體擁有成本而選擇了MySQL作為網站數據庫。
        2008年1月16號MySQL AB被Sun公司收購。而2009年,SUN又被Oracle收購。就這樣如同一個輪回,MySQL成為了Oracle公司的另一個數據庫項目。
        MySQL的系統特性有:
        • 1.使用C和C++編寫,并使用了多種編譯器進行測試,保證源代碼的可移植性;
        • 2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多種操作系統;
        • 3.為多種編程語言提供了API,這些編程語言包括C、C++、Python、Java、Perl、PHP、 Eiffel、Ruby和Tcl等;
        • 4.支持多線程,充分利用CPU資源;
        • 5.優化的SQL查詢算法,有效地提高查詢速度;
        • 6. 既能夠作為一個單獨的應用程序應用在客戶端服務器網絡環境中,也能夠作為一個庫而嵌入到其他的軟件中;
        • 7.提供多語言支持,常見的編碼如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作數據表名和數據列名;
        • 8.提供TCP/IP、ODBC和JDBC等多種數據庫連接途徑;
        • 9.提供用于管理、檢查、優化數據庫操作的管理工具;
        • 10.支持大型的數據庫,可以處理擁有上千萬條記錄的大型數據庫;
        • 11.支持多種存儲引擎,InnoDB是事務型數據庫的首選引擎,支持ACID事務,支持行級鎖定, MySQL 5.5起成為默認數據庫引擎;
        • 12.支持三種應用架構:單點(Single),適合小規模應用;復制(Replication),適合中小規模應用;集群(Cluster),適合大規模應用;
      38. 2. PostgreSQL
      39. PostgreSQL是另一種得到廣泛應用的開源關系數據庫管理系統。PostgreSQL是以加州大學伯克利分校計算機系開發的 POSTGRES,現在已經更名為POSTGRES,版本 4.2為基礎的對象關系型數據庫管理系統(ORDBMS)。PostgreSQL支持大部分 SQL標準并且提供了許多其他現代特性:復雜查詢、外鍵、觸發器、視圖、事務完整性、MVCC。同樣,PostgreSQL 可以用許多方法擴展,比如, 通過增加新的數據類型、函數、操作符、聚集函數、索引方法、過程語言。并且,因為許可證的靈活,任何人都可以以任何目的免費使用、修改、和分發 PostgreSQL,不管是私用、商用、還是學術研究使用。
        POSTGRES 已經在許多研究或實際的應用中得到了應用。 這些應用包括: 一個財務數據分析系統,一個噴氣引擎性能監控軟件包,一個小行星跟蹤數據庫, 一個醫療信息數據庫和一些地理信息系統。 POSTGRES 還被許多大學用于教學用途。 Illustra Information Technologies Illustra Information Technologies (并入 Informix) 拿到代碼并使之商業化。在 1992 年 POSTGRES 成為 Sequoia 2000 科學計算計劃的首要數據管理器。
        (1) 優點
        事實上, PostgreSQL 的特性覆蓋了 SQL-2/SQL-92 和 SQL-3/SQL-99,首先,它包括了可以說是目前世界上最豐富的數據類型的支持,其中有些數據類型可以說連商業數據庫都不具備, 比如 IP 類型和幾何類型等;其次,PostgreSQL 是全功能的自由軟件數據庫,很長時間以來,PostgreSQL 是唯一支持事務、子查詢、多版本并行控制系統(MVCC)、數據完整性檢查等特性的唯一的一種自由軟件的數據庫管理系統。 Inprise 的 InterBase 以及SAP等廠商將其原先專有軟件開放為自由軟件之后才打破了這個唯一。最后,PostgreSQL擁有一支非常活躍的開發隊伍,而且在許多黑客的努力下,PostgreSQL 的質量日益提高。
        從技術角度來講,PostgreSQL 采用的是比較經典的C/S(client/server)結構,也就是一個客戶端對應一個服務器端守護進程的模式,這個守護進程分析客戶端來的查詢請求,生成規劃樹,進行數據檢索并最終把結果格式化輸出后返回給客戶端。為了便于客戶端的程序的編寫,由數據庫服務器提供了統一的客戶端 C 接口。而不同的客戶端接口都是源自這個 C 接口,比如ODBC,JDBC,Python,Perl,Tcl,C/C++,ESQL等, 同時也要指出的是,PostgreSQL 對接口的支持也是非常豐富的,幾乎支持所有類型的數據庫客戶端接口。這一點也可以說是 PostgreSQL 一大優點。
        (2) 缺點
        從Postgres 開始,PostgreSQL 就經受了多次變化。
        首先,早期的 PostgreSQL 繼承了幾乎所有 Ingres, Postgres, Postgres95 的問題:過于學院味,因為首先它的目的是數據庫研究,因此不論在穩定性, 性能還是使用方方面面,長期以來一直沒有得到重視,直到 PostgreSQL 項目開始以后,情況才越來越好,PostgreSQL 已經完全可以勝任任何中上規模范圍內的應用范圍的業務。目前有報道的生產數據庫的大小已經有 TB 級的數據量,已經逼近 32 位計算的極限。不過學院味也給 PostgreSQL 帶來一個意想不到的好處:大概因為各大學的軟硬件環境差異太大的緣故,它是目前支持平臺最多的數據庫管理系統的一種,所支持的平臺多達十幾種,包括不同的系統,不同的硬件體系。至今,它仍然保持著支持平臺最多的數據庫管理系統的稱號。
        其次,PostgreSQL 的確還欠缺一些比較高端的數據庫管理系統需要的特性,比如數據庫集群,更優良的管理工具和更加自動化的系統優化功能 等提高數據庫性能的機制等。

        (四)Web服務器:Apache和nginx

      40. 1. Apache
      41. Apache HTTP Server(簡稱Apache)是Apache軟件基金會的一個開放源碼的Web服務器,可以在大多數計算機操作系統中運行,由于其多平臺和安全性被廣泛使用,是最流行的Web服務器端軟件之一。它快速、可靠并且可通過簡單的API擴展,將Perl/Python等解釋器編譯到服務器中。
        Apache http server是世界使用排名第一的Web服務器軟件,占有約60%的市場份額。它可以運行在幾乎所有廣泛使用的計算機平臺上。Apache源于NCSA httpd服務器,經過多次修改,成為世界上最流行的Web服務器軟件之一。Apache的特點是簡單、速度快、性能穩定,并可做代理服務器來使用。
        Apache web服務器軟件擁有以下特性:
        • 支持最新的HTTP/1.1通信協議;
        • 擁有簡單而強有力的基于文件的配置過程;
        • 支持通用網關接口;
        • 支持基于IP和基于域名的虛擬主機;
        • 支持多種方式的HTTP認證;
        • 支持多種方式的HTTP認證;
        • 集成代理服務器模塊;
        • 支持實時監視服務器狀態和定制服務器日志;
        • 支持服務器端包含指令(SSI;)
        • 支持安全Socket層(SSL;)
        • 提供用戶會話過程的跟蹤;
        • 支持FastCGI;
        • 通過第三方模塊可以支持Java Servlets;
      42. 2. Nginx
      43. 另一個得到廣泛采用的Web服務器是nginx。Nginx是一款輕量級的Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,并在一個BSD-like 協議下發行。由俄羅斯的程序設計師Igor Sysoev所開發,供俄國大型的入口網站及搜索引擎Rambler使用。其特點是占有內存少,并發能力強,事實上nginx的并發能力確實在同類型的網頁服務器中表現較好,中國大陸使用nginx網站用戶有:新浪、網易、 騰訊等。

        (五)云計算:OpenStack

        OpenStack是一個美國國家航空航天局和Rackspace合作研發的,以Apache許可證授權,并且是一個自由軟件和開放源代碼項目。OpenStack是一個云平臺管理的項目,它不是一個軟件。這個項目由幾個主要的組件組合起來完成一些具體的工作。
        OpenStack是一個旨在為公共及私有云的建設與管理提供軟件的開源項目。它的社區擁有超過130家企業及1350位開發者,這些機構與個人都將OpenStack作為基礎設施即服務(簡稱IaaS)資源的通用前端。OpenStack項目的首要任務是簡化云的部署過程并為其帶來良好的可擴展性。本文希望通過提供必要的指導信息,幫助大家利用OpenStack前端來設置及管理自己的公共云或私有云。
        OpenStack 是由 Rackspace 和 NASA 共同開發的云計算平臺,幫助服務商和企業內部實現類似于 Amazon EC2 和 S3 的云基礎架構服務(Infrastructure as a Service, IaaS)。OpenStack 包含兩個主要模塊:Nova 和 Swift,前者是 NASA 開發的虛擬服務器部署和業務計算模塊;后者是 Rackspace開發的分布式云存儲模塊,兩者可以一起用,也可以分開單獨用。OpenStack 是開源項目,除了有 Rackspace 和 NASA 的大力支持外,后面還有包括 Dell、Citrix、 Cisco、 Canonical 這些重量級公司的貢獻和支持,發展速度非常快,有取代另一個業界領先開源云平臺 Eucalyptus 的態勢。
        廠商支持:
        • 美國國家航空航天局的Nebula運算平臺;
        • 現時已表示支持OpenStack項目的大型硬件廠商包括:AMD、Intel和戴爾等;
        • 微軟在2010年10月表示支持OpenStack與Windows Server 2008 R2的整合;
        • 2011年2月,思科系統正式加入OpenStack項目,重點研制OpenStack的網絡服務;
        • Ubuntu未來在堆棧方面的云網絡化方案;
        • 2012年4月,IBM宣布加入OpenStack項目,并作為主要贊助商;
        • 2012年10月,Viacloud互聯云平臺加入OpenStack項目,研制OpenStack公有云平臺和私有云平臺;

        二、基礎架構開源化

        企業IT開源化的另一個主要的方面是企業基礎架構組件的開源化,也就是選用各種開源的基礎架構組件來搭建企業IT架構。

        (一)負載均衡:LVS

        LVS是Linux Virtual Server的簡寫,意即Linux虛擬服務器,是一個虛擬的服務器集群系統。本項目在1998年5月由章文嵩博士成立,是中國國內最早出現的自由軟件項目之一。
        LVS的宗旨是:
        • 使用集群技術和Linux操作系統實現一個高性能、高可用的服務器;
        • 很好的可伸縮性(Scalability);
        • 很好的可靠性(Reliability);
        • 很好的可管理性(Manageability);
        LVS集群采用IP負載均衡技術和基于內容請求分發技術。調度器具有很好的吞吐率,將請求均衡地轉移到不同的服務器上執行,且調度器自動屏蔽掉服務器的故障,從而將一組服務器構成一個高性能的、高可用的虛擬服務器。整個服務器集群的結構對客戶是透明的,而且無需修改客戶端和服務器端的程序。

        (二)消息中間件:ActiveMQ

        ActiveMQ 是Apache出品,最流行的,能力強勁的開源消息總線。ActiveMQ 是一個完全支持JMS1.1規范的 JMS Provider實現。使用ActiveMQ作為默認JMS Provider的開源項目有ServiceMix、Geronimo等。
        ActiveMQ有如下的特性:
        • 多種語言和協議編寫客戶端,語言: Java、C、C++、C#、Ruby、Perl、Python、PHP,應用協議:OpenWire、Stomp REST、WS Notification、XMPP、AMQP;
        • 完全支持 JMS1.1 和 JavaEE 6 規范(持久化,XA消息,事務);
        • 對Spring的支持,ActiveMQ 可以很容易內嵌到使用Spring的系統里面去,而且也支持Spring 3.0的特性;
        • 通過了常見JavaEE服務器(如 Geronimo,JBoss,GlassFish,WebLogic)的測試,其中通過JCA 1.5 resource adaptors的配置,可以讓ActiveMQ可以自動的部署到任何兼容JavaEE商業服務器上;
        • 支持多種傳送協議:in-VM、TCP、SSL、NIO、UDP、JGroups、JXTA;
        • 支持通過JDBC和journal提供高速的消息持久化;
        • 從設計上保證了高性能的集群,客戶端-服務器,點對點;
        • 支持Ajax;
        • 支持與Axis的整合;
        • 可以很容易得調用內嵌JMS provider,進行測試;

        (三)規則引擎:Drools

        規則引擎由推理引擎發展而來,是一種嵌入在應用程序中的組件,實現了將業務決策從應用程序代碼中分離出來,并使用預定義的語義模塊編寫業務決策。接受數據輸入,解釋業務規則,并根據業務規則做出業務決策。
        應用背景: 企業級管理者對企業IT系統的開發有著如下的要求:
        • 為提高效率,管理流程必須自動化,即使現代商業規則異常復雜;
        • 市場要求業務規則經常變化,IT系統必須依據業務規則的變化快速、低成本的更新;
        • 為了快速、低成本的更新,業務人員應能直接管理IT系統中的規則,不需要程序開發人員參與;
        使用規則引擎可以通過降低實現復雜業務邏輯的組件的復雜性,降低應用程序的維護和可擴展性成本,其優點如下:
        • 分離商業決策者的商業決策邏輯和應用開發者的技術決策;
        • 能有效的提高實現復雜邏輯的代碼的可維護性;
        • 在開發期間或部署后修復代碼缺陷;
        • 應付特殊狀況,即客戶一開始沒有提到要將業務邏輯考慮在內;
        • 符合組織對敏捷或迭代開發過程的使用;
        規則引擎是基于規則的專家系統的核心部分,主要由三部分組成:規則庫(Knowledge base)、事實(Fact base)和推理機。規則引擎根據既定事實和知識庫按照一定的算法執行推理邏輯得到正確的結果。
        Drools 是用 Java 語言編寫的開放源碼規則引擎,使用 Rete 算法對所編寫的規則求值。Drools 允許使用聲明方式表達業務邏輯。可以使用非 XML 的本地語言編寫規則,從而便于學習和理解。并且,還可以將 Java 代碼直接嵌入到規則文件中,這令 Drools 的學習更加吸引人。Drools 還具有其他優點:
        • 非常活躍的社區支持;
        • 易用;
        • 快速的執行速度;
        • 在 Java 開發人員中流行;
        • 與 Java Rule Engine API(JSR 94)兼容;

        (四)業務流程引擎:jBPM和Activiti

        所謂工作流引擎是指workflow作為應用系統的一部分,并為之提供對各應用系統有決定作用的根據角色、分工和條件的不同決定信息傳遞路由、內容等級等核心解決方案。
        JBPM是Redhat開發的基于Java的最流行的開源業務流程引擎。從JBPM 4之后,其創始人Tom Baeyens離開了Redhat,另外創立了Activiti,繼續延續JBPM4的技術路線。而JBPM 5則完全放棄了JBPM 4的基礎代碼,基于Drools Flow重頭來過。
        除了基本的流程功能之外,JBPM 5和Activiti都實現了如下特性:
        • 遵循BPMN 2.0流程定義語言規則;
        • 提供基于瀏覽器的流程設計器和表單設計器;
        • 使用Java語言和動態腳本語言進行功能擴展;
        • 易于與規則引擎和事件處理引擎集成;
        • Web管理控制臺;
        • 強大的擴展機制,可以通過擴展實現中國特色的工作流,例如會簽、傳閱、退回、撤回、自由流等等;

        (五)分布式緩存:memcached和Redis

      44. 1. memcached
      45. memcached 是以LiveJournal 旗下Danga Interactive 公司的Brad Fitzpatric 為首開發的一款緩存軟件,已成為mixi、hatena、Facebook、Vox、LiveJournal等眾多服務中提高Web應用擴展性的重要因素。這是一套開放源代碼軟件,以BSD license授權發布。
        memcached是高性能的分布式內存緩存服務器。一般的使用目的是,通過緩存數據庫查詢結果,減少數據庫訪問次數,以提高動態Web應用的速度、提高可擴展性。
        Memcached 的守護進程(daemon )是用C寫的,但是客戶端可以用任何語言來編寫,并通過memcached協議與守護進程通信。但是它并不提供冗余(例如,復制其hashmap條目);當某個服務器S停止運行或崩潰了,所有存放在S上的鍵/值對都將丟失。
      46. 2. Redis
      47. Redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對更多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hashs(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎上實現了master-slave(主從)同步。
        Redis 是一個高性能的key-value數據庫。 redis的出現,很大程度補償了memcached這類key/value存儲的不足,在部 分場合可以對關系數據庫起到很好的補充作用。它提供了Python,Ruby,Erlang,PHP客戶端,使用很方便。

        (六)分布式計算:Hadoop

        Hadoop由 Apache Software Foundation 公司于 2005 年秋天作為Lucene的子項目Nutch的一部分正式引入。它受到最先由 Google Lab 開發的 Map/Reduce 和 Google File System(GFS) 的啟發。2006 年 3 月份,Map/Reduce 和 Nutch Distributed File System (NDFS) 分別被納入稱為 Hadoop 的項目中。
        Hadoop是一個能夠對大量數據進行分布式處理的軟件框架。但是 Hadoop 是以一種可靠、高效、可伸縮的方式進行處理的。Hadoop 是可靠的,因為它假設計算元素和存儲會失敗,因此它維護多個工作數據副本,確保能夠針對失敗的節點重新分布處理。Hadoop 是高效的,因為它以并行的方式工作,通過并行處理加快處理速度。Hadoop 還是可伸縮的,能夠處理 PB 級數據。此外,Hadoop 依賴于社區服務器,因此它的成本比較低,任何人都可以使用。
        Hadoop是一個能夠讓用戶輕松架構和使用的分布式計算平臺。用戶可以輕松地在Hadoop上開發和運行處理海量數據的應用程序。它主要有以下幾個優點:
        • 高可靠性。Hadoop按位存儲和處理數據的能力值得人們信賴;
        • 高擴展性。Hadoop是在可用的計算機集群間分配數據并完成計算任務的,這些集簇可以方便地擴展到數以千計的節點中;
        • 高效性。Hadoop能夠在節點之間動態地移動數據,并保證各個節點的動態平衡,因此處理速度非常快;
        • 高容錯性。Hadoop能夠自動保存數據的多個副本,并且能夠自動將失敗的任務重新分配;
        Hadoop帶有用Java語言編寫的框架,因此運行在 Linux 生產平臺上是非常理想的。Hadoop 上的應用程序也可以使用其他語言編寫,比如 C++。

        (七)分布式存儲:HDFS

        Hadoop Distributed File System,簡稱HDFS,是一個分布式文件系統。HDFS有著高容錯性的特點,并且設計用來部署在低廉的硬件上。而且它提供高吞吐量來訪問應用程序的數據,適合那些有著超大數據集的應用程序。HDFS放寬了POSIX的要求,從而這樣可以實現流式訪問文件系統中的數據。HDFS開始是為開源的apache項目nutch的基礎結構而創建,是Hadoop項目的一部分,也可以獨立使用。
        Hadoop HDFS分布式文件系統具有如下特點:
        • 非常適合PB級以上海量數據的存儲和處理,已在Yahoo、亞馬遜、Facebook、百度、淘寶等海量數據處理平臺上得到了廣泛驗證;
        • 系統擴展性高,只需要簡單添加服務器數量,即可實現存儲容量和計算能力的線性增長;
        • 數據冗余度高,缺省每份數據在3臺服務器上保留副本;
        • 適合流式訪問(Streaming access),即一次寫入,多次讀取,數據寫入后極少修改;
        • 除了數據存儲能力外,與HDFS共生的MapReduce分布式計算框架大大簡化了分布式計算程序的編程難度,可快速編寫分布式計算程序,充分利用各存儲節點的CPU計算資源;

        (八)NoSQL數據庫:MongoDB

        MongoDB是一個基于分布式文件存儲的數據庫。由C++語言編寫,旨在為WEB應用提供可擴展的高性能數據存儲解決方案。
        MongoDB是一個介于關系數據庫和非關系數據庫之間的產品,是非關系數據庫當中功能最豐富,最像關系數據庫的。他支持的數據結構非常松散,是類似json的bson格式,因此可以存儲比較復雜的數據類型。Mongo最大的特點是他支持的查詢語言非常強大,其語法有點類似于面向對象的查詢語言,幾乎可以實現類似關系數據庫單表查詢的絕大部分功能,而且還支持對數據建立索引。
        它的特點是高性能、易部署、易使用,存儲數據非常方便。主要功能特性有:
        • 面向集合存儲,易存儲對象類型的數據。所謂“面向集合”(Collection-Oriented),意思是數據被分組存儲在數據集中,被稱為一個集合(Collection)。每個集合在數據庫中都有一個唯一的標識名,并且可以包含無限數目的文檔。集合的概念類似關系型數據庫(RDBMS)里的表(table),不同的是它不需要定義任何模式(schema);
        • 模式自由。模式自由(schema-free),意味著對于存儲在mongodb數據庫中的文件,我們不需要知道它的任何結構定義。如果需要的話,你完全可以把不同結構的文件存儲在同一個數據庫里;
        • 支持動態查詢;
        • 支持完全索引,包含內部對象;
        • 支持查詢;
        • 支持復制和故障恢復;
        • 使用高效的二進制數據存儲,包括大型對象(如視頻等);
        • 自動處理碎片,以支持云計算層次的擴展性;
        • 支持RUBY,PYTHON,JAVA,C++,PHP,C#等多種語言;
        • 文件存儲格式為BSON(一種JSON的擴展)。存儲在集合中的文檔,被存儲為鍵-值對的形式。鍵用于唯一標識一個文檔,為字符串類型,而值則可以是各種復雜的文件類型。我們稱這種存儲形式為BSON(Binary Serialized Document Format);
        • 可通過網絡訪問;

        (九)門戶:Liferay

        Liferay(又稱Liferay Portal)是一個開源門戶項目,該項目包含了一個完整的JavaEE應用。該項目使用了Web、EJB以及JMS等技術,特別是其前臺界面部分使用Struts 框架技術,基于XML的portlet配置文件可以自由地動態擴展,使用了Web Services來支持一些遠程信息的獲取,使用 Apache Lucene實現全文檢索功能。
        特點:
        • 1、提供單一登陸接口,多認證模式(LDAP或SQL);
        • 2、管理員能通過用戶界面輕松管理用戶,組,角色;
        • 3、用戶可以根據需要定制個性化的portal layout;
        • 4、能夠在主流的J2EE應用服務器上運行,如JBoss+Jetty/Tomcat,JOnAS;
        • 5、支持主流的數據庫,如PostgreSQL,MySQL;
        • 6、使用了第三方的開源項目,如Hibernate, Lucene, Struts;
        • 7、支持包括中文在內的多種語言;
        • 8、采用最先進的技術 Java, EJB, JMS, SOAP, XML;

        (十)商業智能(BI):Pentaho, JasperReport

      48. 1. Pentaho
      49. Pentaho是一個以工作 流為核心的、強調面向解決方案而非工具組件的BI套件,整合了多個開源項目,目標是和商業BI相抗衡。它偏向于與業務流程相結合的BI解決方案,側重于大 中型企業應用。它允許商業分析人員或開發人員創建報表,儀表盤,分析模型,商業規則和 BI 流程。
        Pentaho是世界上最流行的開源商務智能軟件,是一個以工作流為核心的、強調面向解決方案而非工具組件的BI套件,整合了多個開源項目,目標是和商業BI相抗衡。它是一個基于java平臺的商業智能(Business Intelligence,BI)套件,之所以說是套件是因為它包括一個web server平臺和幾個工具軟件:報表,分析,圖表,數據集成,數據挖掘等,可以說包括了商務智能的方方面面。
        授權協議:
        • 授權分為兩個版本:商業版和社區版;
        • 社區版——社區版為開源,授權協議為:GPL,LGPL。社區版代碼以從官方網站分離,由sourceforge代為管理;
        • 商業版——商業版需要付費,有試用demo可下載;
      50. 2. JasperReports
      51. JasperReports是一個用Java開發的開源的程序庫,用戶能夠通過它,利用Java語言來開發具有報告功能的程序。JasperReports配有一個報表編輯器iReport,它可以在Java環境下像其它IDE報表工具一樣來制作報表。JasperReports 支持PDF、HTML、XLS、CSV和XML文件輸出格式。JasperReports是當前Java開發者最常用的報表工具。

        (十一)數據挖掘(DM):Weka

        數據挖掘(Data Mining,DM)又稱數據庫中的知識發現(Knowledge Discover in Database, KDD),是目前人工智能和數據庫領域研究的熱點問題,所謂數據挖掘是指從數據庫的大量數據中揭示出隱含的、先前未知的并有潛在價值的信息的非平凡過程。數據挖掘是一種決策支持過程,它主要基于人工智能、機器學習、模式識別、統計學、數據庫、可視化技術等,高度自動化地分析企業的數據,做出歸納性的推理,從中挖掘出潛在的模式,幫助決策者調整市場策略,減少風險,做出正確的決策。數據挖掘是通過分析每個數據,從大量數據中尋找其規律的技術,主要有數據準備、規律尋找和規律表示3個步驟。數據準備是從相關的數據源中選取所需的數據并整合成用于數據挖掘的數據集;規律尋找是用某種方法將數據集所含的規律找出來;規律表示是盡可能以用戶可理解的方式(如可視化)將找出的規律表示出來。
        Weka的全名是懷卡托智能分析環境(Waikato Environment for Knowledge Analysis),是一款免費的,非商業化(與之對應的是SPSS公司商業數據挖掘產品--Clementine )的,基于JAVA環境下開源的機器學習(machine learning)以及數據挖掘(data minining)軟件。WEKA作為一個公開的數據挖掘工作平臺,集合了大量能承擔數據挖掘任務的機器學習算法,包括對數據進行預處理,分類,回歸、聚類、關聯規則以及在新的交互式界面上的可視化。
        2005年8月,在第11屆ACM SIGKDD國際會議上,懷卡托大學的Weka小組榮獲了數據挖掘和知識探索領域的最高服務獎,Weka系統得到了廣泛的認可,被譽為數據挖掘和機器學習 歷史上的里程碑,是現今最完備的數據挖掘工具之一(已有11年的發展歷史)。Weka的每月下載次數已超過萬次。

        (十二)聯機分析處理(OLAP):Mondrian

        聯機分析處理(On Line Analytical Proccessing,簡稱OLAP) 概念最早由關系數據庫之父E.F.Codd于1993年提出。OLAP應用是目前數據倉庫上的重要應用之一,是決策分析的關鍵。作為數據倉庫最重要的多維分析工具,OLAP利用存儲在數據倉庫中的數據完成各種分析操作,并以直觀易懂的形式將分析結果返回給決策人員。它的目標是滿足決策支持或多維環境特定的查詢和報表需求,技術核心是多維分析。OLAP具有靈活的分析功能、直觀的數據操作和分析結果可視化表示等突出優點,從而使用戶對大量復雜數據的分析變得輕松而高效,以利于迅速做出正確的判斷,輔助決策。
        Mondrian是一個開放源代碼的Rolap服務器,使用java開發的。它實現了xmla和jolap規范,而且自定義了一種使用mdx語言的客戶端接口。Mondrian是olap服務器,而不是數據倉庫服務器,因此Mondrian的元數據主要包括olap建模的元數據,不包括從外部數據源到數據庫轉換的元數據。也就是說Mondria的元數據僅僅包括了多維邏輯模型,從關系型數據庫到多維邏輯模型的映射,存取權限等信息。在功能上,Mondrian支持共享維和成員計算,支持星型模型和雪花模型的功能。
        Mondrian是一個開源項目。一個用Java寫成的OLAP(在線分析性處理)引擎。它用MDX語言實現查詢,從關系數據庫(RDBMS)中讀取數據。然后經過Java API用多維的方式對結果進行展示。

        (十三)企業服務總線:FuseESB

        ESB全稱為Enterprise Service Bus,即企業服務總線。它是傳統中間件技術與XML、Web服務等技術結合的產物。ESB提供了網絡中最基本的連接中樞,是構筑企業神經系統的必要元素。ESB的出現改變了傳統的軟件架構,可以提供比傳統中間件產品更為廉價的解決方案,同時它還可以消除不同應用之間的技術差異,讓不同的應用服務器協調運作,實現了不同服務之間的通信與整合。從功能上看,ESB提供了事件驅動和文檔導向的處理模式,以及分布式的運行管理機制,它支持基于內容的路由和過濾,具備了復雜數據的傳輸能力,并可以提供一系列的標準接口。
        ESB是SOA(面向服務的架構)的關鍵組成部分。其基本功能包括:
        • 服務的MetaData管理:在總線范疇內對服務的注冊命名及尋址進行管理;
        • 傳輸服務:確保通過企業總線互連的業務流程間的消息的正確交付,還包括基于內容的路由功能;
        • 中介:提供位置透明的路由和定位服務;提供多種消息傳遞形式;支持廣泛使用的傳輸協議;
        • 多服務集成方式: 如JCA,Web服務,Messaging ,Adaptor等;
        • 服務和事件管理支持: 調用服務的記錄、測量和監控數據;提供事件檢測、觸發和分布功能;
        其擴展功能包括:
        • 面向服務的元數據管理: 他必須了解被他中介的兩端,即服務的請求以及請求者對服務的要求,以及服務的提供者和他所提供的服務的描述;
        • Mediation :它必須具有某種機制能夠完成中介的作用,如協議轉換;
        • 通信:服務的發布/訂閱、響應/請求、同步/異步消息、路由和尋址等;
        • 集成: 遺留系統適配器,服務編排和映射,協議轉換,數據變換,企業應用集成中間件的連續等;
        • 服務交互: 服務接口定義,服務實現的置換,服務消息模型,服務目錄和發現等;
        • 服務安全: 認證和授權、不可否認和機密性、安全標準的支持等;
        • 服務質量: 事務,服務的可交付性等;
        • 服務等級: 性能、可用性等;
        ESB 中最常提到的兩個功能是消息轉換和消息路由。
        FUSE Service Framework是一個開源的框架,基于apache的CXF,FUSE Service Framework提供一個引擎可以創建重用的服務,這些服務可以作為一個集成方案的一部分。 在企業集成架構中,你可以使用FUSE SF把新的或者已有的應用變成面向服務的。FUSE ESB可以和很多服務容器集成,支持很多語言,消息系統,和不同的協議。
        Fuse ESB很好的支持了JBI規范,其下產品均是由Apache下的著名開源項目組合而成。其中若干框架均已為開源世界廣泛應用,比如Apache Camel和Apache ServiceMix,尤其是其中的Apache ActiveMQ和Apache CXF,且ServiceMix 4之后基于OSGi架構,更能迎合企業動態化、模塊化的需求。此外,Fuse有豐富的文檔支持,加上其主要框架為大多開源人士所熟知,技術上可控性強,風險較小,是我們推薦的ESB產品。
        Fuse ESB的突出優點是:
        • 支持多種Front End編程;
        • 支持多種數據綁定;
        • 支持多種消息綁定;
        • 支持多種傳輸協議;
        • 支持部署web服務;

        三、開發框架開源化

        開發框架開源化,是指使用開源的類庫和框架來構建應用軟件。

        (一)領域層框架:DDDLib

        DDDLib是我們開發的開源軟件,目的是推行領域驅動設計(Domain Driven Design,簡稱DDD)的設計范式,和提供方便的基礎工具,減輕程序員的重復勞動。
        領域驅動設計的設計思想是:以業務領域(問題域)中的概念和機制為藍圖建立領域模型,然后用面向對象的機制來實現系統的領域層。領域模型是軟件系統的核心,系統其余部分都圍繞著領域模型來構建。
        與廣為流行的“以數據庫為中心的增刪改查”(CRUD)設計思想相比,DDD是一種根本不同的設計范式。CRUD以數據庫則關系模型為中心,DDD以對象模型為中心。CRUD是面向過程的,DDD是面向對象的。CRUD中的領域對象(業務實體)是個偽對象,只有屬性,沒有行為,本質上代表數據庫中的一行記錄;DDD中的領域對象既有屬性,也有行為,本質上代表現實存在的一個業務實體。CRUD認為應用軟件就是存儲和呈現數據,軟件的一切操作本質上就是數據的增刪改查;DDD認為軟件是業務現實的映像,軟件中的領域對象的屬性和行為和業務實體的屬性和行為一一對應。
        DDDLib的一個特點是遵循標準,將IoC和持久化框架隔離在領域層之外,保證領域層純粹表達業務邏輯,不依賴于任何技術框架。可以在部署時靈活選用不同的持久化框架(JPA、Hibernate等)和IoC框架(Spring、Guice、TapestryIoC等)配合使用。DDDLib已經得到廣泛采用。

        (二)應用框架:Koala

        Koala是我們自主研發的開源JavaEE應用框架,基于Apache 2.0開源許可協議發布。其主要設計目標是:
        • 促進領域驅動設計(DDD)思想的普及推廣;
        • 簡化架構師的系統設計工作;
        • 提高開發人員的工作效率;
        • 降低軟件開發成本;
        • 集成JavaEE企業應用開發中常用的技術組件和業務組件,使得開發人員不必自行開發和配置;
        • 提供一個簡單、一致的核心,同時不限制開發人員的自由度;
        • 促進面向標準和規范編程,降低框架、類庫的耦合度,避免廠商鎖定;
        • 促進單元測試、驗收測試、自動化構建、持續集成、軟件質量度量等軟件質量保證措施的廣泛采用;
        其功能特性如下:
        • 開源免費的開發平臺,允許你任意修改源碼并擴展功能;
        • 以DDD領域驅動思想為核心,拋棄傳統的以數據庫為中心的四層編碼模型;
        • 豐富的基礎組件支持,包括:國際化、異常、緩存等;
        • 向導式的搭建項目過程,支持各種技術選擇:JPA,mybatis,SpringMVC,struts2MVC等;
        • 向導式的數據庫到實體的生成過程;
        • 向導式的實體生成CURD功能;
        • 向導式的服務發布一鍵無縫發布成war、EJB、webservice(SOAP/REST) 多種服務形式;
        • 基于RBAC3模型的權限子系統;
        • 監控子系統輕松協助你監控URL,方法,數據庫,內存等狀態;
        • 使用通用查詢子系統輕松定制完成查詢功能;
        • 基于IP過濾,用戶名驗證及方法權限控制的WS安全子系統;
        • 基于JBPM5的流程子系統;

        咨詢服務范圍

        一、技術堆棧

        二、服務堆棧

        网上卖什么赚钱 817| 768| 418| 43| 122| 812| 928| 429| 62| 347| 438| 9| 645| 476| 121| 501| 464| 947| 357| 35| 972| 782| 138| 369| 699| 707| 67| 401| 830| 458| 664| 36| 766| 815| 802| 822| 908| 288| 151| 212| 46|