51CTO專家門診第196期 服務(wù)器并行開發(fā)基礎(chǔ)
在服務(wù)器集群開發(fā)、大型工程程序開發(fā)中,我們?cè)絹碓蕉嗟嘏龅蕉嗑€程、多任務(wù)模型的開發(fā)。這已經(jīng)成為現(xiàn)代程序設(shè)計(jì)的一個(gè)重要特征。這其實(shí)已經(jīng)是并行開發(fā)了,涉及到方方面面的知識(shí)儲(chǔ)備,如內(nèi)存控制、IO控制、鎖的控制等,甚至包括全新的程序世界觀。 (專家門診鏈接:http://doctor.51cto.com/develop-210.html)
本期門診邀請(qǐng)分布式數(shù)據(jù)庫(kù)研發(fā)、數(shù)據(jù)傳輸工程師、無錯(cuò)化程序設(shè)計(jì)專家肖舸先生,針對(duì)服務(wù)器并行開發(fā)基礎(chǔ)技術(shù)展開討論。歡迎網(wǎng)友積極提問,與專家一起交流學(xué)習(xí)!
Q:肖專家您好:
對(duì)于現(xiàn)在中小型企業(yè),有沒有必要實(shí)施服務(wù)器群集?對(duì)于服務(wù)器上的網(wǎng)站數(shù)據(jù)備份和數(shù)據(jù)庫(kù)的備份,有沒有很好解決方案,另外O-bug是一項(xiàng)技術(shù)么?數(shù)據(jù)庫(kù)的開發(fā)和應(yīng)用,就現(xiàn)在的技術(shù)而言,能不能完全解決企業(yè)的問題?
A:肖舸
這位朋友,你好:
我覺得你的問題有點(diǎn)見仁見智,現(xiàn)在是大規(guī)模數(shù)據(jù)時(shí)代,我們目前一個(gè)應(yīng)用需要處理的數(shù)據(jù)規(guī)模,可能在10年,甚至5年前,想都不敢想的,因此,我認(rèn)為即便是中小型企業(yè),為了處理日益增長(zhǎng)的數(shù)據(jù)使用需求,應(yīng)該考慮使用服務(wù)器集群技術(shù),另外,很可能在不久的將來,可能使用的是云技術(shù),這個(gè)我個(gè)人理解,是服務(wù)器集群基于應(yīng)用細(xì)分后,更高一層的抽象。
畢竟,即便是再小的企業(yè),只要它不斷成長(zhǎng),成為百年老店也是有可能的,那,一百年的數(shù)據(jù)積累下來,你猜猜會(huì)怎么樣?呵呵。
數(shù)據(jù)庫(kù)備份我做得比較少,不好提太多意見,如果是程序員,我會(huì)建議他從并行角度,在后臺(tái)直接實(shí)現(xiàn)緩步備份技術(shù),但一般應(yīng)用型企業(yè)的網(wǎng)管,我的建議是可以考慮采購(gòu)商用備份軟件。
0bug是我寫的一本書的名字,其實(shí)也是我作為程序員的一個(gè)夢(mèng)想,很多年以前,我受困于bug,就想,以后如果寫出程序來就沒有bug,該多好啊。呵呵,這么多年一直努力,但是,可惜現(xiàn)在我也沒能寫出一個(gè)真正0bug的程序。
但是,我想作為程序員,有這個(gè)追求是最重要的。你說呢?
我書里面主要探討了很多無錯(cuò)化程序設(shè)計(jì)的方法和原則,特別是近年來很多,但是程序員學(xué)習(xí)比較少的多線程、多任務(wù)、并行環(huán)境下,在增加了鎖的干擾之后,如何實(shí)現(xiàn)0bug的程序設(shè)計(jì)辦法,有興趣可以看看。
數(shù)據(jù)庫(kù)的開發(fā)和應(yīng)用,我的理解是一門應(yīng)用科學(xué),需要結(jié)合具體應(yīng)用場(chǎng)景、業(yè)務(wù)來考量,我認(rèn)為這是一個(gè)永遠(yuǎn)有發(fā)展前途的工作,我本人目前也在進(jìn)行工業(yè)用實(shí)時(shí)數(shù)據(jù)庫(kù)的開發(fā)工作。
我認(rèn)為,IT行業(yè)走到今天,已經(jīng)不能僅僅是炒概念了,而是要為社會(huì)實(shí)實(shí)在在做點(diǎn)貢獻(xiàn)了,而最突出的貢獻(xiàn)無非兩個(gè),一個(gè)是軟硬結(jié)合,提供全方位的完美用戶體驗(yàn),比如ipad,還有就是切實(shí)針對(duì)用戶實(shí)際數(shù)據(jù)需求的數(shù)據(jù)庫(kù)技術(shù)。
起碼到目前為止,我認(rèn)為各個(gè)企業(yè)的數(shù)據(jù)庫(kù)需求,其實(shí)都有解決方案,無非是成本高低而已。我認(rèn)為程序員以后的發(fā)展方向,更多的是在熟練掌握各項(xiàng)基本技能的基礎(chǔ)上,在掌握無錯(cuò)化開發(fā)技巧上,以更低的成本,為用戶提供更高效的數(shù)據(jù)服務(wù)。
嗯,一家之言哈,僅供參考。
Q:舸哥,你好!
我現(xiàn)在一家大型企業(yè)從事網(wǎng)絡(luò)管理工作,對(duì)于服務(wù)器集群及負(fù)載均衡技術(shù)類的硬件產(chǎn)品你覺得使用哪個(gè)廠家的比較好呢;
A:肖舸
目前這方面其實(shí)可選擇余地并不多。因?yàn)檎嬲呢?fù)載均衡,除非量身定制的開發(fā),其實(shí)都差不多。
不過,如果是大型集群,我建議可以與IBM合作。
Q:老師您好:
如果是中小型事業(yè)集群,WindowsServer系列的DataCenter版,也不錯(cuò)。
嗯,其實(shí)這么說我心里也沒底,我建議,具體問題具體分析,你可以email我你們具體的應(yīng)用數(shù)據(jù)需求,我試試看,能不能給點(diǎn)具體的建議。
不好意思啊。
如果我要做一個(gè)操作,需要通過查詢得到數(shù)據(jù)結(jié)果,可是如果數(shù)據(jù)量大的話每次查詢勢(shì)必會(huì)耗費(fèi)性能,怎么做才能既只要消耗小部分性能又能得到數(shù)據(jù)呢?
A: 肖舸
其實(shí)我們目前面臨的很多應(yīng)用,都屬于數(shù)據(jù)中心型(Data Center),只要是數(shù)據(jù)中心,就免不了增改刪查四個(gè)基本動(dòng)作。
所以數(shù)據(jù)查詢是永恒存在的。
而且,我發(fā)現(xiàn)近年來很多趨勢(shì)和過去不一樣了。
過去,IT業(yè)主要解決“有無”問題,即數(shù)據(jù)的有和沒有這個(gè)問題,因此,我們花了大量的功夫,來做數(shù)據(jù)的采集和存儲(chǔ),包括工業(yè)現(xiàn)場(chǎng)的各種DCS系統(tǒng)等等。
但是,現(xiàn)在用戶口味“刁了”:“你能采集,能存儲(chǔ),嗯,我承認(rèn)你有這個(gè)本事,但是,這些采集和存儲(chǔ)的數(shù)據(jù),對(duì)我有什么意義?怎么才能真正幫助我的工作和生活?你回答我?”
這是現(xiàn)在的用戶環(huán)境。
因此,我覺得現(xiàn)在IT業(yè)面臨的一個(gè)重大轉(zhuǎn)型,就是如何從數(shù)據(jù)的采集、存儲(chǔ)這類“計(jì)算機(jī)”界擅長(zhǎng)的東東,轉(zhuǎn)為真正針對(duì)細(xì)分市場(chǎng),針對(duì)用戶個(gè)性化需求的數(shù)據(jù)的“用”的技術(shù)。我想,這大概是今后幾十年,我們IT業(yè)面臨的一個(gè)巨大的問題。
能應(yīng)對(duì)的,會(huì)笑到最后。
而這個(gè)問題,不可避免的,就是你說的“查詢”技術(shù)。
這包括很多,海量數(shù)據(jù)的挖掘、高效的數(shù)據(jù)分析。還得結(jié)合具體軟硬件環(huán)境構(gòu)建的用戶使用環(huán)境,等等。
目前我做的工作,可以說就是在前期高效存儲(chǔ)的基礎(chǔ)上,研究如何更好提升查詢效率的辦法。
我的解決方案是從開發(fā)階段就做優(yōu)化,比喻一些數(shù)據(jù)預(yù)處理技術(shù),一些存儲(chǔ)優(yōu)化技術(shù),比如采用B+樹模型存儲(chǔ),數(shù)據(jù)取模,多級(jí)定位等技術(shù)。嗯,還有就是Cache技術(shù)。
方法有很多啦,無一定之規(guī),這個(gè)要針對(duì)具體需求來。
因此,對(duì)于你的問題,我唯一的建議就是基于“順序遍歷、平衡二叉樹管理、哈希型管理”這個(gè)順序來,逐一在符合成本需求的前提下,盡可能好地解決問題。
Q:舸哥
您好!我是企業(yè)的系統(tǒng)管理員,現(xiàn)在企業(yè)慢慢在擴(kuò)大,有可能要實(shí)施服務(wù)器集群,我想問下具體應(yīng)該注意哪些事項(xiàng),感覺現(xiàn)在壓力很大!??!
A: 肖舸
你也說了企業(yè)慢慢在擴(kuò)大,那說明這個(gè)服務(wù)器集群化,應(yīng)該是一個(gè)循序漸進(jìn)的過程,我覺得此時(shí)從心理上,還是不要焦急。
不過呢,既然有這個(gè)壓力,我認(rèn)為針對(duì)這些東東,現(xiàn)在開始學(xué)習(xí),做一些知識(shí)預(yù)儲(chǔ)備比較好。
你已經(jīng)是網(wǎng)管員,基礎(chǔ)知識(shí)應(yīng)該已經(jīng)有了,下面就是針對(duì)應(yīng)用需求開始做針對(duì)性的準(zhǔn)備。
我建議你這段時(shí)間,可以多接觸一些大公司,比如hp、IBM、cisco、華為的技術(shù)人員和銷售人員,把自己的需求提出來,請(qǐng)教他們,并作為潛在的客戶和他們溝通,我想,在他們給你的方案建議和技術(shù)白皮書里面,你應(yīng)該能學(xué)到很多東東。
還有就是多看一些書籍,多到網(wǎng)站提問哈,請(qǐng)大家?guī)兔獯稹?/p>
我認(rèn)為所有問題,都是可以細(xì)分拆解的,你的問題也類似,其實(shí),這個(gè)拆解過程本身,就體現(xiàn)你的一個(gè)網(wǎng)絡(luò)拓?fù)湓O(shè)計(jì)能力。
因此,我建議你從現(xiàn)在開始,對(duì)企業(yè)未來3~5年的IT應(yīng)用需求開始著手分析,要有一定前瞻性,然后還可以寫一些相關(guān)文檔,做一些方案建議,請(qǐng)你的主管點(diǎn)評(píng),并且為主管申請(qǐng)預(yù)算留出足夠的時(shí)間,如何?
當(dāng)把問題拆細(xì)了,比如公司有幾個(gè)分支機(jī)構(gòu),分支機(jī)構(gòu)之間保密數(shù)據(jù)通信方案,VoIP語(yǔ)音方案甚至IP視頻會(huì)議方案等,企業(yè)總部的安全性問題,防火墻的設(shè)計(jì),企業(yè)總的帶寬流量需求和管控,各個(gè)分支機(jī)構(gòu)的管控等等,我覺得不難的。
另外,這里也說明一點(diǎn),我是程序員,不是專業(yè)的網(wǎng)管人員,這方面的問題,我能提點(diǎn)建議,但是不是很專業(yè),很多網(wǎng)管類的話題,還請(qǐng)咨詢更加專業(yè)的人士哈。
嗯,我說的分布式數(shù)據(jù)庫(kù)研發(fā),可能和大家想的也不太一樣,別人可能是利用現(xiàn)成的數(shù)據(jù)庫(kù),組建分布式服務(wù)器集群,來處理海量數(shù)據(jù),屬于數(shù)據(jù)應(yīng)用類開發(fā)。
我這邊稍稍有點(diǎn)不同,我是在研發(fā)一種能高效處理的海量數(shù)據(jù)的數(shù)據(jù)庫(kù)產(chǎn)品,這個(gè)產(chǎn)品是賣給別人后,別人在我的數(shù)據(jù)庫(kù)基礎(chǔ)上做上述事情的,嗯,可能我的更底層一點(diǎn)哈,希望大家不要誤會(huì)了。
Q:老師您好:
對(duì)于企業(yè)來說,什么樣的服務(wù)才需要的群集?
那么群集自然會(huì)提高服務(wù)的高可用性,怎么樣才能有效的管理呢?
A: 肖舸
這個(gè)問題很難講,因?yàn)榉?wù)種類太多了,需要細(xì)分,逐一分析來判定。
講點(diǎn)原則吧。
需要高安全性,高吞吐量,高穩(wěn)定性的服務(wù),大概需要集群服務(wù)。
這個(gè)看數(shù)據(jù)規(guī)模,以及用戶對(duì)數(shù)據(jù)安全性的敏感程度。這個(gè)安全性一個(gè)是數(shù)據(jù)被訪問的安全性,也有數(shù)據(jù)保存的安全性。
使用群集,只能說有可能提高可用性,但是還是要看設(shè)計(jì),因此,群集服務(wù)可以說是研發(fā)者和使用者共同來完成的一項(xiàng)工作,僅僅有錢購(gòu)買產(chǎn)品是不夠的,需要管理員仔細(xì)分析本企業(yè)的用戶需求,設(shè)計(jì)合適的方案,選擇合適的產(chǎn)品,來搭配合理的集群。
我想,這個(gè)群集服務(wù),是最能體現(xiàn)網(wǎng)管員的技術(shù)實(shí)力的。
至于管理,很多群集軟件產(chǎn)品,都帶有自己的管理器,但是,往往不合用,因此,群集前端,一般需要企業(yè)定制,或者自主研發(fā)一套合適的UI,比如自己的ERP系統(tǒng)等,才能更好地利用數(shù)據(jù)。
Q:老師您好:
我是一名學(xué)校網(wǎng)管,我校教師用機(jī)基本上超過300臺(tái),現(xiàn)在,服務(wù)器也有6臺(tái),有學(xué)校的資源庫(kù)、web、教學(xué)ftp和視頻點(diǎn)播、直播服務(wù)器,請(qǐng)問如何維護(hù)才能保證數(shù)據(jù)不會(huì)因?yàn)榉?wù)器的損壞而丟失,謝謝您能回答我的問題!
A: 肖舸
感覺服務(wù)器少了?;旧厦糠N應(yīng)用一臺(tái)服務(wù)器,這肯定是有問題的。
建議先考慮鏡像,即再增加6臺(tái)服務(wù)器,與現(xiàn)有服務(wù)器做鏡像拷貝,一起服務(wù),一來避免數(shù)據(jù)丟失,二來也分擔(dān)壓力。
對(duì)于高安全性數(shù)據(jù),建議后臺(tái)再單獨(dú)建立一臺(tái)備份服務(wù)器,專門備份這部分?jǐn)?shù)據(jù)。
Q:老師您好:
我是大一新生學(xué)軟件的,現(xiàn)在對(duì)學(xué)些什么感覺很迷漫,希望您能給點(diǎn)意見
A: 肖舸
呵呵,這類問題我博文中很多,你看看我博客吧。http://tonyxiaohome.blog.51cto.com/
總的來說,我建議剛上大學(xué)的學(xué)生,不要太早接觸語(yǔ)言,不要太早接觸商業(yè)化的設(shè)計(jì)模式、類庫(kù)之類的東東。
建議先從基礎(chǔ)學(xué)期,特別是數(shù)學(xué)、算法、數(shù)據(jù)結(jié)構(gòu),把這些基礎(chǔ)打牢了,后面學(xué)起來后勁足。
要是剛上大學(xué),不學(xué)專業(yè)課,專門跑去學(xué)編程,也能學(xué)出來,不過,沒有基礎(chǔ),在程序員道路上走不遠(yuǎn)的。
下期專家門診預(yù)告:
①預(yù)告:下期門診將邀請(qǐng)中國(guó)綜合布線光纖及光纖測(cè)試領(lǐng)域的權(quán)威專家團(tuán)隊(duì),針對(duì)光纖布線系統(tǒng)的設(shè)計(jì)與測(cè)試等要點(diǎn)、難點(diǎn)問題給予解答,屆時(shí)歡迎網(wǎng)友積極提問,與專家一起討論!
②鏈接:http://doctor.51cto.com/develop-211.html