自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

高性能、高流量互聯(lián)網(wǎng)應(yīng)用架構(gòu)設(shè)計(jì)實(shí)戰(zhàn)原則

開(kāi)發(fā) 項(xiàng)目管理
本文將介紹幾個(gè)高性能、高流量互聯(lián)網(wǎng)應(yīng)用架構(gòu)設(shè)計(jì)實(shí)戰(zhàn)原則,包括假設(shè)故障總會(huì)發(fā)生、數(shù)據(jù)分區(qū)處理、冗余、保持簡(jiǎn)捷等等。

則一:假設(shè)故障總會(huì)發(fā)生(Design with failure in mind)

在設(shè)計(jì)和實(shí)現(xiàn)大型互聯(lián)網(wǎng)在線應(yīng)用時(shí),架構(gòu)師必須考慮到系統(tǒng)各模塊、各應(yīng)用服務(wù)器、各開(kāi)源應(yīng)用軟件的故障比率和失效的潛在原因。當(dāng)服務(wù)的可用性(Availability)成為系統(tǒng)設(shè)計(jì)的首要目標(biāo)時(shí),尤其需要在設(shè)計(jì)階段就充分考慮如何在系統(tǒng)某部分發(fā)生故障時(shí),仍然保持一定的服務(wù)可用性。一些基本的假設(shè)包括:

◆沒(méi)有Bug的軟件不存在,只是故障率高低不同,應(yīng)優(yōu)先關(guān)注高故障率應(yīng)用。

◆硬件總會(huì)發(fā)生故障,需要備份和冗余。

◆導(dǎo)致某應(yīng)用崩潰的請(qǐng)求,如不能及時(shí)終止或被redirect,可能會(huì)導(dǎo)致所有服務(wù)器一個(gè)接一個(gè)的癱瘓。

◆構(gòu)建僅包括最簡(jiǎn)單輸入輸出邏輯和固定輸出內(nèi)容的Dot 模式Server,以應(yīng)對(duì)應(yīng)用服務(wù)群大面積癱瘓或負(fù)載極限發(fā)生時(shí)的服務(wù)響應(yīng)。

◆每次release正式升級(jí)前,在模擬生產(chǎn)環(huán)境的Staging環(huán)境運(yùn)行版本測(cè)試

原則二:數(shù)據(jù)分區(qū)處理(Partition Your Data

在分布式計(jì)算環(huán)境下,如何高效的處理海量數(shù)據(jù)?如何在Bug發(fā)生后更加容易的重新批處理?一個(gè)基本的設(shè)計(jì)原則就是分區(qū)(Partition),即將待處理信息按照生成節(jié)點(diǎn)、內(nèi)在一致性(Self Contain)、時(shí)間等因素進(jìn)行分組,讓每個(gè)平行處理節(jié)點(diǎn)可盡量?jī)H處理切分后的數(shù)據(jù),而減少節(jié)點(diǎn)間的數(shù)據(jù)交換。分區(qū)的基本原則包括:

◆應(yīng)用流量均衡Load Balance和數(shù)據(jù)分區(qū)結(jié)合

◆容易在分組內(nèi)進(jìn)行再分區(qū)

◆減少分組數(shù)據(jù)之間的狀態(tài)依賴(lài)

◆減少數(shù)據(jù)中心之間的數(shù)據(jù)交換

原則三:冗余(Redundancy)

冗余幾乎是高可用系統(tǒng)設(shè)計(jì)的必然選擇,也是老生常談的話(huà)題,然而如何做到成本與效率的***平衡則是架構(gòu)設(shè)計(jì)考慮的重點(diǎn)??梢詤⒖嫉慕?jīng)驗(yàn)包括:

◆優(yōu)先減少單點(diǎn)故障。

◆單個(gè)應(yīng)用可快速重啟恢復(fù)。

◆應(yīng)用間減少啟動(dòng)和運(yùn)行依賴(lài),盡量可獨(dú)立工作。

◆與其依賴(lài)熱備冗余,不如建立服務(wù)中斷后的快速恢復(fù)預(yù)案(依賴(lài)熱備系統(tǒng),在實(shí)戰(zhàn)中總是很難理想地恢復(fù)全部服務(wù))。

原則四:監(jiān)控,監(jiān)控,還是監(jiān)控(Monitor, monitor, monitor)

從應(yīng)用部署到數(shù)據(jù)中心的***天開(kāi)始,就要意識(shí)到,沒(méi)有人能夠7x24小時(shí)的盯著幾十個(gè)應(yīng)用系統(tǒng),近百個(gè)應(yīng)用程序的運(yùn)行狀態(tài)。有沒(méi)有down機(jī),有沒(méi)有程序崩潰,有沒(méi)有數(shù)據(jù)庫(kù)死鎖,服務(wù)是否始終可用,這些不但是困擾工程師的問(wèn)題,更是牽扯到客戶(hù)支持,乃至建立產(chǎn)品品牌的重要問(wèn)題。如果你想"一切盡在掌握",不想經(jīng)常(偶爾總是有的,因?yàn)槲粗收峡倳?huì)發(fā)生)在凌晨被運(yùn)營(yíng)團(tuán)隊(duì)的電話(huà)叫醒,那么趕快set up你的自動(dòng)監(jiān)控系統(tǒng),讓你的生活輕松起來(lái)吧。

至少有兩大類(lèi)的Monitor群組需要建立起來(lái):

從客戶(hù)角度:

◆服務(wù)的可用時(shí)間/失效時(shí)間

◆服務(wù)響應(yīng)延遲

◆客戶(hù)累積服務(wù)次數(shù)

從系統(tǒng)容量角度:

◆各應(yīng)用服務(wù)器的CPU/內(nèi)存/存儲(chǔ)負(fù)載統(tǒng)計(jì)

◆高峰與平均比(Peak to mean ratio)

◆應(yīng)用服務(wù)失效/崩潰/延遲報(bào)警

◆應(yīng)用服務(wù)自動(dòng)恢復(fù)通知

◆數(shù)據(jù)同步延遲和失效警報(bào)

◆后臺(tái)日常處理日?qǐng)?bào)/周報(bào)/月報(bào),趨勢(shì)圖

原則五:保持簡(jiǎn)捷(Keep It Simple Stupid, KISS)

傳統(tǒng)軟件開(kāi)發(fā)中的變更管理是一個(gè)難題,在互聯(lián)網(wǎng)應(yīng)用系統(tǒng)開(kāi)發(fā)中變更則比過(guò)去更加頻繁,同時(shí)對(duì)產(chǎn)品質(zhì)量的要求則更高。面對(duì)這個(gè)難題,普遍的結(jié)論是,唯一不變的就是變化本身。然而實(shí)戰(zhàn)中,控制變化的規(guī)模和影響,仍然需要找出一些"以不變應(yīng)萬(wàn)變"的準(zhǔn)則,這對(duì)于提高產(chǎn)品開(kāi)發(fā)效率和保持高質(zhì)量至關(guān)重要。

分清"保持"與"非保持"內(nèi)容

◆業(yè)務(wù)需求總會(huì)變化,屬于"非保持",架構(gòu)設(shè)計(jì)上充分考慮其變化,而非特化。

◆而軟件本身像一個(gè)不斷成長(zhǎng)進(jìn)化的生命,有自己的DNA。找到DNA,就找到了"保持",例如設(shè)計(jì)的可擴(kuò)展性,可維護(hù)性,可測(cè)試性。

簡(jiǎn)單原則

◆代碼寫(xiě)得越多,維護(hù)越復(fù)雜,需要不斷地通過(guò)重構(gòu)來(lái)簡(jiǎn)化。

◆復(fù)雜的系統(tǒng)容易出錯(cuò),維護(hù)成本高,要避免設(shè)計(jì)單個(gè)復(fù)雜系統(tǒng)。

◆如果測(cè)試人員需要費(fèi)九牛二虎之力才能理解"天才"的設(shè)計(jì)和實(shí)現(xiàn),***拋棄它。否則有一天你會(huì)為測(cè)試覆蓋率難以提高,故障重現(xiàn)困難而沮喪。

原則六:即時(shí)架構(gòu)(Just in Time Architect)

即時(shí)架構(gòu)是在尋找***設(shè)計(jì)和資源限制之間所做出的實(shí)用選擇,此原則可能更加適用于快速變化的軟件開(kāi)發(fā)領(lǐng)域,例如互聯(lián)網(wǎng),而非嚴(yán)謹(jǐn)?shù)漠a(chǎn)品線軟件開(kāi)發(fā)。"設(shè)計(jì)"和"重構(gòu)"成為每個(gè)版本開(kāi)發(fā)周期中不斷重復(fù)的迭代步驟。

即時(shí)設(shè)計(jì)

◆在每個(gè)版本只有一個(gè)月的設(shè)計(jì)、開(kāi)發(fā)和測(cè)試周期的約束下,要將基礎(chǔ)設(shè)施(Infrastructure)一次設(shè)計(jì)到***狀態(tài)是不可能的。

◆基礎(chǔ)架構(gòu)可滿(mǎn)足未來(lái)6個(gè)月至1年(視業(yè)務(wù)增長(zhǎng)與投入的預(yù)測(cè)而定)應(yīng)用的擴(kuò)展要求即可。

即時(shí)重構(gòu)

◆知道何時(shí)、何處需要重構(gòu)是關(guān)鍵,提前籌劃,而不要臨陣磨槍。

◆要為重構(gòu)預(yù)留足夠的開(kāi)發(fā)資源。在FreeWheel,新產(chǎn)品開(kāi)發(fā),現(xiàn)有產(chǎn)品維護(hù)和基礎(chǔ)架構(gòu)重構(gòu)的資源比例大約是25% : 50% : 25%.

◆重構(gòu)不是"推到重來(lái)",每次重構(gòu)一部分要好得多,否則你的測(cè)試團(tuán)隊(duì)負(fù)擔(dān)太重,會(huì)導(dǎo)致產(chǎn)品質(zhì)量波動(dòng)。

以上是FreeWheel中國(guó)研發(fā)團(tuán)隊(duì)在研發(fā)Monetization Rights Management,MRM在線視頻廣告平臺(tái)過(guò)程中的一些實(shí)戰(zhàn)經(jīng)驗(yàn)分享,在QCon 2009 Beijing大會(huì)演講內(nèi)容基礎(chǔ)上部分整理。

【編輯推薦】

  1. 小規(guī)模低性能低流量網(wǎng)站架構(gòu)設(shè)計(jì)
  2. 大型網(wǎng)站架構(gòu)不得不考慮的10個(gè)問(wèn)題
  3. 大中型網(wǎng)站架構(gòu)探秘
責(zé)任編輯:彭凡 來(lái)源: IT168
相關(guān)推薦

2020-08-27 14:22:29

MySQL數(shù)據(jù)庫(kù)架構(gòu)設(shè)計(jì)

2023-10-31 17:56:02

高并發(fā)設(shè)計(jì)架構(gòu)

2017-10-27 14:52:31

互聯(lián)網(wǎng)高可用架構(gòu)高可用

2017-09-25 12:11:14

高可用微服務(wù)架構(gòu)

2018-12-26 08:54:06

架構(gòu)開(kāi)源框架微服務(wù)

2009-04-22 10:16:37

網(wǎng)站架構(gòu)Web數(shù)據(jù)冗余

2011-04-22 16:23:16

ASP.NET動(dòng)態(tài)應(yīng)用系統(tǒng)

2017-01-11 21:40:03

互聯(lián)網(wǎng)架構(gòu)高并發(fā)

2019-04-10 14:10:02

高并發(fā)分布式系統(tǒng)架構(gòu)

2015-12-15 10:03:24

互聯(lián)網(wǎng)微服務(wù)架構(gòu)

2020-01-17 11:00:23

流量系統(tǒng)架構(gòu)

2016-12-06 11:56:13

互聯(lián)網(wǎng)架構(gòu)高可用

2019-03-18 07:08:53

高可用互聯(lián)網(wǎng)架構(gòu)分布式

2024-05-27 08:32:45

2023-08-25 15:11:00

2023-07-09 15:24:05

架構(gòu)設(shè)計(jì)思想AKF

2023-11-27 17:37:57

高性能云原生數(shù)據(jù)庫(kù)

2016-09-22 15:55:39

互聯(lián)網(wǎng)架構(gòu)容量設(shè)計(jì)

2019-05-13 10:30:34

互聯(lián)網(wǎng)架構(gòu)容量

2014-08-15 17:57:03

應(yīng)用性能
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)