在本次專訪之前,筆者一直都對.NET這個平臺有所偏見,或者說是看不到.NET的優勢,對Java Web、PHP、Ruby等更加看好,而之后SSH、RoR、LAMP等的流行也讓筆者對這個觀點更加堅信。然而在瀏覽完趙桂華的個人Blog后,筆者逐漸認識到對.NET這種不公平的看待,或許正如趙桂華所說,打造高性能網站架構是一個系統的工程,并非某個平臺或某種語言能完成,所以高性能通常與編程語言無關。同時,.NET被看輕的一部分原因還來自Visual
Studio開發環境的強大。
博主趙桂華:2005年畢業于武漢工程大學電子信息工程專業。大學期間就對軟件產生濃厚的興趣,利用課余時間自學了計算機專業全部專業課程以及VB、VC、Java、數字圖像處理等編程語言和技術。畢業后一直從事.NET相關技術的研究與開發工作,先后就職于多家軟件以及互聯網公司,擁有豐富的軟件開發和項目管理經驗。致力于高性能網站架構、提高軟件開發質量與效率等領域的研究。個人為推動開源事業貢獻著自己的力量,目前已在Github上開源了一套輕量級數據持久層組件 restful.data,該組件能支持多種數據庫和Linq查詢,具有高性能、零配置、代碼優雅、易上手等特性。
免費訂閱“CSDN云計算”微信公眾號,實時掌握第一手云中消息!
CSDN作為國內最專業的云計算服務平臺,提供云計算、大數據、虛擬化、數據中心、OpenStack、CloudStack、Hadoop、Spark、機器學習、智能算法等相關云計算觀點,云計算技術,云計算平臺,云計算實踐,云計算產業資訊等服務。
以下為采訪實錄
CSDN:能否介紹一下目前您正在從事哪方面研究及工作內容?
趙桂華:我是個自由職業者,有更多的時間來思考產品或項目之外的東西,目前我主要在做下面幾件事情:
1. 高性能網站架構,主要研究一些開源的緩存、消息隊列、代理組件和其他一些工具。
2. 規范開發流程,改善代碼質量,提高開發效率。
3. 基于社區針對小范圍人群的O2O電子商務服務平臺。
4. restful.data開源數據持久層組件的持續更新與優化。
CSDN:.NET給大家留下的印象多半是易于上手,對于高性能打造上您怎么看?在這個方面,對比J2EE、Ruby、PHP等如何?
趙桂華:.NET之所以易于上手,是因為微軟為開發者提供了非常強大的開發工具,你幾乎可以在Visual Studio上搞定一切。但對于.NET本身而言,它也是個強大的開發平臺,其他語言能做的,.NET也能做,它們不能做的,.NET也可以做。不管是從易用性,還是程序執行效率上都是非常卓越的。.NET給人的印象只是容易上手,原因主要是,搭載.NET的運行環境軟硬件成本高,導致很多互聯網平臺從最初的.NET轉向別的開發語言,很多人都只是使用.NET來開發企業內部應用,而他們對性能的要求并不是那么高,只是運用了一些簡單的常見技術,就能完成項目的要求,很難展現.NET平臺的那些優秀特性,所以給人一種.NET只能走低端路線的印象。
打造高性能網站架構是一個系統的工程,并非某個平臺或某種語言能完成,所以高性能通常與編程語言無關。Mono框架的出現,也為.NET跨平臺帶來了轉機,微軟也在積極的推動這個項目的發展,所以在打造高性能網站架構的工具和手段上,.NET作為一個開發平臺并不是一個人在戰斗,我們完全可以把Java的那一套照搬到.NET上。真要說哪個平臺更好,我倒覺得不能蓋棺定論,每種語言和平臺都有其自身的特點和優勢,我們更多的是要考慮怎么將他們整合,讓他們更好的為我們服務。當然,由于一些歷史原因,J2EE、PHP等可能在開源方面做的更好一些。
CSDN:對于高性能網站打造,你們每個部分通常使用了哪些開源組件?
趙桂華:
CSDN:您認為目前高性能網站架構的難點在哪里?需要避免哪些坑?順便分享一些高性能網站打造的經驗?
趙桂華:第一點,真實場景不易模擬和重現,我們很難在開發階段發現架構的問題和不足,不便于我們測試。
第二點,可選的組件和工具很多,這需要我們非常熟悉組件和工具的特性,而研究這些東西又是非?;ㄙM時間和精力的。
第三點,理想和現實的碰撞,沒有一個完美的架構,架構是要結合實際情況的,還需要考慮投入的成本,而成本也有可能制約架構的性能。
第四點,牛頓定律只適用于低速運行的物體,常規的思維方式和開發習慣可能在高并發大數據的網站上不適合了,所以放棄一些傳統的設計理念也是擺在我們面前的一個重大難題。
設計高性能網站架構,首先跳過過度設計這個坑,要結合實際情況,考慮投入的成本和人力資源,選擇合適的方式,搭建合適的架構;技術不是完美的,不要指望技術能幫你解決所有的問題,要在行與不行之間做出更好的抉擇,不要一開始就進行假設,為了實現一個毫無意義的目標而投入過多的精力。對于打造高性能網站架構,我也只能算是個初學者,但其中心思想主要有四點:
具體到一些技術,請關注我的博客,我會持續的更新。
CSDN:作為緩存服務器,Memcached已在LAMP等環境中得到了驗證,那么與之對比,Redis又有什么優勢?
趙桂華:我們可以從下面幾個方面來比較這兩者之間的區別:
所以,我們無法單純的得出誰優誰劣的結論,各有利弊,需要根據不同的應用場景來選擇它們,如果只是單純緩存一些數據,可以選擇Memcached,比如session數據,如果我們希望數據能被持久化,那無疑只能選擇Redis,例如統計當前的訪問量、在線用戶數等。
CSDN:您是restful.data開源輕量級數據庫持久層組件的創始人,您怎么看待開源這個運動?如何才能更好的參與進一個開源項目?
趙桂華:古人云,授人與魚不如授人與漁,我認為開源更像是一種慈善行為,與其授予金錢和物資,還不如給他們提供一些的富有創造力的工具,讓他們可以利用這些工具創造出更多更好的軟件和工具來豐富我們的生活,這也是一種社會價值的體現。我們在使用開源的同時,也要學會為開源奉獻自己應有的力量,更重要的是要尊重那些默默為我們做出貢獻的人們。
想要參與一個開源項目,首先自身應該對開源是感興趣的,你需要有足夠的動力來驅動你參與這個項目,還需要拋棄一些世俗的觀念,你可以懷揣著夢想來做這件事情,但你不能指望開源能為你帶來名和利。你還需要保證有足夠的時間和精力來參與其中,以確保項目能如期進行。持之以恒的毅力也是不可或缺的,堅持不懈的深入研究,才能讓項目達到預期的目標。
CSDN:restful.data開源項目當下有多少人參與?您開發這個項目的初衷是什么?目標是什么?
趙桂華:目前我創建的項目群已將近50人,主動參與的人并不多,我希望有更多的人能參與進來。
之所以把這個項目開源出來,是因為這個項目是我多年以來一直思考的結果,我希望分享給大家,讓更多的人學習和參與,并提出更多有建設性的意見和建議,共同推進項目的發展。另一個原因是我不想讓我的成果變成某個企業獨享的東西,我希望有更多的人使用它,完善它。
我對restful.data并沒有設定什么目標,只想讓開發者們在ORM框架上能有更多的選擇,讓更多的人認識它,了解它,學習它。
CSDN:在restful.data開發過程中,您有什么收獲?
趙桂華:當你設定一個目標,認真的去完成它的時候,當你遇到一個又一個的山峰,你又不得不去翻越它的時候,你會發現,你收獲的不僅僅是短暫的喜悅,更多的是人生的感悟,你會明白,沒有困難是不可逾越的,你只需要一步一步的堅持前行,當你站在另一個山頭