云上運(yùn)維及應(yīng)用實(shí)踐教程(第2版) 課件 06. 基礎(chǔ)架構(gòu)之高速緩存_第1頁
云上運(yùn)維及應(yīng)用實(shí)踐教程(第2版) 課件 06. 基礎(chǔ)架構(gòu)之高速緩存_第2頁
云上運(yùn)維及應(yīng)用實(shí)踐教程(第2版) 課件 06. 基礎(chǔ)架構(gòu)之高速緩存_第3頁
云上運(yùn)維及應(yīng)用實(shí)踐教程(第2版) 課件 06. 基礎(chǔ)架構(gòu)之高速緩存_第4頁
云上運(yùn)維及應(yīng)用實(shí)踐教程(第2版) 課件 06. 基礎(chǔ)架構(gòu)之高速緩存_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

06基礎(chǔ)架構(gòu)之高速緩存云上運(yùn)維及應(yīng)用實(shí)踐6.2知識點(diǎn)講解任務(wù)學(xué)習(xí)6.1場景導(dǎo)入

目錄CONTENTS6.1場景導(dǎo)入將“慕課云”系統(tǒng)部署在負(fù)載均衡SLB的集群環(huán)境下會出現(xiàn)這樣的問題:在訪問系統(tǒng)時明明已經(jīng)登錄系統(tǒng),但在訪問過程中總是會跳轉(zhuǎn)到未登錄的頁面。1.提出問題6.1場景導(dǎo)入以上原因是由于用戶登錄的會話信息丟失導(dǎo)致的。這就需要將用戶登錄信息進(jìn)行緩存處理,以解決使用負(fù)載均衡,在集群環(huán)境下用戶會話保持問題。由于系統(tǒng)的業(yè)務(wù)要求,在訪問每個頁面時需要頻繁獲取當(dāng)前登錄用戶信息,從云數(shù)據(jù)庫的監(jiān)控信息來看連接數(shù)較高。將用戶登錄信息進(jìn)行緩存處理,同樣可以有效減緩數(shù)據(jù)庫的訪問壓力。2.解決方案6.1場景導(dǎo)入任務(wù)學(xué)習(xí)6.2知識點(diǎn)講解 目錄CONTENTS6.2.1Redis概述Redis是一個依據(jù)BSD開源協(xié)議的高性能Key-Value存儲系統(tǒng)(CacheandStore),使用ANSIC語言編寫,提供多種語言的API,支持網(wǎng)絡(luò)。Redis的開發(fā)工作最早由VMware主持。Memcached是一個分布式高速緩存系統(tǒng),是基于內(nèi)存的Key-Value存儲,用來存儲小塊的任意數(shù)據(jù)(字符串、對象)。Redis和Memcached類似,支持存儲的value類型相對更多,包括字符串(String)、散列(Hash)、鏈表(List)、集合(Set)、有序集合(SortedSet)。這些數(shù)據(jù)類型都支持PUSH/POP、ADD/REMOVE和取交集、并集、差集及更豐富的操作,而且這些操作都是原子性的。在此基礎(chǔ)上,Redis支持各種不同方式的排序。與Memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。不同的是Redis會周期性地把更新的數(shù)據(jù)寫入磁盤或者把修改操作寫入追加的記錄文件,并且在此基礎(chǔ)上實(shí)現(xiàn)了Master-Slave(主、從)同步。豐富的數(shù)據(jù)結(jié)構(gòu)使得Redis的設(shè)計(jì)非常的有趣。1.Redis概念6.2.1Redis概述Redis的出現(xiàn)很大程度補(bǔ)償了Memcached這類Key-Value存儲的不足,在部分場合可以對關(guān)系數(shù)據(jù)庫起到較好的補(bǔ)充作用。它提供了包括Java、C/C++、C#、PHP、JavaScript、Perl、ObjectC、Python、Ruby和Erlang等客戶端,使用很方便。Redis支持主、從同步。數(shù)據(jù)可以從主服務(wù)器向任意數(shù)量的從服務(wù)器上同步,從服務(wù)器可以是關(guān)聯(lián)其他從服務(wù)器的主服務(wù)器。這使得Redis可執(zhí)行單層樹復(fù)制。存盤可以有意無意地對數(shù)據(jù)進(jìn)行寫操作。由于完全實(shí)現(xiàn)了發(fā)布/訂閱機(jī)制,使得從數(shù)據(jù)庫在任何地方同步樹時,可訂閱一個頻道并接收主服務(wù)器完整的消息發(fā)布記錄。同步對讀取操作的可擴(kuò)展性和數(shù)據(jù)冗余很有幫助。2.Redis原理6.2.2Redis配置Redis可以在沒有配置文件的情況下通過內(nèi)置的配置來啟動,但是這種啟動方式只適用于開發(fā)和測試。合理地配置Redis的方式是提供一個Redis配置文件,這個文件通常叫作redis.conf。redis.conf文件中包含了很多格式簡單的指令如下:keywordargument1argument2...argumentN

關(guān)鍵字

參數(shù)1

參數(shù)2...

參數(shù)N示例:slaveof6380如果參數(shù)中含有空格,那么可以用雙引號requirepass"helloworld"1.基本操作6.2.2Redis配置自Redis2.6起可以直接通過命令行傳遞Redis配置參數(shù)。示例:配置一個新運(yùn)行并以6380為端口的Redis實(shí)例,將它配置為:6379Redis實(shí)例的slave。./redis-server--port6380--slaveof6379通過命令行傳遞的配置參數(shù)的格式和在redis.conf中設(shè)置的配置參數(shù)的格式完全一樣,唯一不同的是需要在關(guān)鍵字之前加上前綴“--”。2.命令行傳遞參數(shù)6.2.2Redis配置Redis允許在運(yùn)行的過程中,在不重啟服務(wù)器的情況下更改服務(wù)器配置,同時也支持使用特殊的“CONFIGSET”和“CONFIGGET”命令用編程方式查詢并設(shè)置配置。需要確保的是在通過“CONFIGSET”命令進(jìn)行設(shè)置的同時,也需要在redis.conf文件中進(jìn)行相應(yīng)的更改。未來Redis有計(jì)劃提供一個“CONFIGREWRITE”命令,在不更改現(xiàn)有配置文件的同時,根據(jù)當(dāng)下的服務(wù)器配置對redis.conf文件進(jìn)行重寫。3.運(yùn)行時配置更改6.2.2Redis配置如果把Redis當(dāng)作一個緩存來用,所有的Key都有過期時間,使用以下設(shè)置(假設(shè)最大內(nèi)存使用量為2MB):maxmemory2mbmaxmemory-policyallkeys-lru以上設(shè)置并不需要我們的應(yīng)用使用“EXPIRE”命令(或相似的命令)去設(shè)置每個Key的過期時間,因?yàn)橹灰獌?nèi)存使用量到達(dá)2MB,Redis就會使用類LRU算法自動刪除某些Key。4.配置Redis成為一個緩存6.2.3Redis使用場景在主頁中顯示最新的項(xiàng)目列表一些網(wǎng)站需要展示最近、最熱、點(diǎn)擊率最高、活躍度最高的TopList,就比較適合使用Redis作為存儲??梢杂肔PUSH來插入一個內(nèi)容ID,作為關(guān)鍵字存儲在列表頭部。LTRIM用來限制列表中的項(xiàng)目數(shù)最多為5000。如果用戶需要檢索的數(shù)據(jù)量超越了這個緩存容量,這時才需要把請求發(fā)送到數(shù)據(jù)庫。排行榜及相關(guān)問題排行榜(LeaderBoard)按照得分進(jìn)行排序。使用ZADD命令可以實(shí)現(xiàn)該功能,而ZREVRANGE命令可以用來按照得分獲取前100名的用戶,ZRANK可以用來獲取用戶排名,非常直接而且操作容易。1.使用場景6.2.3Redis使用場景按照用戶投票和時間排序LPUSH和LTRIM命令結(jié)合運(yùn)用,把文章添加到一個列表中。一項(xiàng)后臺任務(wù)用來獲取列表,并重新計(jì)算列表的排序,ZADD命令用來按照新的順序填充生成列表。即使是負(fù)載很重的站點(diǎn),也可以實(shí)現(xiàn)非??焖俚臋z索。計(jì)數(shù)進(jìn)行各種數(shù)據(jù)統(tǒng)計(jì)的用途是非常廣泛的,INCRBY命令讓這些變得很容易,通過原子遞增保持計(jì)數(shù);GETSET用來重置計(jì)數(shù)器;過期屬性用來確認(rèn)一個關(guān)鍵字什么時候應(yīng)該刪除。隊(duì)列在當(dāng)前的編程中隊(duì)列隨處可見。除了PUSH和POP類型的命令之外,Redis還有阻塞隊(duì)列的命令,能夠讓一個程序在執(zhí)行時被另一個程序添加到隊(duì)列。用戶也可以做些更有趣的事情,比如一個旋轉(zhuǎn)更新的RSSfeed隊(duì)列。1.使用場景6.2.4阿里云云數(shù)據(jù)庫Redis版阿里云云數(shù)據(jù)庫Redis版(AliCloudDBforRedis)是兼容開源Redis協(xié)議的Key-Value類型在線存儲服務(wù)。它支持字符串(String)、鏈表(List)、集合(Set)、有序集合(SortedSet)、散列(Hash)等多種數(shù)據(jù)類型,以及事務(wù)(Transactions)、消息訂閱與發(fā)布(Pub/Sub)等高級功能。通過內(nèi)存+硬盤的存儲方式,AliCloudDBforRedis在提供高速數(shù)據(jù)讀寫能力的同時滿足數(shù)據(jù)持久化需求。AliCloudDBforRedis作為云計(jì)算服務(wù),其硬件和數(shù)據(jù)部署在云端,有完善的基礎(chǔ)設(shè)施規(guī)劃、網(wǎng)絡(luò)安全保障、系統(tǒng)維護(hù)服務(wù)。用戶專心致力于自身業(yè)務(wù)創(chuàng)新。1.概要6.2.4阿里云云數(shù)據(jù)庫Redis版簡單易用服務(wù)開箱即用:支持即開即用的方式,購買之后即刻可用,方便業(yè)務(wù)快速部署。兼容開源Redis:兼容Redis命令,任何Redis客戶端都可以輕松與AliCloudDBforRedis建立連接并進(jìn)行數(shù)據(jù)操作??梢暬墓芾肀O(jiān)控面板:控制臺提供多項(xiàng)監(jiān)控統(tǒng)計(jì)信息,并可以進(jìn)行管理操作。彈性擴(kuò)容存儲容量一鍵擴(kuò)容:用戶可根據(jù)業(yè)務(wù)需求通過控制臺對實(shí)例存儲容量進(jìn)行調(diào)整(公測期間需申請開通)。在線擴(kuò)容不中斷服務(wù):調(diào)整實(shí)例存儲容量可在線進(jìn)行,無須停止服務(wù),不影響用戶自身業(yè)務(wù)。2.特點(diǎn)6.2.4阿里云云數(shù)據(jù)庫Redis版高可用每個實(shí)例均有主、從雙節(jié)點(diǎn):避免單點(diǎn)故障引起的服務(wù)中斷。硬件故障自動檢測與恢復(fù):自動偵測硬件故障并在數(shù)秒內(nèi)切換,恢復(fù)服務(wù)。高可靠數(shù)據(jù)持久化存儲:內(nèi)存+硬盤的存儲方式,在提供高速數(shù)據(jù)讀寫能力的同時滿足數(shù)據(jù)持久化需求。數(shù)據(jù)主、從雙備份:所有數(shù)據(jù)在主、從節(jié)點(diǎn)上進(jìn)行雙備份。2.特點(diǎn)6.2.4阿里云云數(shù)據(jù)庫Redis版3.相關(guān)術(shù)語術(shù)語說明RedisRedis是一款依據(jù)BSD開源協(xié)議發(fā)行的高性能Key-Value存儲系統(tǒng)(CacheandStore)實(shí)例ID實(shí)例對應(yīng)一個用戶空間,是使用KVStore的基本單位。KVStore對單個實(shí)例根據(jù)不同的容量規(guī)格有不同的連接數(shù)、帶寬、CPU處理能力等限制。用戶可在控制臺中看到自己購買的實(shí)例ID列表。KVStore實(shí)例分為主-從雙節(jié)點(diǎn)實(shí)例和高性能集群實(shí)例兩種主-從雙節(jié)點(diǎn)實(shí)例是指具備主-從架構(gòu)的AliCloudDBforRedis實(shí)例。主-從雙節(jié)點(diǎn)能擴(kuò)展的容量和性能有限高性能集群實(shí)例是指具有集群擴(kuò)展性的AliCloudDBforRedis實(shí)例。集群實(shí)例有更好的擴(kuò)展性和性能,但是在功能上也有一定的限制連接地址用于連接AliCloudDBforRedis的Host地址。以域名方式展示,可在實(shí)例信息→連接信息中查詢到連接密碼用于連接AliCloudDBforRedis的密碼。密碼拼接方法為:實(shí)例ID:自定義密碼。例如,在購買時設(shè)置的密碼為1234,分配的實(shí)例ID為××××,那么密碼即為××××:1234逐出策略與Redis的逐出策略保持一致。具體參見http://redis.io/topics/lru-cacheDB即Redis中的Database。AliCloudDBforRedis支持16個DB,默認(rèn)寫入到第0個DB中6.2.4阿里云云數(shù)據(jù)庫Redis版游戲玩家積分排行榜AliCloudDBforRedis在功能上與Redis基本一致,因此很容易用它來實(shí)現(xiàn)一個在線游戲中的積分排行榜功能。網(wǎng)上商城商品相關(guān)性分析AliCloudDBforRedis在功能上與Redis基本一致,因此很容易利用它來實(shí)現(xiàn)一個網(wǎng)上商城的商品相關(guān)性分析程序。商品的相關(guān)性就是某個產(chǎn)品與其他另外某商品同時出現(xiàn)在購物車中的情況。這種數(shù)據(jù)分析對于電商行業(yè)是非常重要的,可以用來分析用戶購買行為。消息的發(fā)布與訂閱AliCloudDBforRedis也提供了與Redis相同的消息發(fā)布(Pub)與訂閱(Sub)功能,即一個Client發(fā)布消息,其他多個Client訂閱消息。4.使用場景6.2.4阿里云云數(shù)據(jù)庫Redis版管道傳輸(Pipeline)AliCloudDBforRedis提供了與Redis相同的管道傳輸機(jī)制。管道將客戶端Client與服務(wù)器端的交互明確劃分為單向的發(fā)送請求(SendRequest)和接收響應(yīng)(ReceiveResponse)。用戶可以將多個操作連續(xù)發(fā)給服務(wù)器,但在此期間服務(wù)器端并不對每個操作命令發(fā)送響應(yīng)數(shù)據(jù);全部請求發(fā)送完畢后用戶關(guān)閉請求,開始接收響應(yīng)獲取每個操作命令的響應(yīng)結(jié)果。事務(wù)處理(Transaction)AliCloudDBforRedis支持Redis中定義的事務(wù)機(jī)制,即用戶可以使用MULTI、EXEC、DISCARD、WATCH和UNWATCH指令來執(zhí)行原子性的事務(wù)操作。注意:Redis中定義的事務(wù)并不是關(guān)系數(shù)據(jù)庫中嚴(yán)格意義上的事務(wù)。當(dāng)Redis事務(wù)中的某個操作執(zhí)行失敗,或者用DISCARD取消事務(wù)時,Redis并不執(zhí)行“事務(wù)回滾”。4.使用場景6.1場景導(dǎo)入6.2知識點(diǎn)講解任務(wù)學(xué)習(xí)目錄CONTENTS任務(wù)學(xué)習(xí)本書旨在讓學(xué)生通過完成一系列的操作任務(wù)進(jìn)行實(shí)際操作的學(xué)習(xí),書中將一個完整的項(xiàng)目工程案例細(xì)化成相對獨(dú)立的任務(wù),本書使用“慕課云”MOOC平臺作為項(xiàng)目案例。書中相關(guān)資源可以從下載,包含“慕課云”案例的源代碼以及網(wǎng)站發(fā)布包。注:配套提供的安全代碼僅供參考,也僅限于本書案例學(xué)習(xí)使用。云平臺界面更新變化快,教材用圖跟實(shí)際平臺有出入,請以官網(wǎng)云平臺操作界面為準(zhǔn)。任務(wù)6.1使用Redis緩存熱點(diǎn)數(shù)據(jù)針對“慕課云”系統(tǒng)創(chuàng)建云數(shù)據(jù)庫Redis實(shí)例,然后設(shè)置Tomcat集群的Session共享,重啟Tomcat服務(wù),登錄“慕課云”系統(tǒng),然后進(jìn)入云數(shù)據(jù)庫Redis的DMS查看會話記錄。1.任務(wù)描述任務(wù)6.1使用Redis緩存熱點(diǎn)數(shù)據(jù)學(xué)會Tomcat集群的Session共享設(shè)置。掌握云數(shù)據(jù)庫Redis基本操作命令的使用。2.任務(wù)目標(biāo)任務(wù)6.1使用Redis緩存熱點(diǎn)數(shù)據(jù)【準(zhǔn)備】已注冊成為阿里云用戶,且賬號經(jīng)過實(shí)名認(rèn)證?;赟LB+ECS架構(gòu)部署“慕課云”。3.任務(wù)實(shí)施任務(wù)6.1使用Redis緩存熱點(diǎn)數(shù)據(jù)【步驟】(1)創(chuàng)建Redis實(shí)例。(2)Tomcat集群的Session共享設(shè)置。(3)通過DMS查看配置結(jié)果。(4)使用DMS管理Redis數(shù)據(jù)庫。(5)使用客戶端連接Redis數(shù)據(jù)庫。(6)通過公網(wǎng)連接云數(shù)據(jù)庫Redis。3.任務(wù)實(shí)施任務(wù)6.2

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論