1.引言 php
其實我一直是個懶人,開博也有好幾年了,可是一直懶得寫文章,主要怕打字麻煩, 手機都是用訊飛語音輸入的, 惋惜博客裏面不少專業性的詞語,用訊飛也不大好,另外不管在家仍是在公司,開個語音一本正經的嘰嘰嘰,畫面也太美好,乾脆仍是手打吧,對觀衆也是一個尊重前端
這個話題實在不想開,主要是怕開了,各路大軍蜂擁而至,一人一口唾液也被噴死了,原來只要一討論.net java php誰好,立刻就有混戰了,最終以PHP是世界上最好的語言爲結論休戰,講真,做爲一個IT界混了這麼多年的人,啥語言都要會點,要否則你真很差意思出來圍觀,因此在MVC以前的時期,根本也無所謂那種語言好,哪一種很差,都是半斤八兩吧。 不過在那個時期,很公正的講:java
2.五軍介紹數據庫
1 ..Net 還不錯,尤爲是VS開發環境,那調試真心爽,代碼也很優雅,惟一不足就是.net 環境很噁心,各類體積大,各類向後兼容,搞的實施人員罵娘緩存
2 .JAVA也不錯,這幾年一直是個人主開發語言,主要是一個JDK跑天下,各類平臺爽呆呆。固然各類Jar包也會找的你哭,直到Maven這個神器出來一統江湖,你們都爽了,惟一偶爾還罵一下的也就Eclipse了。固然也有用其餘IDE的,在此很少評論,用過VS的話都得趴下。服務器
3 .PHP嘛,我不知道怎麼講了,好像連噴的引子都沒有了, 比IDE? PHP有IDE麼? 比調試? PHP 有調試麼? 比中間件?PHP有中間件麼? 固然,PHP開發仍是蠻快的,有他自身的優勢(一大波PHPer正在趕來,好吧,PHP是世界上最好的語言)架構
4 .GO&NodeJS Python 二線語言, 各位大爺先別噴, 真正的大型,大規模產品,還真沒用這幾個語言開發的,有個別用的後果也是最終轉上面3個大哥框架
5 .其餘語言 IOS ,C++ 等, 不說了,無法噴,地球的將來是互聯網時代。除了圖形及前端運算等須要,這類語言不會消失,但生存空間會愈來愈小。如今鋪天蓋地的混合開發框架已經在不停的打壓前端語言了。運維
好了, 五軍湊齊,可是真正開戰的主力,仍是前3個, 後面2個的粉絲能夠先去討論下PHP是否是世界上最好的語言,而後再過來觀戰分佈式
3.開戰背景
爲何前三個要開戰呢? 主要仍是從16年下半年開始,蓬勃發展的微服務架構,Docker DevOPS ,這兩個傢伙把IT市場完全給攪亂了,不明真相的吃瓜羣衆確定說:用本身的開發語言就好,其餘管我屁事? 且聽我繼續道來,這2個傢伙終究要改變世界,啊不,終究要改變IT界的生存模式。
1 .首先受到衝擊的就是運維人員, 這羣龐大的組織,由於Docker DevOps的存在,會逐漸消亡,由於之後基本不須要什麼實施,也不須要蹲點運維了,全部的功能代碼,最終交付形態都是一個image鏡像,一個DevOps人員就能夠完成自動化構建,生成Docker鏡像,集羣化部署。 而傳統的安裝文檔Step1-Step100就再也沒人看了。
這塊影響最大的,可能就是依賴於IBM,Oracle等巨頭中間件的這部分人了,想當年,IBM靠WebSphere中間件系列, Tovoli系列養活了多少實施運維人員,工資傻高,福利賊好,可是Docker一出誰與爭鋒,DevOps概念深刻身心,開發運維一體化將是將來惟一主流的道路
2. 其次受到衝擊的,就是傳統思惟,傳統架構的的開發人員,16年下半年開始,JAVA率先轉入微服務仙域,坐看人間百態,笑而不語。由於SpringBoot和SpringCloud完美支持無縫對接微服務,那但是JAVA的親大爺,.Net只有乾瞪眼的份,無奈天生基因形態,沒法有效實現微服務,更別說像SpringCloud的生態鏈了,不過微軟打死都不改變,你Linux有Docker,我也得弄個Docker,好嘛,出來的是基於微軟Hyper-V的,微軟引覺得豪的界面型操做,在Docker命令型操做面前被轟成了渣渣,沒辦法,把PowerShell改下,全學Linux的Shell,奈何最終是一個四不像,搞得人都不肯意用,幹嗎費那麼大勁學PowerShell?直接轉Linux多開心? .Net Core 也開始跨平臺,惋惜背後的生態鏈都沒法完美進入Docker,更別說DevOps的思路了。因此.Net Core看起來很美好,其實道路仍是很曲折的,一我的對抗整個JAVA生態鏈,仍是太弱。至於PHP,怎麼昇仙進入微服務? 請先把本身的MVC搞定再來發言吧。 什麼?有同窗說PHP的MVC有啊,好吧,請先去參觀研究下JAVA 和.Net的MVC吧。
3. 另一個受影響的,應該是互聯網甚至是整個IT界的運做模式了,目前雖然收到衝擊,可是還不算致命,可是將來1-3年內,確定要大變樣,主流應用,主流互聯網產品可能都會轉型到微服務模式,畢竟從快速開發實現,快速迭代,及時響應變動,同時下降成本方面考慮,企業都願意接受更好的方案。傳統企業,國企政企嘛,想一想就算了,真帶不動,一羣只會用XP IE6的羣體,和互聯網自己就是互斥的,因此對於在這類產品環境下生存的ITer們,就要考慮了,不轉微服務,那你的技術生涯可能也就2-3年了,轉微服務?那估計只能跳槽了。畢竟對於思想排斥互聯網,動不動就是管控,內網,各類約束,是沒法有效高效利用互聯網帶來的價值的。
4.DevOps助攻
好了,說了這麼多,也簡單說下微服務+Docker+DevOps的簡要流程和關鍵點:
傳統模式: 1.開發代碼-》2.測試-》3.打生產包,寫部署文檔,數據庫腳本,其餘環境要求-》4.實施人員安裝-》5.運維人員維護,備份數據-》6.再次循環1-5過程
這期間基本每一個環節到下一步都會出現扯皮的狀況,就是各類不行,各類驗證,各類開罵。環節多了,經手人就多,出問題概率就大
DevOps模式: 1.開發代碼-》2.測試-》3.提交Git/SVN 自動構建生成Docker鏡像-》4.,自動發佈集羣 -》5循環3-4過程
這種模式,只關注2個重要點,第一個是代碼,第二個是生產環境的共享存儲,尤爲是在雲計算環境下,就更爽,其餘的服務器,環節操做,均可以隨時銷燬,隨時重建。
這裏面須要重點強調下Docker的牛逼之處, 傳統模式,若是須要創建分佈式集羣,那是須要幾個軟硬件專家,或利用各類中間件來實現,維護難度,企業成本不是通常的高,買軟件,加服務器,甚至實施運維都是皇帝,公司惹不起,沒事給你來個刪庫毀集羣再跑路,哭都來不及。而Docker出現後,就把這部分羣體完全廢掉了,隨時隨地加服務器,硬的,虛擬的,雲的,通通只要一行命令就搞定。隨便刪,隨便Down,隨便加,有了Docker都不怕。
5.開戰
講了這麼多,吃瓜羣衆不樂意了,不是五軍之戰麼? 到底還打不打了? 不打退票~!
好,前面也說了,主站仍是3軍 JAVA .Net PhP , 其實JAVA是不戰而勝, 全部的微服務Docker幾乎是爲JAVA 量身定作的。剩下就看.Net 和PHP的生態鏈如何來PK了
從15年末,微軟開始親近開源社區來看,後續一系列動做,包括.Net Core 1.0發行,到如今2.0. 基本跨平臺還算能夠, 尤爲引入Nuget生態系統,能夠說彌補了.net的不少不足, 總體生態鏈已經在建設,我認爲能夠達到JAVA的30%-35% ,而自動化構建自己也是.Net的強項,能夠達到95%,惟一不足的是這個生態圈子以Win爲主,沒法跨平臺,Docker部分
我以爲微軟路子沒選對, 可能考慮到自家的生態系統,因此選擇了以Hyper-V做爲Docker的核心,致使Linux中衆多的Docker服務,沒法在Win下使用,其實微軟既然在新Win裏面嵌入了MiniLinux,徹底能夠以此爲基礎,進行增強,造成一個混合的系統,連Docker也能夠混合支持Linux。可是如今微軟在Docker的作法,可能真的就把Win系統生態鏈帶入絕境。 開始我也說了,將來是Docker的世界,這塊不作好,只有死路一條。
至於PHP,我已經找不到好的切入點了,由於基本的MVC,就和JAVA .Net相差一部分,而微服務的基本思想,也都會依託與MVC服務,因此這部分相當重要,成熟的MVC框架,包括其身後的生態系統支撐,才能造成可靠的微服務系統。 固然Docker的話PHP也是能夠很快集成融入。 惟一不足的可能就在於微服務的基本基因較弱吧。至於服務發現,服務熔斷降級,全局配置中心,統一網關,PHP貌似尚未太成熟可靠的生態系統。
6.結論
基於16年17年的現狀來看, .Net已經在改變,可是沒有下狠心, PHP可能還在夢遊,沒有一個統一的組織來引導這個。因此這樣持續下去的話,1-3年內PHP先死,2-4年內.Net也僅僅是苟活着了。而市場80%可能都會轉入JAVA生態系統了。
7.總結
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
集中答疑一下吧:
1. 首先做爲一個13年的ITer,各類開發語言仍是均可以玩一下的,平時用的最多的仍是JAVA和.Net ,這2個是真心喜歡,PHP偶爾也寫寫配合下大部隊,16年末我倒也不會說到底那個語言好壞,畢竟各有優點,可是爲何如今要給你們作一個預判告警,就是由於Docker+JAVA+微服務這3個傢伙到一塊兒後,互相加成,從17年開始,就要完全乾翻其餘的語言了。從世界頂尖的公司全面微服務Docker化,到中小型互聯網公司陸續轉型微服務,能夠看出這個大趨勢不可逆。 而Docker+.Net 生態鏈+ 微服務 和Docker +PHP生態鏈 +微服務,不但沒法相互加成,還相互抵消。具體能夠關注個人微博,後續慢慢給你們講。
2. 看了不少朋友的留言,只能說看懂的是真看懂了,不懂的是真不懂,半懂不懂的還堅持在本身的小天地裏面,我說過1-3年能夠見分曉,很簡單的一個例子,咱們不是僅僅把.Net Core跨平臺裝進Docker裏面,也不是想辦法把SQL Server裝到Docker裏面來刺激下G點。這都是玩具,真正要考慮的是一個全面的體系,我簡單說下問題,有疑惑的能夠認真思考下
1. 公司都是小團隊,客戶,產品,變動快,2周出一個迭代版本,3周換一個大業務流,怎麼去響應?我說的是測試完成而且上線。 尤爲是PHP
2. 公司購置服務器,是一次買10臺?外加存儲陣列?仍是用雲主機+共享存儲? 如今多數都會選擇後者,那麼問題來了,平時流量5臺足以,6月,8月電商日活動峯值須要30臺,怎麼辦?買不買?買多久?與此相關的消息隊列MQ,Redis緩存,MySql都須要同步伸縮,怎麼辦? 這時候有人要擡槓了, .Net 不行? PHP 不行? 從目前來說,還真不行,沒有SpringCloud生態支持,這兩個語言真玩不轉, 更可怕的是微軟如今僅僅把 .Net Core 開放到Linux平臺,就想讓Linux的Docker資源開放到Win平臺, 自己就會把Win生態鏈搞死, 想一想把,我秒開30臺MySQL,微軟給我秒開30臺SQL Server試試? 因此微服務時代,微軟真心不適合, 連我也都放棄了最愛的Oracle,想一想爲何吧。
3. 有朋友說微服務是一種思想,和操做系統有毛線關係? Docker是一種容器,啥都能放,和你JAVA有毛線關係? 這個是正確的,分開看,的確是這樣的, 包括Docker其實也出來2年了,也沒有見驚天地泣鬼神的事件,可是一切的一切都在於 Docker +JAVA微服務化(SpringBoot)+微服務生態鏈(SpringCloud) 這3個在16年末,17年上半年相遇了(各自有成熟的發行版)今後才能夠改變整個IT界。 瞬間讓秒部署成百上千臺服務器成爲一個SoEasy的事情。 .Net的生態圈能夠?仍是PHP能夠? GO語言.NodeJS ? 身後沒有一個強大的生態鏈,真搞不定。
因此在這裏,我也很少說,請關注我後續的博客發言,我給你們逐步講解分析。 Now,不理解的朋友,能夠去搜下SpringBoot,SpringCloud,JAVA微服務,Docker,DevOps等實際的文章,園裏的大牛仍是不少的,看下他們的理解和想法,你終究會明白,這IT界的天,是要變了。