上一篇我們介紹了nginx實(shí)現(xiàn)的負(fù)載均衡和動靜分離,可看這邊。
仲巴ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為成都創(chuàng)新互聯(lián)的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!我們在文章的末尾說到,負(fù)載均衡需要面臨的一個問題是內(nèi)存數(shù)據(jù)的同步。例如:我有A,B兩臺服務(wù)器做了負(fù)載均衡,當(dāng)我在A服務(wù)器上執(zhí)行了登錄并且將登錄數(shù)據(jù)存入session的時候,這些session數(shù)據(jù)只存在于A服務(wù)器上,而沒有在B服務(wù)器上,假如在處理下一個請求的時候,我需要用到session的數(shù)據(jù),而不巧的是,這個請求剛好被交由B服務(wù)器來處理,這時候就會出現(xiàn)B服務(wù)器拿不到session數(shù)據(jù)的情況,從而造成錯誤。
這是一個無法避免的問題,有若干的解決方案,歸結(jié)起來都是要實(shí)現(xiàn)session等數(shù)據(jù)在各負(fù)載均衡分支中的同步,第一種想到的方案是把這些數(shù)據(jù)放在mysql等數(shù)據(jù)庫,也就是說存在磁盤,但是我們都知道session之所以出現(xiàn)是因?yàn)樗窃趦?nèi)存中的,程序讀取內(nèi)存的數(shù)據(jù)要遠(yuǎn)遠(yuǎn)比讀取磁盤的數(shù)據(jù)快,所以我們把一些經(jīng)常用到的東西都放在session里面。
有沒有一種數(shù)據(jù)庫,是存放在內(nèi)存中的呢?這就是redis。通俗的講,它就是一個數(shù)據(jù)庫,但是這個數(shù)據(jù)庫是存在與內(nèi)存里面的,所以存取起來速度要比讀取磁盤的數(shù)據(jù)快得多。又因?yàn)樗且粋€數(shù)據(jù)庫,所以可以實(shí)現(xiàn)數(shù)據(jù)的同步。
我們把session數(shù)據(jù)存放在redis中,然后所有的集群分支都可以去訪問這個數(shù)據(jù)庫里面的東西,這就是全局緩存的原理。
1.第一步是安裝redis,我的服務(wù)器是windows的,下載的是免安裝版本,解壓以后就可以了,其目錄如下。一開始redis是默認(rèn)不需要密碼,如果想要設(shè)置密碼,可以進(jìn)入redis.windows.conf文件下找到requirepass,刪除前面的#號,在其后面便可以設(shè)置密碼。
2.從cmd進(jìn)入redis的根目錄,鍵入如下指令:redis-server.exeredis.windows.conf。這樣就可以啟動redis了,如果啟動成功,則會出現(xiàn)下面畫面。當(dāng)然還可以修改conf文件,加上密碼。requirepass xxxxx
3.接下來我們就可以做一些配置工作,來實(shí)現(xiàn)session數(shù)據(jù)的全局緩存。
1)首先是添加jar包,如果你是maven項目,需要在pom.xml加入下面代碼
org.springframework.session spring-session-data-redis 1.3.1.RELEASE pom
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。