創(chuàng )建大規??缮炜s的一體機應用程序的五個(gè)建議
來(lái)源:數字音視工程網(wǎng) 編輯:追憶 2015-01-14 09:34:32 加入收藏
作為一個(gè)一體機應用程序開(kāi)發(fā)者,我目睹了太多創(chuàng )業(yè)公司都集中精力在最短的時(shí)間進(jìn)入此市場(chǎng),但是卻完全忽視了設計的可伸縮性。隨著(zhù)他們客戶(hù)群的不斷增長(cháng),他們開(kāi)始在多個(gè)位置部署一體機,其服務(wù)器負載也增加了,也就導致一體機表現不佳。然后他們驚訝地發(fā)現一體機在大范圍內表現都不是特別好。
可伸縮的設計并不是偶然發(fā)生的,它需要仔細的規劃和前期的時(shí)間投資。否則,隨著(zhù)客戶(hù)群的增加,一體機可能會(huì )面臨大范圍檢修的危險。
以下是創(chuàng )建可伸縮的一體機應用程序的五個(gè)建議,旨在為了幫助你適應我們大多人數正在尋求的巨大增長(cháng)。
1. 卸載一體機上的計算以減少服務(wù)器上的工作負載
要做到可伸縮性,我建議盡可能多地減少一體機的運算。這還可以包括客戶(hù)端緩存、用戶(hù)輸入驗證或者任何可以避免在服務(wù)器上處理的計算。
今天,比較少的應用程序會(huì )依賴(lài)于注冊服務(wù)器生成的HTML,而選擇調用微服務(wù)。通過(guò)在一體機執行HTML操作,只要求服務(wù)器返回數據,大量的處理是在服務(wù)器外進(jìn)行的。這樣就可以騰出服務(wù)器上額外的帶寬和資源,允許以最小化服務(wù)器費用做大規模的一體機部署。
2. 基于您數據的性質(zhì)選擇合適的數據庫引擎
使用正確的數據庫引擎對于可伸縮性來(lái)說(shuō)是至關(guān)重要的。通常SQL Server是正確的選擇,其他時(shí)候,另一種NoSQL數據庫引擎如MongoDB可能更適合數據的性質(zhì)并且在任何規模都能創(chuàng )建更好的性能。通過(guò)分層,你可以將業(yè)務(wù)規則和用戶(hù)界面的數據分開(kāi),這樣就更容易進(jìn)行數據引擎之間的遷移。
你也可以通過(guò)使用混合的內存數據庫機制提高數據庫的性能。大多數現代數據庫引擎現在有能力將通用的表格和數據庫對象移動(dòng)到內存,能夠實(shí)現較快的訪(fǎng)問(wèn)同時(shí)保持持久的完整性和交易。微軟的Hekaton是一個(gè)混合內存數據庫技術(shù)的很好的例子。使用混合內存數據庫機制可以50倍提高數據庫性能。
3.使用一個(gè)可靠的、基于地理位置的內容交付網(wǎng)絡(luò )以實(shí)現迅速交付內容
如果你的系統是長(cháng)距離式分布,那么比較重要的就是使用一個(gè)可靠的能保證網(wǎng)絡(luò )正常運行時(shí)間和數據存儲地理定位的內容交付。像微軟Azure這樣的CDN就可以自動(dòng)檢測一體機的位置并且拉去最近的資源。地理定位服務(wù)可以實(shí)現跨多個(gè)服務(wù)器分發(fā)數據確保最佳性能。國內的56iq數字標牌擁有強大的系統功能和豐富的智能互動(dòng)應用,系統深受用戶(hù)喜愛(ài),已在交通、零售、傳媒、教育、政府、金融、醫療等多個(gè)領(lǐng)域廣泛應用。
4.模塊化的設計和松散的結構以保證可維護性
為了確保一體機工程范圍的可維護性,所以將應用程序分開(kāi)成不同的模塊但是又能一起工作且可以獨立測試是非常重要的。
這些模塊通常包括:
數據存儲:簡(jiǎn)單且有組織并且很符合規格,這樣的結構就可以根據需求與其他種類(lèi)進(jìn)行交換,比如MySQL到SQL Server或者M(jìn)ongoDB。
持久的分層:實(shí)現用戶(hù)界面和數據存儲之間的對話(huà)。
業(yè)務(wù)規則層:與持久的分層進(jìn)行對話(huà),數據可以獨立存儲。處理復雜和簡(jiǎn)單的計算,還可以處理應用程序規則;
用戶(hù)界面:與業(yè)務(wù)規則層對話(huà),用戶(hù)可以通過(guò)與業(yè)務(wù)規則層的通信輸入數據,同時(shí)還可以處理業(yè)務(wù)規則。
5. 定期分析代碼以確保其有效運行
為了讓一體機應用程序能夠規模適當,確保你的代碼運行效率是很重要的。當你只有幾個(gè)一體機部署的時(shí)候,代碼的低效可能會(huì )被忽視。但是部署的規模越大,低效的代碼就會(huì )很明顯地影響整個(gè)體驗。我認識在雅虎和Yelp工作的人,他們會(huì )花很多時(shí)間來(lái)進(jìn)行算法和代碼的校對,哪怕只是快幾毫秒,這對大規模的運行來(lái)說(shuō)可以節省很多時(shí)間。
想象一下你一體機的未來(lái),我希望通過(guò)閱讀這篇文章,你能夠在部署一體機的時(shí)候考慮一下其未來(lái)。
評論comment