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


    一般互聯網公司形成規模后,在技術上或多或少都有一些自己的基礎組件。這些基礎組件大體可以分為兩類:

1.完全自研

2.二次開發

完全自研的一般前提是

1.這個可以有

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

2.我需要的時候你不在

每一種技術產生都有它的歷史背景。就像諸子百家,因為沒有一個統一的學術體系,而時代又要求這么一個東西的時候,可能就會催生出很多技術,會同雨后春筍樣的一下子同時冒出來。

舉個例子:

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、服務化、微服務,並且在此基礎上衍生出來的平台化、中台化都包含着量級上的質變。

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

 

 
 

 

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

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM