Java、Python、PHP、Ruby…哪個是最好的開發語言?

商業技術

商業技術主要有以下幾個特點:穩定性、可擴展、兼容性和可運營性等,這里我們重點說可運營性這個特點。

又拍云的 CDN 服務在純粹技術上理解,是內容分發的緩存系統,一款 CDN 產品。但是需要完成大量的工作,才有實現商業化的可能。

比如需要加入多個子系統,計費系統用于查詢客戶流量、帶寬使用情況;運維系統負責節點、服務器等管理;日志系統負責在使用過程中排查系統問題。

過去圍繞又拍云 CDN 系統,就有十多個子系統。去年又拍云增加了直播云功能,意味著又增加了五六個子系統。現在子系統已經有二三十個了。

另外兩點是商業價值和市場價值。商業價值主要體現在如何為客戶創造價值。

純技

純技的特點則主要集中在技術創新方面。

比如近期十分流行的 OpenResty 開源產品,技術創新性強、性能優異。與現在的 Node.JS、PHP 等相比,是占優勢的。

純技另一個特點是有趣,炫酷。純技產品,本身技術性強,它誕生的原因也正是因為開發者覺得它的 idea 有趣。

我在 2010 年時,開發了一個 aLiLua 的開發框架,與 OpenResty 相同,只是我沒有基于Nginx 編寫。獨立編寫了 server,將其嵌入進去,形成 aLiLua 。

這是兩種不同的方法。我認為我的方法更加酷炫、簡單。因為我不需要依賴于 Nginx 和配置文件。后來我編寫了一個更加簡單的,性能更強勁的。

這個東西具備了炫酷、有意思的特點,但是由于它純粹是按我的個人興趣制作的,沒有考慮商業技術方面的內容,不具備穩定性、擴展性、兼容性等。

我的初衷是希望為自身、業界創造價值,但到現在還只是我自己在用來寫寫網頁、和做些數據統計分析的事,不過這取得了非常好的效果,省去了很多麻煩。在又拍云團隊中有不少雜活要做的,大家一般都會使用 Go、Python,而我則使用 aLiLua 。

△ 商業技術與純技區別

商業技術與純技的代表類型

簡單介紹幾類商業技術與純技的代表性產品。

第一類產品——操作系統

商業技術中有 Microsoft Windows 和 iOS ,純技的有 Linux。

Windows 無論是操作還是硬件兼容性都十分優秀。但是 Linux 有時候甚至連驅動都很難找到。Linux 的優勢在于標準的硬件,將服務器構建于 Linux 系統上則十分便捷安全,性能非常好。

第二類產品——數據庫

商業的 Oracle 或 MS DB 的市場前景十分優秀。過去二三十年中,幾乎所有國內金融機構都是用這兩種產品。

為什么國內金融機構不使用純技領域的 MySQL 或 Redis 的產品呢?

商業場景,數據安全性最為重要,其次是穩定性保障,MySQL 或 Redis 雖然也能做到,但是用戶顯然對專業的 Oracle 和 MS DB 更為信任。

第三類——語言類

商業語言包括:C#、Swift、Java 等,純技領域有 PHP、Python,Perl 等。

國內技術人追求比較高,使用 PHP、Python 者較多,但是國外仍然有較多人使用 C# 和 Swift 。因為后兩者的版本歷史兼容性比 PHP、Python 強大很多,有利于版本迭代。

我從 2001 年開始使用 PHP,一直使用到現在的PHP7。每次 PHP 的大版本更新中均不會以兼容性為前提。如果原來的這套場景是基于 PHP4.3 開發的,那么很可能無法直接使用 PHP5、PHP6 升級。版本升級時,需要使用 PHP5、PHP6 重新編寫不兼容的地方。

第四類——Web server

Java 有比較多的 Web server 使用場景,這里以微軟的 IIS 為例。在 IIS 上可以運行 ASP、C#,盡管 IIS 運行量不多,但是它是一個商業服務的例子。在商業服務中, Web server最重要的是性能,但是近幾年,它已經落后于純技領域的 Nginx 和 Apache了。

第五類——硬件

技術領域不僅有軟件,硬件也相當重要。比如商業領域常會使用 F5 負責負載均衡,但是在純技領域則多用到 LVS 。盡管 LVS 在使用過程中會存在產生不穩定性,消耗 CPU和內存資源等問題,但是很多公司還是會選擇 LVS,主要原因是因為 F5 成本過于高昂。

以上,便是我列舉的在商業技術和純技領域大家較多接觸到的部分產品。商業技術與純技有穩定性、性能等極端性的差異。我們需要根據自己的需求,以滿足業務需求為最終目標,在技術選型、產品選型中做好決策。

如何進行技術選型?

創新

前段時間熱議的支付寶生活圈與微信理財。這兩個就是明顯的錯誤創新。首先很多人不希望朋友知道他的存款數額和購買了哪些物品,所以支付寶和淘寶天然不適合做社交。在微信方面,由于通訊錄中絕大部分是朋友,人們只習慣于把零錢存在微信,用于發紅包等之類的。

創新需要考慮到客戶真實需求,并且滿足客戶的需求。

性能

千萬不要殺雞用牛刀,比如有人用 C++ 寫 Web 應用,雖然性能非常好,但是研發難度大,實現周期長。再比如有人用最好的語言做大數據分析,但是其實性能并不好。每個語言都有自己的特點,C 語言性能強適用于大數據場景,但是對開發者技術要求高,開發周期長。又拍云的日志分析集群使用的就是 C 語言,雖然只有四臺機器,但是可以完全處理全網 50 個 TB 左右的日志,并且計算出 Top 1000 的訪問 URL、流量、訪問次數等。

同樣使用 Java 編寫的 ES 實時日志收集系統,系統性卻能要差很多,50 臺機器的集群,只能抽樣處理 10% 到 20% 。ES 實時日志收集系統的優勢在于比起C語言的系統要靈活,可以針對業務需求,選擇不同的技術方案。

穩定性

OpenStack 中的 Ceph 存儲集群的穩定性非常差,把它搭建起來,對外出售公有云服務是完全不可能的。企業級公有云的使命是創造商業價值,在做技術選型的時候,首先要考慮系統穩定性,做到安全可靠。

總的來說,公司的 CTO 、技術總監、架構師等在進行技術選型的時候,要做到正確創新,以及權衡好性能與穩定性。

總結:“做適合的事”

第一階段:初創

這個階段團隊往往只有四五個人,產品還只是一個 idea ,這時我們不需要考慮產品的拓展性、開發難易度,只需要以最快方法將它以 demo 的形式實現,通過這個 demo 驗證產品是否存在商業價值。

第二階段:爆發

這個階段我們需要頂住產品發展帶來的技術壓力,考慮分布式、熱備容災等問題。

第三階段:穩定

在穩定階段,需要完善前兩個階段的技術問題,以及開始技術迭代,從長遠角度考慮公司、產品未來的發展。

又拍云初創的時候,團隊管理后臺、云存儲 API 等大量底層都是使用PHP 編寫的,底層存儲系統是使用 Erlang 編寫的,CDN 系統使用 Nginx+C 編寫的。

當時選擇 PHP 語言的是因為開發周期短,產品可以實現快速上線。僅僅半年的時間,產品 demo 就編寫完成了。

到了 2014、2015 年爆發階段,我們開始考慮分布式、熱備容災等問題。并且使用 Java 和 Erlang 語言重新編寫了 API 系統。在測試權衡后,又選擇使用 Nginx+Lua 編寫的 API 系統。

現在又拍云的技術發展已經處于一個穩定階段,我們更多考慮的是怎么償還技術債務,開始思考如何節省資源、提高性能。以及從長遠的角度思考未來的市場需要,應對新的變化。

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 糧食行業在無人值守稱重軟件下的應用 衡安無人值守稱重軟件糧食收購流程如下: 1.功能初始化:為使糧食化驗、檢斤、業...
    衡安小哥閱讀 380評論 0 0
  • 這篇文章是寫在深夜里,距離我踏上小鎮的日子已經隔了數天。說是小鎮其實未免牽強,因為從現在的光景看起來已經離“小鎮”...
    不怪的小孩閱讀 391評論 4 4
  • 攸之坐在公園的一長椅上,等著好友湘雅的到來。她們約定今天一起去游樂場玩。從這個公園的一小路走出去,可以避免有大量人...
    空白11111閱讀 236評論 0 0
  • 財務:穩定有序 工作: 雙十二回饋客戶酒會 退休規劃十二個家庭 意外與小醫療所有老客戶全面檢視覆蓋 健康: 每天運...
    心動由我閱讀 140評論 0 0
  • 不要對打鼾的人極盡言語攻擊之能事 ? 原創文 | 林子 (清風浪港手寫鋪原創文,未經授權請勿轉載) 真是細思極恐啊...
    清風浪港手寫鋪閱讀 810評論 0 0