亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

1. 目的

撰寫本文的目的是解決微服務(wù)架構(gòu),對靜態(tài)數(shù)據(jù)資源沒有規(guī)整,所有微服務(wù)都是從數(shù)據(jù)庫直接讀取,導(dǎo)致性能較差,用戶體驗(yàn)不好。通常在高可用的分布式架構(gòu)中,一般都會采用將這部分?jǐn)?shù)據(jù)放到內(nèi)存當(dāng)中,提高系統(tǒng)的訪問性能。

如果采用redis這種內(nèi)存型的緩存數(shù)據(jù)庫,那么針對分布式架構(gòu)來說,必然要考慮其高可用,因此我們必然要考慮搭建Redis的集群方案來為微服務(wù)平臺提供保障。

2. 技術(shù)體系

Redis 3.0之后的版本支持Cluster。許多公司采用的是阿里云提供的Redis服務(wù),使用的單節(jié)點(diǎn)的模式。

3. 緩存對象

3.1. 公共數(shù)據(jù)

公共數(shù)據(jù):用戶數(shù)據(jù)、基礎(chǔ)字典等配置信息。

數(shù)據(jù)類型:經(jīng)過對現(xiàn)有公共接口數(shù)據(jù)結(jié)構(gòu)的分析,基本都是以List集合的形式對外輸出。

3.2. 獨(dú)立微服務(wù)數(shù)據(jù)

指的是某個微服務(wù)自己使用的數(shù)據(jù),如:報表的數(shù)據(jù)編輯實(shí)時填寫緩存到Redis。

數(shù)據(jù)類型: String、List

4. 技術(shù)方案

4.1. 阿里云產(chǎn)品介紹

4.1.1. 規(guī)格介紹

序號

規(guī)格類型

描述

適用場景

1

標(biāo)準(zhǔn)版-單副本

標(biāo)準(zhǔn)版-單副本采用單個數(shù)據(jù)庫節(jié)點(diǎn)部署架構(gòu)

l 純緩存類業(yè)務(wù)場景。

說明 對數(shù)據(jù)可靠性要求較高的敏感性業(yè)務(wù),不建議使用單副本版。

l 對Redis協(xié)議兼容性要求較高的場景。

l 單個Redis性能壓力可控的場景。

l Redis命令相對簡單,排序和計算之類的命令較少的場景。

2

標(biāo)準(zhǔn)版-雙副本

標(biāo)準(zhǔn)版-雙副本采用主從(Replication)模式搭建。

l 對Redis協(xié)議兼容性要求較高的業(yè)務(wù)。

l Redis作為持久化數(shù)據(jù)存儲使用的業(yè)務(wù)。

l 單個Redis性能壓力可控的場景。

l Redis命令相對簡單,排序和計算之類的命令較少的場景。

3

集群版-單副本

單副本集群版實(shí)例采用集群架構(gòu),每個分片服務(wù)器采用單副本模式。

l 數(shù)據(jù)量較大的場景。

l 純緩存類業(yè)務(wù)場景。

說明 對數(shù)據(jù)可靠性要求較高的敏感性業(yè)務(wù),不建議使用集群版-單副本。

l QPS壓力較大的場景。

l 吞吐密集型應(yīng)用場景。

l 對數(shù)據(jù)持久化無要求的緩存類型業(yè)務(wù)場景。

4

集群版-雙副本

雙副本集群版實(shí)例采用集群架構(gòu),每個分片服務(wù)器采用雙副本模式。

l 數(shù)據(jù)量較大的場景。

l QPS壓力較大的場景。

l 吞吐密集型應(yīng)用場景。

5

讀寫分離實(shí)例

Redis讀寫分離版本由代理服務(wù)器(Proxy Servers)、主備(Master and Replica)節(jié)點(diǎn)及只讀(Read-Only)節(jié)點(diǎn)組成。

l 讀取請求QPS壓力較大的場景。

l 對Redis協(xié)議兼容性要求較高的業(yè)務(wù)場景。

l Redis作為持久化數(shù)據(jù)存儲使用的業(yè)務(wù)場景。

 

 

4.1.2. 規(guī)格性能

 

4.2. 服務(wù)器配置

目前,在阿里云上,由于各位服務(wù)對redis使用量較少,甚至有的服務(wù)中基本沒有使用,所以當(dāng)前的配置是1核1G

 

4.3. 三種架構(gòu)模式

4.3.1. Redis主從

Redis主從模式是最簡單的一種集群方案配置起來也比較簡單,它的特點(diǎn)主要有:

l 一個master可以擁有多個slave;

l 多個slave鏈接同一個master,也可以鏈接其它slave;

l 主從復(fù)制不會阻塞master,在同步數(shù)據(jù)時,master可以繼續(xù)處理client請求;

l slave 配置為slave-read-only on需要升級為主節(jié)點(diǎn)或者寫入配置文件中, 而不能在默認(rèn)slave情況下直接設(shè)置master與slave斷開后會檢測心跳, 重新建立連接;

l 可以直接copy DUMP文件重新重啟master,在Master為空以后,slave同步數(shù)據(jù)會抹掉全部數(shù)據(jù)。

該方案缺點(diǎn)較多,往Master節(jié)點(diǎn)寫數(shù)據(jù),同時Master節(jié)點(diǎn)會異步寫入slave節(jié)點(diǎn)中。這種方案目前使用的越來越少,不過對于個體開發(fā)并且對緩存依賴度不高的系統(tǒng)還是可以使用的,畢竟搭建和維護(hù)簡單。

應(yīng)用場景:可用于可穿透的業(yè)務(wù)場景,如后端有DB存儲,脫機(jī)影響不大的應(yīng)用。

互聯(lián)網(wǎng)服務(wù):實(shí)戰(zhàn)Redis,解決高并發(fā)性能問題

 


互聯(lián)網(wǎng)服務(wù):實(shí)戰(zhàn)Redis,解決高并發(fā)性能問題

 

4.3.2. Redis sentinel

鑒于4.1.1節(jié)描述的standalone類型的架構(gòu)缺點(diǎn)較多,故在此模式基礎(chǔ)上,增加sentinel哨兵,用于監(jiān)控master/slave運(yùn)行情況、調(diào)度Redis主從切換等。下圖中對于sentinel使用了最小粒度的集群模式,最大限度地實(shí)現(xiàn)較小規(guī)模的高可用緩存。

互聯(lián)網(wǎng)服務(wù):實(shí)戰(zhàn)Redis,解決高并發(fā)性能問題

 


互聯(lián)網(wǎng)服務(wù):實(shí)戰(zhàn)Redis,解決高并發(fā)性能問題

 

應(yīng)用場景:用于高可用需求場景,可用于高可用Cache,存儲等場景。 內(nèi)存/QPS受限于單機(jī)。

4.3.3. Redis Cluster

可直接采用官方給出的推薦方案,將node配置成主從結(jié)構(gòu)。圖下圖所示為最小節(jié)點(diǎn)的Redis高并發(fā)、高可用集群。

應(yīng)用場景:用于高可用需求場景,可用于大數(shù)據(jù)量高可用Cache/存儲等場景。 內(nèi)存/QPS不受限于單機(jī),可受益于分布式集群高擴(kuò)展性。

互聯(lián)網(wǎng)服務(wù):實(shí)戰(zhàn)Redis,解決高并發(fā)性能問題

 


互聯(lián)網(wǎng)服務(wù):實(shí)戰(zhàn)Redis,解決高并發(fā)性能問題

 

4.4. 數(shù)據(jù)存儲格式

鑒于我們的微服務(wù)眾多,為了規(guī)避key一樣的情況發(fā)生。因此,需要約定下存儲格式:服務(wù)名#業(yè)務(wù)分類名##key(調(diào)用的key)

公共接口數(shù)據(jù)key約定:服務(wù)器ID#user##key(調(diào)用的key);

獨(dú)立微服務(wù)數(shù)據(jù)key約定:服務(wù)器ID#服務(wù)名##users##getUsersDetail(調(diào)用的key);

以上所有的“cs#user##”或“服務(wù)名#”開頭的前綴,統(tǒng)一由公共接口實(shí)現(xiàn),業(yè)務(wù)方使用時的入口為最后的key即可。

4.5. 可用API

接口:IRedisService

序號

接口定義

描述

 

1

boolean set(String key, Object value)

添加String類型的緩存數(shù)據(jù)

 

2

boolean set(String key, Object value, Long expireTime)

自定義有效時間的String類型緩存數(shù)據(jù)

 

3

Object get(String key)

讀取String類型的緩存

 

4

void setHash(String key, Map<?,?> map)

哈希 添加Map

 

5

Object getHash(String key)

獲取哈希數(shù)據(jù)

 

6

void setList(String key, Object value)

List列表添加

 

7

List<Object> getList(String key, long start, long end)

List列表獲取

start 開始

end 結(jié)束 0 到 -1代表所有值

8

void addSet(String key, Object value)

Set集合添加

 

9

Set<Object> getSet(String key)

Set集合獲取

 

10

void addZSet(String key, Object value, double scoure)

ZSet有序集合添加

 

11

Set<Object> getZSet(String key, double scoure, double scoure1)

ZSet有序集合獲取

 

12

boolean expire(String key,long time)

指定某key的緩存有效時間

 

13

long getExpire(String key)

獲取指定key的過期時間

 

14

void remove(String... keys)

刪除一組或單個key的緩存數(shù)據(jù)

 

15

boolean exists(String key)

判斷緩存中是否有對應(yīng)的value

 

 

5. 運(yùn)行保障

5.1. 監(jiān)控指標(biāo)

連接客戶數(shù)

阻塞連接數(shù)

Redis占用內(nèi)存

內(nèi)存峰值

主從角色

master_link_status

執(zhí)行命令總數(shù)和qps

上報時間

分享到:
標(biāo)簽:并發(fā)
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定