如何設(shè)計(jì)網(wǎng)絡(luò)服務(wù)

設(shè)計(jì)需要考慮的因素:

  • Availability: 平均無(wú)故障時(shí)間

  • Performance:響應(yīng)時(shí)間

  • Reliability: 數(shù)據(jù)可靠

  • Scalability:可擴(kuò)展

  • Manageability:可維護(hù)

  • Cost:盡量降低費(fèi)用

如何設(shè)計(jì)

Services

將不同功能解耦到不同的service中。

Paste_Image.png

Redundancy

同一服務(wù)要有多個(gè)實(shí)例,一來(lái)可以解決單點(diǎn)失敗問(wèn)題,二是可以平衡負(fù)載。

數(shù)據(jù)存儲(chǔ)也要有Copy來(lái)防止數(shù)據(jù)丟失。

Paste_Image.png

Partitions

數(shù)據(jù)量太多,則需要進(jìn)行分片,或者分擔(dān)負(fù)載。

Paste_Image.png

訪問(wèn)數(shù)據(jù)如何Scale

Paste_Image.png

隨著訪問(wèn)量增大,app server要盡量使用shared-nothing architecture來(lái)進(jìn)行minimized,訪問(wèn)壓力都會(huì)落到database server。

如何保證database server的scalability和快速訪問(wèn)呢

Caches

Paste_Image.png

Cache有兩種方式:

  • Global Cache:

Cache是獨(dú)立的一個(gè)服務(wù)器

Paste_Image.png
  • Distributed Cache:

每一個(gè)Request Node有自己的Cache,同一請(qǐng)求通過(guò)hash分配到不同Request Node上

Paste_Image.png

Proxies:

在Database server前架設(shè)一個(gè)代理

通過(guò)代理可以將同一內(nèi)容的請(qǐng)求包裝到對(duì)database的一次請(qǐng)求里

Paste_Image.png

也可以將數(shù)據(jù)相近的請(qǐng)求包裝到同一請(qǐng)求里(局部性原理)。

Paste_Image.png

Indexes

Index 可以加速數(shù)據(jù)查詢,可以采取多級(jí)Index,可以減少index占用的空間

Paste_Image.png

Load Balancers

Queues

使用Queue可以解決client寫(xiě)數(shù)據(jù)等待時(shí)間過(guò)長(zhǎng)的問(wèn)題

Paste_Image.png

Refer:

http://www.aosabook.org/en/distsys.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容