漫畫:大公司都在重複造輪子嗎?

    通常互聯網公司造成規模後,在技術上或多或少都有一些本身的基礎組件。這些基礎組件大致能夠分爲兩類:算法

1.徹底自研數據庫

2.二次開發後端

徹底自研的通常前提是安全

1.這個能夠有網絡

須要使用的時候確實還不存在這個組件。好比這個領域不是一個通用領域,所需的技術也比較專業。可能存在說這個技術確實沒有。架構

2.我須要的時候你不在框架

每一種技術產生都有它的歷史背景。就像諸子百家,由於沒有一個統一的學術體系,而時代又要求這麼一個東西的時候,可能就會催生出不少技術,會同雨後春筍樣的一會兒同時冒出來。前後端分離

舉個例子:socket

11年初的時候,靜兒在人人網,當時的Zookeeper尚未流行。當時配置管理和數據庫健康檢查等都是本身作的。靜兒就寫了一個socket程序來作這件事情。當時遇到過不少坑,靜兒的服務有問題,大夥兒就都從工位上站起來了:「服務跑不起來啦~」分佈式

3.就是不同

百家爭鳴,後來絕大部分被淘汰了。可是保留下來的不只有儒家學說,還有道家,後來還有佛家等等。他們各有特色,誰也不能代替誰。在技術上,也會存在功能大致同樣,可是各有側重或者實現方式不同,甚至我自主研發的可能會成爲下一個時代。

舉個例子:

剛纔說到zookeeper,zookeeper一個比較重要的應用是作服務發現,同類產品還有etcd、consul等。

zookeeper基於paxos的化簡版zab,etcd基於raft算法、consul也是基於raft算法。etcd和consul做爲後起之秀,並無由於已經有了zookeeper而放棄本身,而是採用更爲直接的raft算法。

 

二次開發是公司造成規模後使用基礎組件比較經常使用的方式,經常使用的二次開發方式也有兩種:

 1.深度定製

優勢是能夠更貼合需求的作深度改造。缺點是版本升級困難。

2.外圍封裝

優勢是版本升級容易。缺點是個性化需求實現困難。

 

通常二次開發的需求場景有:

1.安全的需求

好比須要接入本身的SSO(單點登錄)系統

2.數字化運營的需求

好比公司須要對組件的穩定性、可用性作監控。對它的TPS、QPS等指標作監控和統一可視化管理。

3.個性擴展的需求

好比靜兒目前在作的基於k8s的容器化,須要一些比k8s自己支持更好的隔離性、服務自動彈性收縮和打散等等。

4.兼容性的需求

須要作一些適配。

 

服務治理

服務治理是一個很是大的範疇。涉及的領域能夠用下面界面來感知一下。    

 

上圖來自美團點評的服務治理平臺OCTO。

    服務治理有人把它的英文名字定義爲SOA governance。它的產生得益於互聯網架構的演變。

一體架構

    在傳統的一體架構中基本沒有人談服務治理。靜兒剛參加工做的時候,作過一個300人月的項目,都是放在一個工程裏的。

MVC架構

    後來先後端分離,MVC架構逐漸流行,如今不少工程內部還在使用。

多應用架構

多應用架構是在領域上進行水平切分,造成相互獨立的應用。好比靜兒在人人網的時候,曾經一我的有段時間負責開放平臺系統、SNS(Social Networking Services 社交網絡服務)系統、UGC(User Generated Content 用戶原創內容)系統的開發和維護。由於其餘人都被投入新項目中了。

分佈式架構

    這個談的人就比較多了,包括如今的SOA、服務化、微服務,而且在此基礎上衍生出來的平臺化、中臺化都包含着量級上的質變。

而隨着服務增多,就須要一個統一的管理,服務治理也應運而生。每一個公司都有本身的業務特色,所關心的指標各有側重,目前開源的服務治理框架也每每只是其中某些點。就好像談高可用同樣,每一個公司高可用側重點不一樣,目前基本沒有人能出來一個比較系統的高可用方案。因此這是個服務治理諸子百家的階段。

 

 
 

 

關注靜兒公衆號,不按期漫畫技術推送~

相關文章
相關標籤/搜索