技術的價值

我按照年代演化,從前端交互層,到網絡層、應用層、數據庫來分別講,技術對於客戶的業務應用價值。

大家在閱讀中,尤其要細細品味爲啥出現了那個技術,到底是爲了解決什麼問題,但是它又產生了什麼弊病。 

一、70年代

過去的計算機,都是電傳打字機和打孔機當終端,和計算機進行交互。1972年,王安電腦研製成功最新一代的文字處理計算機,首次配套了咱們現在最常用的鍵盤和顯示屏,從此我們有了可視的字符界面。

咱們現在用的以太網是1979年才產生的。但是世界上第一條跨大西洋的海底通信電纜在1866年就鋪完了,人類已經可以通過海底通信電纜進行跨洋的電報數據傳輸。而且在1969年互聯網的前身ARPANet誕生的時候,人們已經通過電話線纜可以進行聯網數據傳輸和訪問了。

有了文件和文件系統,有了網狀數據庫和層次數據庫,內容修改/存儲/查找倒是比過去容易了,但是複雜性仍然很高。

二、80年代

1983年,Lisa推出了,這是世界上第一款圖形界面的計算機。1983年,微軟也在研發Windows圖形界面,但是Windows1.0在1985年才推出。圖形界面取代字符、取代命令行,讓計算機大大易用。

1981年,以太網的發明人創辦了3COM公司,給1981年IBM發佈的PC機配備了以太網網卡。局域網便於多人多部門一起協作。

早在1984年,貝爾實驗室Unix研究團隊就已經產生出了分佈式數據事務一致性協調中間件,後來1992年賣給了Novell公司,後來又被BEA公司在1995年收購。這是最早的中間件,就是爲了解決分佈式應用的問題。1987年,Sun公司就發明了RPC技術,用於分佈式應用之間通過API進行遠程調用的問題,這也是比較早的中間件,也是爲了解決分佈式應用的問題。

Oracle終於在1979年推出了Oracle2.0真正可商用的關係數據庫,這讓結構化數據存儲/查詢容易了很多。

三、90年代

早在1991年,歐洲原子能實驗室的研究員就已經研究出來網頁瀏覽器、HTML、HTTP協議、Web服務器。但是在1993年才被伊利諾伊大學的學生們開源實現並且普及。1994年網景公司成立,引爆了全球互聯網。Web技術免除下載安裝這些麻煩事,可以做到隨時隨地訪問。

思科也順便切入了TCP/IP的互聯網路由器,互聯網便於全球訪問。

1990年,COM組件技術、CORBA組件技術都出現了,並且還配套了分佈式應用遠程調用中間件、組件持久化中間件技術、組件池化中間件技術。組件的出現是由兩個技術在推動:一個是接口技術的推動,接口的出現,讓不同開發語言編寫的應用之間可以很方便API調用;另一個技術是通用組件規範,過去寫一個類是很隨意的,但是你要寫成組件,前提就必須符合通用組件接口定義規範,只有這樣,才能做到組件的計數/池化、組件的內省/持久化。

1994年,互聯網崛起後,中間件又增加了Web中間件服務器,如開源的Apache WebServer。WebLogic和WebSphere一開始都是商用的WebServer。1995年,爲了做到Web頁面從靜態文本變成動態,Servlet/JSP技術發明了,這就相應出現了Servlet/JSP中間件服務器。1998年,J2EE規範發佈,這就又相應出現了EJB組件和EJB中間件服務器。他們其實都是爲了解決跨互聯網的遠程調用問題。

1990年,Red Brick公司推出世界上第一款數據倉庫管理軟件。這樣,關係數據庫處理OLTP交易型應用,數據倉庫處理OLAP分析型應用。

四、2000年代

2008年,iOS、Android這兩大雙雄終於出現,開啓了移動互聯網時代。但是當時2G、3G網速慢,智能手機本機的性能也慢,所以當時做移動互聯網應用,蘋果公司就走了App這樣的技術路線。如果你要做內部用或外部用移動應用,只能跟隨蘋果事實上的產業標準,做APP。

聯網技術,也從Modem撥號上網技術,演化到有線ADSL技術、WiFi無線上網技術,乃至2G GPRS、3G無線上網技術。無線上網技術,讓大家可以隨時隨地訪問互聯網。

1998年,W3C爲了分佈式應用跨互聯網訪問就在制定WebService標準,在2001年才正式推出。因而中間件又增加了WebService的特性,這就是過去大家老提的SOA:有註冊中心UDDI,有所謂的SOAP企業總線(其實和過去的遠程方法調用中間件本質是一樣的),有描述文件語言WSDL。如果你想方便地利用互聯網技術跨互聯網訪問其他的應用,那麼你當時只能使用WebService技術。

關係數據庫統治應用已經很多年,但是互聯網的很多應用產生的內容和數據並非都是結構化關係數據,如半結構化數據(CSV、XML、JSON的日誌),非結構化數據(電子郵件,文檔,PDF)和二進制數據(圖像、音頻、視頻)。所以就出現了很多存儲方式系統以及NOSQL數據庫。

五、2010年代

2017年,微信小程序技術出現,隨後阿里、百度、頭條、滴滴等等很多公司都跟進。Google在2017年也同時提出了PWA(漸進式Web應用)技術,Google在2018年還用Dart開發語言(2011年產生)和FlutterUI組件形成組合。前端又從APP技術回到了類似HTML、Javascript的技術世界。如果你想在微信裏開發應用,小程序技術是微信第一優先級支持的,所以頁面的適配性最好。如果你就不用小程序技術,就自己用HTML5技術來搞,那麼適配微信各個版本、適配各種手機的工作,只能你自己搞了。

2013年,4G無線上網牌照發布。人們從3G無線上網,升級到4G無線上網。上網速度更快,訪問應用不用再等待了。

中間件出現了N多分佈式中間件,來應對各個細分層的海量併發。2014年,微服務編程架構提出。微服務爲啥出現?就是因爲組件技術和WebService技術太沉重了,寫一個簡單東西也得附加一大堆組件技術規範實現和WebService技術規範實現。

早在2004年,Spring已經產生了,那還是SOA時代。後來2014年搖身一變,Spring變成Spring Cloud,SOA(面向服務)變成了面向微服務,應用中間件變成了應用編程框架。雖說各種開源的分佈式中間件互相靈活組合在一起打破了當年WebLogic/WebSphere壟斷企業級中間件的商用市場,雖說用RSET和JSON代替了沉重的WebService技術族,雖說微服務用普通類代替了過去沉重的組件技術,但是給應用開發工程師也帶來了煩惱:過去本來應該由完全封裝的中間件軟件操心的分佈式要求,現在得應用開發工程師來關注了。

所以2015年,業界痛定思痛,在Docker容器和k8s技術的支撐下,大家把分佈式應用要求的能力又從應用編程框架層級下沉到分佈式操作系統層。微服務的架構,也變成了面向函數服務/無服務器Serverless架構。

這樣來看,其實微服務是走錯路了,就像CloudFoundry和OpenStack走錯路一樣。很不巧,以Spring爲代表的微服務應用編程框架和以CloudFoundry爲代表的應用容器框架,都是Pivotal這家公司的。

所以,世界繞了一圈回來了,現在的Serverless、容器、K8s生態技術體系,把分佈式應用架構的複雜性從應用層下降到了分佈式操作系統層,目的是在簡化分佈式應用架構。如果不這麼簡化,你又想應對海量併發,又想簡單,那沒門。

早在2003年,Google就開始陸續發佈三大論文,直到2009年,Hadoop在雅虎的推動下才正式開源。大數據海量存儲、大數據海量計算的需求才得以滿足。大數據不用像過去數據倉庫一樣ETL、維度化入倉,就能做很高性能的計算和查詢。尤其後來2014年發佈的Spark用內存處理機制、DataFrame機制,實現了實時的流式計算,比過去Hadoop MR批量計算更加性能高、實時性好。

現在大家又在提大數據湖,因爲大家發現了NOSQL太多了,大家其實期望的是一個技術搞定各種數據存取。但是大家也要警醒,現在說大數據湖落地產品的,可能不是真正的大數據湖的產品,就如同iPhone沒出來之前Symbian就叫智能手機,iPhone出來後就沒有Symbian什麼事了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章