混搭.NET技術
新聞 .NET技術+25臺服務器怎樣支撐世界第54大網站 再度燃起人們對.NET的技術熱情。這篇新聞中透露了StackExchange 在技術方面的混搭,這也是我所崇尚的。因此我也在社區里極力推廣Mono平臺,這篇短文就想和大家一起討論一下混搭.NET技術。
混搭(Mashup)架構是一種新型的集成各種技術的應用開發架構。傳統上,Mashup源于流行音樂,是一種音樂類型,也被稱為bastard pop,指的是藝術家組合或者混合兩首不同的歌曲(通常屬于不同的流派)的音樂和歌詞來創作新的歌曲。它擁有三個特征:天生的創新性,人們的經驗性和結果的和諧性。
特征一:天生的創新性。從起源上看,Mashup是一種內容上的創新組合。這里重點是創新,雖然組合的元素通常都源自于本來無關但非常常見的東西,但這和任何創新活動類似,一旦組合便會產生一種具有新意的新生事物。
特征二:人們的經驗性。這些組合都是人工進行合成的,而不是通過計算算法來合成的,人們的經驗和思維在Mashup過程中起到了決定性作用。
特征三:結果的和諧性。無獨有偶,在現實社會中Mashup風潮也影響著服裝時尚界,設計師們把街頭朋克元素引入到傳統的英格蘭服飾,用運動T恤混搭具有少女風情的篷篷裙,產生了意想不到的匹配效果。時尚界也稱Mix & Match風格,從字面上理解,Mix是混合,Match是匹配,合起來翻譯成混搭。指將不同風格,不同材質,不同身價的東西按照個人口味拼湊在一起,從而混合搭配出完全個人化的風格。Mix就是混合兩個或多個元素,來展現新的用戶體驗。Match是指一種和諧相配的有機組合,否則就是“瞎搭”了。這就是特征三,混搭結果必須和諧匹配,具有這種既混且搭的東西,現實生活中除了音樂和服裝,還有中國火鍋,多元文化,多元的收藏,裝飾和建筑風格等等,人們的情緒可以說也是一種混搭的表現。
對IT技術來說,就如同創造新音樂,新服裝那樣,它能讓開發人員創造針對特定的業務需求的業務混搭IT技術。下面我們來看下StackExchange 在技術方面的混搭:
1、混搭Windows和Linux
Stack Overflow 把系統部署在Windows 平臺上,同時使用Linux系統上,什么好用用什么,不要做無必要的系統之爭,比如 C# 在 Windows 機器上運行***,我們使用 IIS;Redis 在*nix 機器上可以得到充分發揮,使用*nix。還有 Windows上也有IIS ARR,但是他沒有Linux上的Haproxy好,所以它使用Haproxy,同樣的還有Windows上有nlb,Linux上有LVS,LVS 比NLB 好太多了,所以不要局限于所使用的系統,完全可以混搭使用Windows和Linux。
2、混搭物理服務器和虛擬機
硬件永遠比開發者和有效率的代碼便宜。基于木桶效應,速度肯定受限于某個短板,現有的云服務基本上都存在容量和性能限制。StackExchange 混搭使用了物理服務器和虛擬機,物理服務器可以將發揮縱向擴展的威力,數據庫服務器使用SSD 磁盤,365GB內存 ,這樣高配置的服務器現在云平臺上基本沒有,同時在一些低負載的場景使用虛擬機,例如VM 用于部署、域控制器、監控、運維數據庫等場合。
3、混搭.NET開源社區技術
Stack Overflow 主要使用微軟的.NET技術,混搭.NET開源社區的技術。 Stack Overflow本身就是.NET開源社區的一個參與者,他運用了redis作為其緩存層,目前***的Redis的.NET 驅動就是ServiceStack.redis,它是Stack Exchange的一位開發者Demis Bellot 所開發的開源的、支持.NET與Mono平臺的REST Web Services框架ServiceStack 的一部分。微型的 ORM ——Dapper也是 Stack Overflow 開源的,還有Stack Overflow的開源監控解決方案Opserver,也是 Stack Exchange發布。它基于.NET框架構建,這在監控工具領域有些與眾不同。
4、混搭其他技術
使用 http://logstash.net/做日志管理,SSD 改變了搜索的使用方式。因為鎖的問題,Luncene.net 并不能支撐 SO 的并發負載,因此他們轉向了 ElasticSearch。
在眾多的技術方案中,不同的技術方案都有它的優點,不過從單一的方式來說,也會有缺點,但兩種技術方案的結合混搭,就可以解決這些問題,***程度上發揮各自優點,彌補不同技術方案的缺點。不過只有象StackExchange 具備豐富的技術能力的專業團隊,才能很好的完成混搭,讓后期的使用安枕無憂。
任何一個技術方案,管理都會有風險,混搭當然也會有。因此,在進行混搭創新之前,首先要對混搭的技術有一個準確的評估,比如你的技術方案與要混搭創新的技術之間有沒有優勢互補,微軟在2011年以前經常是復制社區的技術,一個微軟技術的使用者局限于微軟的技術,這就好比是近親繁殖,微軟現在已經改變策略,直接集成社區的技術,這也是一種混搭創新,特別是使用微軟技術的同仁們也要學會混搭;第二點,在進行混搭創新的變革之前,要和整個公司團隊有充分的溝通,讓你的團隊很清楚地知道為什么要進行這樣的混搭創新,,大多數人都不大喜歡被改變,所以***決心要變革、要創新就必須說服成員,告訴他們不改變會怎樣。
2014年的.NET技術已經進入一個新的高度,.NET vNext 有一個專門為云端環境優化過的模式,該模式允許你在部署程序的時候連同他們所用到的.NET Framework的相關庫一同部署。由于.NET的運行時和框架中的庫部署在了程序基礎(app-basis)上,所以在同一臺機器上,每一個程序可以運行不同版本的.NET vNext,并且可以單獨升級,互不影響。這些庫已經被顯著的優化、精簡以便減少框架占用的空間,并且將會使用NuGet來發布。.NET開發團隊以跨平臺的思想來開發這個模式,在開發過程中和Xamarin積極合作,以確保經過云端優化過的.NET程序可以運行在裝有 Mono 運行時的Mac和Linux上。一次將非Windows主機作為一等公民對待。微軟將Mono和Linux完全集成到他們的構建環境和測試矩陣中,并積極地與社區共同努力將Mono變成一個托管ASP.NET的***平臺,Xamarin最近也在行動,劍橋大學的開源顧問全職加入Xamarin 公司,他的工作是確保Mono 成為Linux上的一等公民。消息來自他的博客 http://t.cn/RPLN4Hj。.NET和ASP.NET的巨大生產力可以提供給那些使用混合開發環境的團隊。
本文鏈接:http://www.cnblogs.com/shanyou/p/3870984.html