天涯運維:如何給企業選擇適合的開源技術構架
【編者按】馮大輝在《說說技術型創業團隊的技術選型》中提到了天涯,作者從一個天涯從事6年運維工作的角度出發,詳細的談了談天涯目前使用開源技術現狀,同時對企業如何選擇適合的開源技術構架給出了一些建議。以下是天涯運維在自己博客上發布的原文:
原文馮大輝《談談技術性創業團隊的技術選型》提到了天涯,好吧!站在一個天涯從事6年運維工作的角度,我就多說幾句,天涯屬于破釜沉舟要擺脫這種束縛的這一類。原因不用多說,文中提到的問題天涯多少都有碰到或存在。目前已全面擁抱開源技術,這不是一時頭腦發熱所做出的決定。根據現狀、未來的發展策略理性來選擇的。Windows服務器很難做到大規模的部署、管理與維護。打個比方,一個中級工程師可以很輕松維護500~700臺Linux服務器,相比之下300臺windows服務器就能讓管理員力不從心了。原因是windows平臺在集群管理方面還是很弱,只能自己開發一套工具或購買商業軟件來實現,這樣一來無疑給公司帶來了高成本。另一點是Windows OS/Service本身就不便宜,具體價格請撥打MS-800。經常有朋友問,windows服務器操作簡單,動動幾下鼠標就可以完成一項任務。而Linux需要敲N多命令才能完成相同的操作。告訴我為什么說windows管理成本比Linux高呢?這個得從Windows適用的場景說起,比如較低的技術門檻、中小規模集群等。很難想像通過鼠標在1000臺服務器上去完成一項任務,這也是windows2008中引入PowerShell的原因吧。
再說說天涯目前使用開源技術現狀,已經在包括前端緩存、應用代理、WEB服務、數據庫服務、開發框架、Nosql、負載均衡器、運維工具等方面大量被使用,涉及到天涯整個技術體系的每個角落。運用開源技術架構,給應用平臺提供了高性能、可擴展、高可用性的解決方案,同時也大大節約了成本。另一個好處是碰到問題總能找到解決方案。交流空間、個人視野都得到了開闊。天涯是一個使用開源技術并回饋開源的公司。雖然 不能貢獻頂級的開源項目,至少可以盡自己一份微薄之力。在2009~2010期間,天涯共開源了8個項目,涉及運維管理、Nosql等。包括“天涯LVS管理系統”、"天涯服務器管理系統(C/S版)"、"SDR1.0-Linux主機集中管理"、"Varnish緩存推送平臺V1.0"、"高性能數據引擎Memlink"等等。這些項目得到諸多同行及網友的支持,收到大量的反饋建議。部分項目已被第三方公司所使用或進行改良升級。希望更多熱衷于開源技術的朋友加入,一起學習,一起提高 。
下面給準備從微軟技術轉開源的一些建議,任何技術平臺的變遷都需要付出代價。除了前期做大量的技術儲備外,還應根據自身的應用及技術特點選擇合適的開源架構。天涯一路走來,不斷在嘗試->失敗->回滾->再嘗試的過程。如何給企業選擇適合的開源技術構架呢?
一、開發語言
如果是web2.0的網站,注重快速開發、快速實現。我們看到web2.0是數據組織結構在不斷變遷,從最典型的SNS到目前炙手可熱的微博。個人建議選擇敏捷開發或膠水語言,如php、python、ruby等。它們都具有開發速度快、入門門檻低、功能強大等優勢。web2.0的興起帶動了這類技術的普及,招人已經不成問題。經常有朋友問,說腳本語言會不會很慢?我相信很多人都存在這樣的困惑。可以肯定的是95%的應用平臺的瓶頸不會在語言的運算上,建議花更多的時間在代碼算法、緩存、數據庫及網絡結構的優化上,這才是比較務實的做法,相信你會得到意想不到的效果。對于電子商務型的網站,注重安全、穩定、高效等,java作為主流電子商務開發技術為首選。憑著成熟的中間件技術、跨平臺性,可復用性高、多層架構等優勢,在國內大型電子商務平臺普遍使用,如網上銀行、在線支付、在線購物、證卷等業務。
二、數據庫&Nosql
MS SQLServer轉開源數據庫,Mysql是所有開源數據庫中最活躍的,具有體積小、高性能、穩定性高及跨平臺等特點,提供大部分編程語言API。在web2.0網站中大量被使用,Nosql是2010年IT界的技術亮點。與關系型數據庫的關系是相輔相成的,不存在代替的關系,所適用的場景也不一樣,Nosql的誕生是為了解決關系型數據庫存在的缺陷,比如高密集的IO、大量數據的存儲及查詢、數據的擴展、分布式等等。個人推薦Mysql+memlink/Mongodb的組合,相互可以彌補各自的不足,將需要事務的數據讓關系型數據庫來存儲,非關鍵且大存儲數據全部丟給Nosql,這樣的好處是可以保證數據的一致性的同時提供高效的數據查詢。隨著業務量的不斷增長,需要更多的處理節點加入集群,個人推薦集群模式為多組One-Master->Multi-Slave,可以減少數據同步出現的延時及應用的復雜度,便于維護。組的劃分是根據應用業務層進行,這樣有非常好的擴展性。大致結構為:App Layer <--->Routing layer<--->LVS<--->Slave note。以最簡單的策略滿足復雜的需求,因為簡單就是美。
三、負載均衡
我們的原則是高并發、邏輯簡單走4層架構,比如LVS。7層架構著重在流量不高、規則要求比較靈活的應用中部署。例如URL哈希、過濾、路由、拆分等等。個人推薦Haproxy、Nginx。好的URL規則可以提高30~60%的緩存命中率。參考架構:F5/LVS<--->Haproxy<--->Squid/Varnish<--->AppServer。
四、運維平臺
運維是一項復雜、細致的工作,我們可以借助大量的開源工具來實現監控、操作、分析、部署等工作。Cacti、Nagios作為監控、分析的佼佼者,是運維人員的必備工具。現重點講一下我們在“操作”這塊是如何實現管理成百上千臺服務器的,以Func、Cfengine作為基礎平臺,在此基礎平臺上進行開發、擴展日常操作管理模塊。包括“天涯LVS管理系統”、"天涯服務器管理系統(C/S版)"、"天涯服務器管理系統(HTTPS版)"都是基于該平臺引伸出的項目。
除了以上所述,還有緩存技術、全文檢索、分布式存儲、云計算等都有非常成熟的開源解決方案,希望開源技術架構能給您多一種選擇。
博客原文:http://blog.liuts.com/post/221/
【編輯推薦】