程式設計思路-球連球組成的群

flan_grean發表於2024-05-20

  編碼設計有很多思路,都是在簡化對映實際問題時遇到的問題。

  之前和別人交流,得到一句“把它放在同一個地方好維護”,相同的功能只出現在一個地方。就會出現程式碼的聚合設計,也就是一種通用的功能索引,或者說物件導向的思想。

  首先程式可以被觀察成,計算、儲存、快取、連結,這是程式碼打交道的四個方面。由它組成了一個球連線球的程式,每一個球是一個快取中的程式體。也就是程式碼編寫時考慮運轉時候佔用的計算量,考慮分配的堆疊快取和載入方式,考慮資料在球體之間的傳遞方式以及資料的儲存。計算量的預估需要知道程式碼實現的底層邏輯,被解釋成的機器語言後會形成的工作效率,每種語言解釋的同一個邏輯的過程不一樣,生成的處理方式不一樣。堆疊的使用方式每種語言也有不同的處理和整理方式。等。

  球連結球的立體空間中,每個球代可以代表一塊大大小小的業務功能。他們就像實際業務中的部門和部門之間的協作,也可以是直接人和人之間的協作。每份業務被抽象成交給一個球和球連線的集體實現。每個細分的可聚合的功能做成一個球。球佔用的堆和棧的空間,程式碼佔用、靜態變數佔用、棧裡執行緒方法棧的佔用以及堆裡物件資料的佔用,是球體的抽象大小。它會隨著訪問量的增大而延伸擴大,在抽象空間中,在一定擴大範圍內並不會影響球體之間鏈路的通訊。如果被訪問量撐得容納不下,現存的虛擬程式記憶體通用大小不能承受,就考慮分割球體內的業務。在虛擬記憶體範圍內,可以最佳化功能的分配,統籌視角下管理各個編碼功能的責任歸屬。讓合適功能的程式碼實現,分配到合適的球體上。

  這種球體的記憶體拓印,建立在合理設計編碼的基礎上。每一個功能除了可以實現本身,還會考慮可擴充和穩定性。比如重要訂單資訊即使建立量大訪問快,也需要抵達底層資料庫的儲存。有些資料不是那麼重要,更多是一種臨時顯示,直接放在快取中就可以,丟了也沒有很大影響。在立體的業務設計中,球體才能得到完善的表達。在業務角度它是連線業務各個小模組的球,透過處理方式連線,就像做一份業務要跑好幾個場所,跑完一圈算是完成。在計算機硬體空間裡它也是一個球,能找到和業務視角一一對應的編碼、業務佔用的場地大小和同時可容納的訪問數量。

  球體考慮是清晰的、容易實現和編排的。球體在記憶體中的拓印就像把整個空間壓扁,然後把錯落的扁圓推擠到一個規則的長條裡。球體內的業務,和球體內的程式碼實現在硬體中布排,是直接對映。

相關文章