架構篇 全域性的設計考慮

2021-04-19 09:52:58 字數 1950 閱讀 8517

要點:

架構師首先應該從使用者的角度看軟體的

performance

(表現)。在架構設計上,介面應該足夠靈活,對軟體的

performance

(效能)引數能夠動態調整,以期達到一定自適應的效果。同時總體的架構設計應該考慮到移植性。

討論:優化絕對不是為了技術優化而優化。架構師首先要清楚軟體所要達到的使用者期望目標。這裡以乙個

omap850

(200mhz arm926ej cpu

300kbps h.264 baseline+48kbps aac+v1

可以做到

audio

流暢,video

達到20-25fps

(frames per second

)。這是個基本目標。這個目標完全是從使用者體驗的角度來考慮的。使用者可以接受

video

降低到15fps

,但是不能容忍

audio

的停頓。使用者可以接受

video

的quality

降低,但是不能容忍

audio

,video

的不同步。這些都是架構師要考慮的要點。在設計上,就要適當提高

audio

執行緒的優先順序,要有丟幀的機制用於調整

video

的fps

,對h.264

,要有關閉

deblock

功能的機制,同樣對於

aac+v1

,要有sbr

的開關。所有這些,都要求模組的介面要足夠靈活,不僅能夠在執行時動態調整效能,也能夠擴充套件新的需求。另外在全域性控制上,如執行緒優先順序的調整,

fps的控制,應該具有一定自適應的能力,

架構設計上的這種彈性正是為了保證軟體的

performance

(表現)能夠達到使用者的心理期望值。設計的本質就是一種權衡,是各類相互制約的模組間的一種權衡。明白這一點,就要求架構設計上對各個模組應有靈活的控制,以保證使用者期望目標為設計出發點,平衡各類資源的使用。

color

conversion

硬體加速器的裝置上,如果原先的

color conversion

模組的介面設計的好,就可以不用改動介面,或者只有一點簡單的改動就可以將模組替換掉。

這裡的問題好像轉移倒可移植性去了,在嵌入式開發中,可移植性應該是架構師嚴肅思考的問題。面對不同的

cpu,不同的

os,不同的硬體加速裝置,架構的設計應該有足夠的彈性去容納這些變化。

可移植性強調了通用,而高效的優化是

localize

的。平衡這個矛盾需要良好的設計。上層模組不能依賴於下層實現,下層模組不能依賴於上層實現,上下層都要依賴於抽象,這就是設計中的依賴倒置原則

(dependency inverse principle)

。總體的架構概念,或者說模組間的關係,模組的介面都是封閉的,固定的,而模組的實現是開放的,擴充套件的,這就是設計中的開閉原則(

open/close principle

)。這兩個原則是保證軟體的可移植性的基礎。

可移植性主要包括

cpu級移植和

oscodec

和color conversion

模組基本上是

cpu相關,而和

osframework

,則主要是

os相關而與

cpu無關。對單純

cpu相關的模組比較容易處理,在

item 15

中我們會討論這一類模組的移植問題。至於

os相關的部分,或者我們通常說的

ap層,移植性的問題則需要非常仔細的考慮,和

os緊密相關的

api如

socket

,thread,ui

等 都要考慮增加乙個

adapter

層,可以考慮定製使用第三方的跨平台類庫。

設計快取架構時需要考慮的因素總結

在設計架構快取的時候,首先要選定快取元件,比如要用local cache,還是redis memcached pika等開源快取元件。如果業務快取需求比較特殊,還要考慮是直接定製開發乙個新的快取元件,還是對開源快取進行二次開發,來滿足業務需要。確定好快取元件後,要根據業務訪問的特點,進行快取資料結構...

架構篇 URI設計原則

author simon 優雅型 羅浮宮 達文西 蒙娜麗莎 中庸型 北京 新聞頻道 新聞id 謝特型 斜槓分隔符 必須用於顯示層次關係正例 反例 使用 提高uri的可讀性正例 禁止在url中使用 目的是提高可讀性,可能被文字檢視器中的下劃線特效遮蔽 反例 禁止使用大寫字母rfc 3986中規定uri...

Flink篇 架構設計介紹

從架構的層面 分為無界流和有界流 無界流資料 有定義流的開始,但沒有定義流的結束。它們會無休止地產生資料。無界流的資料必須持續處理,即資料被攝取後需要立刻處理。我們不能等到所有資料都到達再處理,因為輸入是無限的,在任何時候輸入都不會完成。處理無界資料通常要求以特定順序攝取事件,例如事件發生的順序,以...