咱們公司內部職級晉升中,當目標職級比較資深或者專家後,有一項考察內容是:有本身的方法論。數據庫
方法論不少人聽過,但是不少人也在問什麼是方法論?緩存
方法論是咱們對於不少事情進行思考沉澱後,具備總結性的指導思想。性能優化
好比不少名言警句就能夠是方法論。架構
一次有人問我,你有沒有總結過你的方法論? 我說個人方法論是:少便是多。併發
以前對系統接口進行性能和穩定性的優化,第一期優化的效果還能夠,他們問我都用了哪些技術手段,用了哪些新東西。 我說我刪了5k行代碼,他沒說你的方法論就是「刪代碼」。高併發
最開始接到這個系統的時候,努力去整明白他裏面作的事情是很難的。 等一部分代碼邏輯明白後,發現裏面作了不少無用功,多是以前的系統設計的太爛了,徹底沒有考慮到後續擴展的方向,也多是產品的需求改了又改,大部分代碼都只能爲了適應業務迭代而修修補補,結果形成了一大堆無效而冗餘的代碼存在。性能
因而首先是梳理系統響應接口的主要目的,梳理上下文邏輯,梳理數據流邏輯,刪除冗餘代碼,讓代碼編寫的更易讀,更整潔,更優雅。 對代碼邏輯進行抽離,和封裝,複用。單元測試
不少人看待代碼分離,都只是簡單對分層,分模塊。 我寫代碼主要的分離除了上面兩點,還有一個是計算和存儲分離,這個點後面講。測試
總之這個可用性和性能優化,僅僅經過「刪代碼」就達到了目標,爲將來的進一步優化帶來了不少空間。大數據
咱們內部有個代碼統計系統,每次發版打tag都會進行一次統計,別人每次都是綠色的加號,+500,代碼增長了500行。 個人每次都是紅色的減號,-1500,我又刪了1500行代碼。
上面說了,我分代碼邏輯還有一個是計算和存儲分離。
不少人寫代碼,除了寫麪條代碼外,雖然說能夠分紅不少子方法,子模塊,代碼行數控制到80行,但是依然難讀。 由於這樣作只是簡單的文字分頁而已,並非一個軟件開發的思想。
我寫代碼通常會考慮這個功能是讀功能仍是,寫功能,進行抽離,這樣的話讀功能在數據量上來以後咱們能夠作不少咱們可擴展的能力,好比拆庫拆表,好比引入緩存,好比多存儲介質存儲等,徹底不用關係業務邏輯問題。
計算和存儲分離是數據庫的執行方式,底層在磁盤上的B樹負責存儲,上層的SQL Parser負責計算,咱們系統也能夠具備這樣的邏輯,這樣咱們能夠零成本的切換存儲,而不應上層代碼邏輯,達到更好的單元測試。
因此這裏的方法論是:面向大數據系統設計。
在互聯網系統中,數據的增加,業務的發展,用戶的增長,是遠遠快於系統迭代的,只有咱們將咱們的單機系統代碼設計的具備面向大數據高併發場景的時候,系統才具備可擴展,易擴展的能力,才能承載更多的數據壓力,也變得更穩定。