用java編程做網(wǎng)站windows優(yōu)化大師的優(yōu)點
一.簡單介紹:
????????Redis是用來在內(nèi)存中, 存儲數(shù)據(jù)的, 他的初心是用來搞'消息中間件'(或者說消息隊列 很熟悉了吧~~),但是呢用的不多,他現(xiàn)在主要是用來做 數(shù)據(jù)庫,緩存
????????用來存儲數(shù)據(jù), 為什么不直接存儲呢? ? Redis的優(yōu)勢就在于'分布式系統(tǒng)'
二.分布式系統(tǒng)
????????要說其分布式系統(tǒng),簡單想想都能感覺到~分布開,說明應(yīng)該不只有一個~~ 那我們從最底層的開始,如果只有一個系統(tǒng)的時候又是什么呢?為什么要搞出那么多的系統(tǒng)?難道復(fù)雜程度不會直線上升嗎?
1)單機架構(gòu): 只有一臺主機,負(fù)責(zé)所有的工作 應(yīng)用服務(wù)器(處理業(yè)務(wù)邏輯)->存儲服務(wù)器(記錄數(shù)據(jù))
????????okk~~我們都知道,服務(wù)器處理請求的時候,每一次都要消耗一些資源,那資源太多了處理不過來了,怎么辦?
????????兩個辦法~~i) 節(jié)流: 軟件優(yōu)化~性能測試,哪里不行優(yōu)化哪里(有一定的技術(shù)要求)
????????????????????????? ii)開源 -> 簡單粗暴,哪里資源不夠擴充哪里,當(dāng)然這邊必然有上限啊 --> 那一臺擴展到極限了,我們就引入多臺~~這個時候系統(tǒng)就叫'分布式系統(tǒng)'了
2)分布式系統(tǒng) : 多臺主機,負(fù)責(zé)工作(所以,復(fù)雜程度是上升的~)
????????這個時候,應(yīng)用服務(wù)器和存儲服務(wù)器也不在一臺主機上了, 根據(jù)他們的業(yè)務(wù)邏輯不同,我們分別對應(yīng)更好的硬件給他們,性價比更高
????????如果應(yīng)用服務(wù)器承擔(dān)不了請求, 我們就再擴充增加應(yīng)用服務(wù)器,然后利用負(fù)載均衡給他們相對平均的分配任務(wù)
????????如果存儲服務(wù)器承擔(dān)不了數(shù)據(jù), 我們就也增加, 搞出一個主數(shù)據(jù)庫(專門用來寫數(shù)據(jù)),之后讓他把數(shù)據(jù)同步到從數(shù)據(jù)庫(專門讀取數(shù)據(jù))就可以了~~~敲黑板:一主可多從
????????數(shù)據(jù)庫的表很大怎么辦? 我們這個時候可以進行分庫分表呀~~就像一個大的項目,拆分成不同的小任務(wù)~
????????但是,數(shù)據(jù)庫響應(yīng)很慢,能不能解決一下?? 其實我們都知道~有一些高頻的信息它能滿足絕大部分需求,那我們將這些重點信息扔到緩存里,不就行了嗎!(Redis在分布式系統(tǒng)中,就扮演緩存的角色~~ -> 其實有一個問題,數(shù)據(jù)庫如果修改數(shù)據(jù),緩存這里怎么及時修改)
????????有沒有發(fā)現(xiàn),其實這樣擴充擴充,很復(fù)雜? 我們其實可以搞出微服務(wù)架構(gòu)~拆分成更多,功能更單一,更小的服務(wù)器~~但是這件事是有利弊的
簡單來說,當(dāng)一臺服務(wù)器不足以去處理請求,我們就引入多臺->分布式系統(tǒng), 什么不足就增添什么,對于數(shù)據(jù)存儲的話,搞出來提高讀取速度的緩存數(shù)據(jù)庫,讀寫各肩其職的主從數(shù)據(jù)庫,以及庫表太大的分庫分表操作