成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Redis 生產架構選型對比,一文整治選擇困難癥

開發 新聞
集群架構可輕松突破Redis自身單線程瓶頸,滿足大容量、高性能的業務需求。

前言

在寫開源項目的時候,想到了要支持多種redis部署方式,于是對于這塊的生產環境的架構選型展開調研。

一、引擎版本

推薦使用更新的引擎版本以支持更多的特性,

Redis 6.0新特性說明

  • 模塊系統新增多個API。
  • 支持SSL/TLS加密。
  • 支持新的Redis協議:RESP3。
  • 服務端支持多模式的客戶端緩存。
  • 支持多線程IO。
  • 副本中支持無盤復制(diskless replication)。
  • Redis-benchmark新增了Redis集群模式。
  • 支持重寫Systemd。
  • 支持Disque模塊。

Redis 5.0新特性說明

  • 云數據庫Redis 5.0版本大幅度優化內核,運行更加穩定,同時新增Stream、賬號管理、審計日志等多種特性,滿足您更多場景下的使用需求。
  • 新的數據類型:流數據(Stream)。詳細說明請參見Redis Streams。
  • 新增賬號管理功能。
  • 新增日志管理功能,支持審計日志、運行日志和慢日志,您可以通過日志管理查詢讀寫操作、敏感操作(如KEYS、FLUSHALL)和管理類命令的使用記錄以及慢日志。
  • 新增基于快照的緩存分析功能。
  • 新的定時器(Timers)、集群( Cluster)和字典(Dictionary)模塊的API。
  • RDB中增加LFU和LRU信息。
  • 集群管理器從Ruby (redis-trib.rb)移植到了redis-cli中的C語言代碼。
  • 新增有序集合(Sorted Set)命令ZPOPMIN、ZPOPMAX、BZPOPMIN和BZPOPMAX。
  • 升級Active Defragmentation至v2版本。
  • 增強HyperLogLog的實現。
  • 優化內存統計報告。
  • 為許多有子命令的命令增加了HELP子命令。
  • 提高了客戶端頻繁連接和斷開連接時的性能表現。
  • 升級Jemalloc至5.1版本。
  • 新增命令CLIENT ID和CLIENT UNBLOCK。
  • 新增了為藝術而生的LOLWUT命令。
  • 棄用slave術語(需要API向后兼容的情況例外)。
  • 對網絡層進行了多處優化。
  • 進行了一些Lua相關的改進。
  • 新增動態HZ(Dynamic HZ)以平衡空閑CPU使用率和響應性。
  • 對Redis核心代碼進行了重構并在許多方面進行了改進。

二、架構

您需要根據業務需求選擇:

  • 集群架構可輕松突破Redis自身單線程瓶頸,滿足大容量、高性能的業務需求。
  • 主從架構,提供高性能的緩存服務和數據高可靠。
  • 讀寫分離架構提供高可用、高性能、高靈活的讀寫分離服務,解決熱點數據集中及高并發讀取的業務需求,最大化地節約用戶運維成本。

1、主從架構-雙副本

采用主從(master-replica)模式搭建。主節點提供日常服務訪問,備節點提供HA高可用,當主節點發生故障,系統會自動在30秒內切換至備節點,保證業務平穩運行。

1)可靠性

服務可靠采用雙機主從(master-replica)架構,主從節點位于不同物理機。主節點對外提供訪問,用戶可通過Redis命令行和通用客戶端進行數據的增刪改查操作。當主節點出現故障,HA系統會自動進行主從切換,保證業務平穩運行。

數據可靠默認開啟數據持久化功能,數據全部落盤。支持數據備份功能,用戶可以針對備份集回滾實例或者克隆實例,有效地解決數據誤操作等問題。

2)使用場景

Redis作為持久化數據存儲使用的業務標準版提供持久化機制及備份恢復機制,極大地保證數據可靠性。

單個Redis性能壓力可控的業務由于Redis原生采用單線程機制,性能在10萬QPS以下的業務建議使用。如果需要更高的性能要求,請選用集群版本。

Redis命令相對簡單,排序、計算類命令較少的業務由于Redis的單線程機制,CPU會成為主要瓶頸。如排序、計算類較多的業務建議選用集群版配置。

2、主從架構-單副本

可以在沒有數據可靠性要求的純緩存場景充分發揮性能優勢。

1)使用場景

①純緩存類業務場景

單副本版本只有一個數據庫節點,節點出現故障時,系統會重新拉起一個Redis進程(沒有數據),當節點故障業務自動切換完成后,應用程序需要將數據重新預熱,以免對后端數據庫產生訪問壓力沖擊。單副本架構不能提供數據可靠性,如果發生節點故障,您需要重新對業務進行預熱,因此,在對數據可靠性要求較高的敏感性業務中,建議選用雙副本架構。

②單個Redis性能壓力可控

由于Redis原生采用單線程機制,CPU為單核能力,性能在8萬QPS的業務建議使用。如果需要更高的性能要求,請選用集群版配置。

③Redis命令相對簡單,排序、計算類命令較少

由于Redis的單線程機制,CPU為主要瓶頸。如排序、計算類較多的業務建議選用集群版配置。

3、集群版-雙副本

可輕松突破Redis自身單線程瓶頸,滿足大容量、高性能的業務需求。雙副本集群版實例采用集群架構,每個分片服務器采用主從(master-replica)雙副本模式。集群版支持代理和直連兩種連接模式,您可以根據本章節的說明,選擇適合業務需求的連接模式。

1)代理模式

集群架構的本地盤實例默認采用代理(proxy)模式,支持通過一個統一的連接地址(域名)訪問Redis集群,客戶端的請求通過代理服務器轉發到各數據分片,代理服務器、數據分片和配置服務器均不提供單獨的連接地址,降低了應用開發難度和代碼復雜度。代理模式的服務架構圖和組件說明如下。


圖片

圖片

2)直連模式

因所有請求都要通過代理服務器轉發,代理模式在降低業務開發難度的同時也會小幅度影響Redis服務的響應速度。如果業務對響應速度的要求非常高,您可以使用直連模式,繞過代理服務器直接連接后端數據分片,從而降低網絡開銷和服務響應時間。直連模式的服務架構和說明如下。

圖片

前提條件:使用Jedis、PhpRedis等支持Redis Cluster的客戶端。

  • 使用不支持Redis Cluster的客戶端,可能因客戶端無法重定向請求到正確的分片而獲取不到需要的數據。
  • Jedis對于Redis Cluster的支持是基于JedisCluster這個類,詳細說明請參見Jedis文檔。
  • 您可以在Redis官網的客戶端列表里查找更多支持Redis Cluster的客戶端。

使用自定義連接池的示例代碼 `import redis.clients.jedis.*;

import java.util.HashSet; import java.util.Set; public class main { private static final int DEFAULT_TIMEOUT = 2000; private static final int DEFAULT_REDIRECTIONS = 5; private static final JedisPoolConfig DEFAULT_CONFIG = new JedisPoolConfig();

public static void main(String args[]){
JedisPoolConfig config = new JedisPoolConfig();
// 最大空閑連接數, 根據業務需要設置,不能超過實例規格規定的最大的連接數
config.setMaxIdle(200);
// 最大連接數, 根據業務需要設置,不能超過實例規格規定的最大的連接數
config.setMaxTotal(300);
config.setTestOnBorrow(false);
config.setTestOnReturn(false);
// 開通直連訪問時申請到的直連地址
String host = "r-bp1xxxxxxxxxxxx.redis.rds.aliyuncs.com";
int port = 6379;
// 實例的密碼
String password = "xxxxx";
Set<HostAndPort> jedisClusterNode = new HashSet<HostAndPort>();
jedisClusterNode.add(new HostAndPort(host, port));
JedisCluster jc = new JedisCluster(jedisClusterNode, DEFAULT_TIMEOUT, DEFAULT_TIMEOUT,
DEFAULT_REDIRECTIONS,password, "clientName", config);
}
}`

4、集群版-單副本


圖片

圖片

5、讀寫分離版

針對讀多寫少的業務場景,提供高可用、高性能、靈活的讀寫分離服務,滿足熱點數據集中及高并發讀取的業務需求,最大化地節約運維成本。讀寫分離版主要由主備節點、只讀節點、Proxy(代理)節點和高可用系統組成。


圖片

1)特點

①高可用

  • 通過自研的高可用系統自動監控所有數據節點的健康狀態,為整個實例的可用性保駕護航。主節點不可用時自動選擇新的主節點并重新搭建復制拓撲。某個只讀節點異常時,高可用系統能夠自動探知并重新啟動新節點完成數據同步,下線異常節點。
  • Proxy節點實時感知每個只讀實例的服務狀態。在某個只讀實例異常期間,Proxy會自動降低該節點的服務權重,發現只讀節點連續失敗超過一定次數以后,會停止異常節點的服務權利,并具備繼續監控后續重新啟動節點服務的能力。

②高性能

讀寫分離版采取鏈式復制架構,可以通過擴展只讀實例個數使整體實例性能呈線性增長,同時基于源碼層面對Redis復制流程的定制優化,可以最大程度地提升線性復制的系統穩定性,充分利用每一個只讀節點的物理資源。

2)使用場景

讀取請求QPS(Queries Per Second)壓力較大

標準版Redis無法支撐較大的QPS,如果業務類型是讀多寫少類型,需要采用多個只讀節點的部署方式來突破Redis單線程的性能瓶頸。Redis集群版提供1個、3個、5個只讀節點的配置,相比標準版可以將QPS提升近5倍。

對Redis協議兼容性要求較高的業務 讀寫分離版完全兼容Redis協議命令,可將自建Redis數據庫遷移至讀寫分離版,同時支持從Redis標準版(雙副本)一鍵平滑升級至讀寫分離版。

3)建議與使用須知

當一個只讀節點發生故障時,請求會轉發到其他節點;如果所有只讀節點均不可用,請求會全部轉發到主節點。只讀節點異??赡軐е轮鞴濣c負載提高、響應時間變長,因此在讀負載高的業務場景建議使用多個只讀節點。

某些場景會觸發只讀節點的全量同步,例如在主節點觸發高可用切換后。全量同步期間只讀節點不提供服務并返回-LOADING Redis is loading the dataset in memory\r\n信息。

責任編輯:張燕妮 來源: dbaplus社群
相關推薦

2017-05-31 09:12:51

機器學習算法數據

2015-08-04 17:32:03

CDN

2015-12-02 11:31:49

SCv2000企業存儲

2022-03-24 08:51:48

Redis互聯網NoSQL

2022-04-15 08:03:41

SaaS應用管理市場

2022-12-20 07:39:46

2022-01-06 07:45:44

機器學習算法思路

2024-05-31 08:05:29

2020-12-30 09:05:24

架構微內核系統

2021-05-18 09:48:58

前端開發架構

2021-03-04 00:09:31

MySQL體系架構

2022-04-26 06:04:11

零信任網絡安全

2022-02-22 20:48:48

RemixNext.js框架

2023-12-26 07:33:45

Redis持久化COW

2019-07-21 09:17:11

數據緩存架構

2022-03-13 18:27:09

Redis數據庫開源

2022-02-14 21:17:21

RPC框架協議

2022-08-31 08:23:27

SAE日志架構

2023-11-08 08:21:52

MVPMVVMMVI
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美视频区 | 欧美韩一区二区 | 日韩一区二区在线视频 | 国产一区二区在线播放 | 亚洲福利视频网 | 欧美成人a∨高清免费观看 欧美日韩中 | 亚洲精品视频免费看 | 在线观看毛片网站 | 欧美一级片a | 高清色 | 国产精品中文字幕在线 | 久草在线高清 | 黄色片在线 | 一区福利视频 | 成人欧美一区二区三区色青冈 | 全部免费毛片在线播放网站 | 久久久久久毛片免费观看 | 在线一区二区三区 | 亚洲精品成人在线 | 国产日韩精品久久 | av中文在线| 国产三级一区二区 | 中文字幕在线精品 | 在线视频一区二区 | 亚洲www啪成人一区二区 | 亚洲国产欧美日韩 | 日韩免费一区 | 国产精品视频网 | 无毛av| 国产视频一区二区 | 国产一级一级毛片 | 成人在线免费观看av | 亚洲一区久久 | 精品三区 | 精品久久久久久久久久 | 日日干日日射 | 中文成人无字幕乱码精品 | 性一交一乱一透一a级 | 国产精品视频久久久久 | 中文字幕av亚洲精品一部二部 | 99色播|