從零開始設(shè)計(jì)和搭建你的體育賽事比分網(wǎng)站 (3) - 原型與架構(gòu)設(shè)計(jì)
上一篇:從零開始設(shè)計(jì)和搭建你的體育賽事比分網(wǎng)站 (2) - 需求整理
3 原型與架構(gòu)設(shè)計(jì)
上一模塊中,我們分別從三個(gè)部分:需求的收集與劃分、需求的分析、需求的放大與匯總,以企業(yè)團(tuán)隊(duì)中產(chǎn)品經(jīng)理的角度,分析了如何進(jìn)行體育賽事比分網(wǎng)站項(xiàng)目的需求整理。
而在這一模塊中,就模塊而言其實(shí)可以分成原型設(shè)計(jì)和架構(gòu)設(shè)計(jì)兩個(gè)模塊來介紹,但是我們側(cè)重于架構(gòu)設(shè)計(jì)的介紹,所以將這兩部分合并為一個(gè)模塊。本模塊將會(huì)分別從快速原型設(shè)計(jì)和網(wǎng)站架構(gòu)設(shè)計(jì)兩部分出發(fā),邁出體育賽事比分網(wǎng)站搭建的下一步。

3.1 快速原型設(shè)計(jì)
網(wǎng)站原型是設(shè)計(jì)方案的表達(dá),是產(chǎn)品經(jīng)理、交互設(shè)計(jì)師的產(chǎn)出物之一,也是項(xiàng)目團(tuán)隊(duì)的其他成員的重要參考和評(píng)估的依據(jù)。網(wǎng)站原型其實(shí)也就是頁面界別的信息架構(gòu)、文案設(shè)計(jì)以及頁面交互的綜合,是網(wǎng)站功能與內(nèi)容的示意圖。
3.1.1 界定原型范圍
在設(shè)計(jì)網(wǎng)站原型之前,我們需要明確幾個(gè)關(guān)鍵性問題來界定原型范圍:
什么需要原型化?網(wǎng)站的優(yōu)秀設(shè)計(jì),比如復(fù)雜的交互、新添加的功能以及流程等;比如為用戶提供與眾不同的搜索體驗(yàn)時(shí),就需要原型化網(wǎng)站搜索結(jié)果,引入多面搜索或添加不離開搜索界面即可預(yù)覽文檔的功能等等;多少網(wǎng)站部件需要原型化?集中添加一些將來80%時(shí)間內(nèi)會(huì)使用的20%的功能要素,即原型化一些最常用的關(guān)鍵性功能;設(shè)計(jì)原型故事場(chǎng)景確定了需要進(jìn)行原型化的網(wǎng)站區(qū)域之后,將他們組合成一個(gè)或多個(gè)場(chǎng)景,根據(jù)原型所模擬的用戶體驗(yàn)指定統(tǒng)一的路徑;規(guī)劃原型迭代一開始廣泛全面的對(duì)網(wǎng)站進(jìn)行原型化,然后逐步深入到解決方案選定區(qū)域的原型化,如此由淺入深逐漸完成整個(gè)軟件的原型化,加快迭代速度。3.1.2 合適的原型保真度
保真度一般是指原型與最終解決方案的相似程度,他擁有多個(gè)維度:

而按照精細(xì)程度進(jìn)行劃分,原型的保真度也分為:

選擇合適的原型保真度時(shí),通常沒有一個(gè)確定的答案。大多數(shù)網(wǎng)站原型設(shè)計(jì)都是從繪制草圖開始,然后根據(jù)系統(tǒng)的復(fù)雜程度和保真度的要求,將其轉(zhuǎn)化為高保真的原型。
3.1.3 高效的原型設(shè)計(jì)工具
根據(jù)不同的設(shè)計(jì)需求,你可以選擇和使用不同的原型工具。在這里我舉幾個(gè)常用的工具:



3.2 網(wǎng)站架構(gòu)設(shè)計(jì)
在這里我們以支持分布式、高并發(fā)、高可用為架構(gòu)目標(biāo)進(jìn)行設(shè)計(jì)。
3.2.1 網(wǎng)站初級(jí)架構(gòu)
一般網(wǎng)站,剛開始的做法是三臺(tái)服務(wù)器,一臺(tái)部署應(yīng)用,一臺(tái)部署數(shù)據(jù)庫,一臺(tái)部署NFS文件系統(tǒng),這是較早之前傳統(tǒng)的做法,當(dāng)并發(fā)量高的時(shí)候容易出現(xiàn)性能問題。

目前主流的網(wǎng)站架構(gòu)一般會(huì)采用集群的方式,進(jìn)行高可用設(shè)計(jì),至少是下面這樣子:

3.2.2 網(wǎng)站容量預(yù)估與架構(gòu)分析
預(yù)估步驟一般為:
注冊(cè)用戶數(shù)-日均UV量-每日的PV量-每天的并發(fā)量;峰值預(yù)估:平常量的2~3倍;根據(jù)并發(fā)量(并發(fā),事務(wù)數(shù)),存儲(chǔ)容量計(jì)算系統(tǒng)容量。假設(shè)通過預(yù)估之后,我們存在幾個(gè)問題(為了后續(xù)介紹優(yōu)化,這里假設(shè)一下):
需要部署10臺(tái)web服務(wù)器,并且這10臺(tái)web服務(wù)器只有高峰期才會(huì)用到,例如搶購,活動(dòng)等等,存在大量浪費(fèi);所有網(wǎng)站應(yīng)用都部署在同一臺(tái)服務(wù)器,造成應(yīng)用之間耦合嚴(yán)重,需要進(jìn)行垂直或水平切分;大量的代碼冗余;服務(wù)器進(jìn)行Session同步需要耗費(fèi)大量的內(nèi)存和網(wǎng)絡(luò)帶寬;操作數(shù)據(jù)需要頻繁訪問數(shù)據(jù)庫。那么根據(jù)以上問題,我們可以進(jìn)行如下的架構(gòu)優(yōu)化:

3.2.3 網(wǎng)站架構(gòu)優(yōu)化
a. 業(yè)務(wù)拆分
根據(jù)業(yè)務(wù)邏輯進(jìn)行垂直切分,可以將我們的體育賽事比分網(wǎng)站劃分為:
產(chǎn)品子系統(tǒng);訂單子系統(tǒng);支付子系統(tǒng);用戶子系統(tǒng);客服子系統(tǒng);短信郵件子系統(tǒng);定時(shí)任務(wù)子系統(tǒng);業(yè)務(wù)拆分的作用:
每個(gè)子系統(tǒng)可交由專門的人負(fù)責(zé);解決模塊之間耦合以及擴(kuò)展性問題;每個(gè)子系統(tǒng)單獨(dú)部署,避免集中部署導(dǎo)致一個(gè)應(yīng)用掛了,全部應(yīng)用不可用的問題。根據(jù)業(yè)務(wù)子系統(tǒng)進(jìn)行等級(jí)定義,分為核心系統(tǒng)和非核心系統(tǒng):
核心系統(tǒng):產(chǎn)品子系統(tǒng)、訂單子系統(tǒng)、支付子系統(tǒng);非核心系統(tǒng):評(píng)論子系統(tǒng)、客服子系統(tǒng)、接口子系統(tǒng)。等級(jí)定義的作用:核心和非核心子系統(tǒng)組合部署,用于流量突然爆發(fā)時(shí),對(duì)關(guān)鍵應(yīng)用進(jìn)行保護(hù),關(guān)閉非核心子系統(tǒng),實(shí)現(xiàn)自動(dòng)降級(jí)。


b.應(yīng)用集群部署
分布式部署:將業(yè)務(wù)拆分后的應(yīng)用單獨(dú)部署,應(yīng)用直接通過RPC進(jìn)行遠(yuǎn)程調(diào)用;集群部署:應(yīng)對(duì)高可用的要求,每個(gè)應(yīng)用至少部署兩臺(tái)服務(wù)器進(jìn)行集群部署;負(fù)載均衡:高可用系統(tǒng)必須一般應(yīng)用通過負(fù)載均衡實(shí)現(xiàn)高可用;分布式服務(wù)通過內(nèi)置的負(fù)載均衡實(shí)現(xiàn)高可用;關(guān)系型數(shù)據(jù)庫通過主備方式實(shí)現(xiàn)高可用;
c.多級(jí)緩存
緩存按照存放的位置,可以分為兩種:本地緩存和分布式緩存。在這里我們采用二級(jí)緩存的方式進(jìn)行緩存設(shè)計(jì):
一級(jí)緩存:本地緩存;二級(jí)緩存:分布式緩存;一級(jí)緩存,緩存數(shù)據(jù)字典和常用的熱點(diǎn)數(shù)據(jù)等不可變/有規(guī)律變化的信息。二級(jí)緩存,緩存需要的所有緩存。當(dāng)一級(jí)緩存過期或不可用時(shí),訪問二級(jí)緩存的數(shù)據(jù)。如果二級(jí)緩存也沒有,則訪問數(shù)據(jù)庫。
緩存的比例一般1:4即可考慮使用緩存。根據(jù)業(yè)務(wù)特性可使用以下緩存過期策略:
緩存自動(dòng)過期;緩存觸發(fā)過期;
d.單點(diǎn)登錄
系統(tǒng)分割為多個(gè)子系統(tǒng)進(jìn)行部署之后,我們可以采用Session同步、Cookies、分布式Session方式避免會(huì)話管理問題。
在體育賽事比分網(wǎng)站架構(gòu)設(shè)計(jì)中,我們可以采用分布式Session,建立完善的單點(diǎn)登錄或賬戶管理系統(tǒng)。流程如下:
用戶第一次登錄時(shí),將會(huì)話信息寫入分布式Session;用戶再次登錄時(shí),調(diào)用分布式Session,判斷是否有會(huì)話信息,如果沒有則跳轉(zhuǎn)到登錄頁;分布式Session一般采用Cache中間件實(shí)現(xiàn),可以使用Redis實(shí)現(xiàn)持久化,方便分布式Session宕機(jī)后,可以從持久化存儲(chǔ)Redis中加載會(huì)話信息;存入會(huì)話時(shí),可以設(shè)置會(huì)話保持的時(shí)間,比如10分鐘,超過后自動(dòng)超時(shí);
e.數(shù)據(jù)庫集群
大型網(wǎng)站需要存儲(chǔ)海量的數(shù)據(jù),為了達(dá)到海量數(shù)據(jù)存儲(chǔ)、高可用、高性能,一般采用讀寫分離和分庫分表的方式進(jìn)行架構(gòu)設(shè)計(jì)。
讀寫分離一般解決讀比例大于寫比例的場(chǎng)景,可采用一主一備、一主多備貨多主多備方式。
我們將體育賽事比分網(wǎng)站在業(yè)務(wù)拆分的基礎(chǔ)上,結(jié)合分庫分表和讀寫分離:
業(yè)務(wù)拆分后,每個(gè)子系統(tǒng)需要單獨(dú)的庫;如果單獨(dú)的庫太大,可以根據(jù)業(yè)務(wù)特性,進(jìn)行再次分庫,比如商品庫;分庫后,如果表中的數(shù)據(jù)量很大,則進(jìn)行分表,一般可以按照ID、時(shí)間等進(jìn)行分表;在分庫分表的基礎(chǔ)上進(jìn)行讀寫分離。
f.服務(wù)化
將多個(gè)子系統(tǒng)公用的功能進(jìn)行抽取,作為公共服務(wù)使用。比如體育賽事比分網(wǎng)站的用戶子系統(tǒng)就可以抽取為公用的服務(wù)。

g.消息隊(duì)列
消息隊(duì)列可以解決子系統(tǒng)之間的耦合,實(shí)現(xiàn)異步、高可用、高性能,是分布式系統(tǒng)的標(biāo)準(zhǔn)配置。在體育賽事比分網(wǎng)站中,消息隊(duì)列主要應(yīng)用在購物下單、信息發(fā)送環(huán)節(jié)。
用戶創(chuàng)建訂單后,寫入消息隊(duì)列,返回客戶端;短信郵件子系統(tǒng)讀取消息隊(duì)列信息,完成短信與郵件的發(fā)送;定時(shí)任務(wù)子系統(tǒng)讀取消息隊(duì)列信息,檢測(cè)訂單支付狀態(tài);h.其他架構(gòu)
除了以上介紹的業(yè)務(wù)拆分、應(yīng)用集群、多級(jí)緩存、單點(diǎn)登錄、數(shù)據(jù)庫集群、服務(wù)化、消息隊(duì)列外,還有CDN、反向代理、分布式文件系統(tǒng)等架構(gòu)技術(shù)。
3.2.4 架構(gòu)總結(jié)
本模塊中,我們從以下幾個(gè)方面大概介紹了如何進(jìn)行體育賽事比分網(wǎng)站的原型與架構(gòu)設(shè)計(jì)。下一個(gè)模塊我們將會(huì)介紹如何進(jìn)行前后端開發(fā),敬請(qǐng)期待!
飛鯨體育數(shù)據(jù) —— 球探網(wǎng)12年匠心打造,實(shí)時(shí)、海量、可靠的體育數(shù)據(jù)服務(wù)
更多技術(shù)干貨敬請(qǐng)關(guān)注:飛鯨體育數(shù)據(jù)-知乎
掃描二維碼推送至手機(jī)訪問。
版權(quán)聲明:本文由財(cái)神資訊-領(lǐng)先的體育資訊互動(dòng)媒體轉(zhuǎn)載發(fā)布,如需刪除請(qǐng)聯(lián)系。