伺服器端設計的思想 方法及應用

2021-08-11 14:58:48 字數 1290 閱讀 6893

伺服器端設計的思想、方法及應用

當遇到乙個業務需求時:

要先了解使用場景是什麼樣子?

需要提供哪些字段,怎麼組織存放它們?

要提供哪些查詢功能?

以後是否需要更多的擴充套件字段?

查詢的qps預估是多少?

是否需要關聯其他業務的資料?

有沒有聯合其他資料的複雜查詢場景?

用以上問題來決定:

是用mysql還是hbase?

是用單錶還是多表?

是用快取還是直接查庫?

是用redis還是用memcache還是用其他nosql資料庫?

是引入opensearch還是分庫分表鍵就能滿足查詢需求?

然後再考慮:

是否需要考慮多地機房部署?

在變更很頻繁和不頻繁的兩種場景下,多地機房的資料同步的一致性如何保證?

多地機房快取的一致性同步怎樣解決?

如果使用了非同步訊息,應該如何設計多地機房的消費情況,是同時消費還是某地單一消費?

------

乙個業務的實現方案不止乙個,各有各的優點,怎樣衡量和選擇呢?

如何做對現有業務的改動量最少?

如何做使未來業務擴充套件性更好?

如何做可以支撐未來可以預期的大流量?

如何做可以在現有資源現有時間內提交乙個比較合理的方案?

無論怎麼抉擇,都要想清楚現階段下未來一兩年內我們能達到的最優架構方案是什麼?一旦有了這個方向,所有現在的設計都要向最終的這個方案靠攏。

業務在發展,人也在進步,架構也會不斷調整演進,好的架構是不斷隨著業務發展而演進出來的,不可能在最開始的時候定下來,所以,擁抱變化是架構師必備的技能,一兩年內的最優架構也需定時review確保方向正確。

---同時作為架構設計人員,知識面一定要廣闊,不斷了解學習評估業界的各種技術,做到知曉哪些技術適用於哪些場景。自己提出的方案有什麼樣的侷限,未來可能遇到哪些業務和效能上的挑戰,那時具體的解決方案的方向是什麼?成本大概有多大?

現實中,最怕乙個人學了乙個新技術,就想在所有業務上都實踐一把,變成了乙個手裡拿著大錘,看什麼都是螺絲刀的人。

同時,優化別人的**或要統一若干介面之前,一定要先搞明白為什麼會有這樣的**和這麼多的介面,知其所以然是必做的乙個調研。

---gof的《設計模式》和mf的《重構》是怎麼強調也不為過的兩本書,每隔一段時間,翻出來溫故而知新是極好的習慣。

---跑題一下,以下兩個方面在業務開發中也是非常重要的事情:

2.設計和開發人員不可盲目遵守產品經理(pd)的需求,要有自己的業務思考,和pd充分溝通討論後再進行設計開發實現。拒絕做無腦的編碼人員。

---謝謝**討論。:d

php socket客戶端及伺服器端應用例項

經常有朋友會對php的socket應用充滿疑惑,本文就以例項 作一講解,希望能對初學php的朋友起到一點幫助作用 具體 如下 1.伺服器端 class socketserver private function showerror error 開始進行socket伺服器端監聽埠 public fun...

php socket客戶端及伺服器端應用例項

經常有朋友會對php的socket應用充滿疑惑,本文就以例項 作一講解,希望能對初學php的朋友起到一點幫助作用 具體 如下 1.伺服器端 private function showerror error 開始進行socket伺服器端監聽埠 public function start 繫結 if s...

Online game伺服器端設計(3)

下面我想來談談關於伺服器上npc的設計以及npc智慧型等一些方面涉及到的問題。首先,我們需要知道什麼是npc,npc需要做什麼。npc的全稱是 non player character 很顯然,他是乙個character,但不是玩家,那麼從這點上可以知道,npc的某些行為是和玩家類似的,他可以行走,...