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

Rust 寫的 Undermoon Redis 集群 -Redis Cluster Protocol與Server Proxy

開發 架構
Redis Cluster 是官方的 Redis 分布式解決方案,支持 sharding(分片) 和 failover(故障轉移)。與使用單實例 redis 相比,連接 Redis Cluster 的客戶端需要實現 Redis Cluster Client Protocol。

感謝 doyoubi 提供這么好的項目,原文:https://github.com/doyoubi/undermoon/blob/master/docs/redis_cluster_protocol.md

Redis Cluster 是官方的 Redis 分布式解決方案,支持 sharding(分片) 和 failover(故障轉移)。與使用單實例 redis 相比,連接 Redis Cluster 的客戶端需要實現 Redis Cluster Client Protocol。它的基本作用是:

  • 如果我們沒有向正確的節點發送命令,則重定向請求。
  • 從 CLUSTER NODES 和 CLUSTER SLOTS 這兩個命令之一緩存集群路由表。

這種客戶端稱為 Smart Client。

https://redis.io/topics/cluster-tutorial

為了兼容現有的 Redis client,還有一些 Redis Cluster Proxies,如 redis-cluster-proxy(官方)、aster、corvus 和 samaritan,以使集群協議適應廣泛支持的單實例協議。

  • https://github.com/RedisLabs/redis-cluster-proxy
  • https://github.com/wayslog/aster
  • https://github.com/eleme/corvus
  • https://github.com/samaritan-proxy/samaritan

Undermoon 是如何實現 “Redis Cluster Protocol” 的?

Undermoon 基于 server-side proxy 或 Server Proxy 實現 Redis Cluster Protocol。Server Proxy 將像官方的 Redis Cluster Redis 一樣工作,并在需要時返回重定向響應。

為什么要實現另一個 “Redis Cluster Protocol”?

該實現不僅支持水平可擴展性和高可用性,還使您能夠構建一個自我管理的分布式 Redis,支持:

  • Redis 資源池管理
  • 為不同的用戶提供多個集群
  • 將流量洪水均勻地傳播到所有物理機
  • 擴容迅速
  • 操作和 Kubernetes 集成更容易。

為什么是 Server-side Proxy?

Redis 和大多數 redis 代理(如 redis-cluster-proxy、corvus、aster、codis)部署在獨立的機器上,因為代理通常需要將請求分散到不同的 Redis 實例。

Server-side Proxy 不是路由請求,而是充當與這些代理不同的角色,類似于 Redis 的 cluster module,通過使用一些定制的遷移協議,使其能夠遷移數據并快速擴展。

Server-side Proxy

以下是 Server-side Proxy 和 Redis Cluster Protocol 的一小部分操作。

首先運行一個 redis-server。

$ redis-server

構建并運行 server_proxy,在端口 5299 上運行并將命令轉發到 127.0.0.1:6379。

> cargo build
> make server
> redis-cli -p 5299
# 通過 `UMCTL` 命令初始化代理。
127.0.0.1:5299> UMCTL SETCLUSTER v2 1 NOFLAGS mydb 127.0.0.1:6379 1 0-8000 PEER 127.0.0.1:7000 1 8001-16383

# Done! 我們可以像 Redis Cluster 一樣使用它!
# 和官方的 Redis Cluster 不同,這里只顯示 master 節點
# 而不是同時顯示主服務器和副本。
127.0.0.1:5299> CLUSTER NODES
mydb________________9f8fca2805923328____ 127.0.0.1:5299 myself,master - 0 0 1 connected 0-8000
mydb________________d458dd9b55cc9ad9____ 127.0.0.1:7000 master - 0 0 1 connected 8001-16383

# 當我們使用 UMCTL SETCLUSTER 初始化它時,
# 插槽(slots) 8001-16383 屬于另一個服務器代理 127.0.0.1:7000
# 所以我們得到一個重定向響應。
#
# 這是普通 Redis client 和 Redis Cluster client 的關鍵區別
# 因為我們需要處理重定向。
127.0.0.1:5299> get a
(error) MOVED 15495 127.0.0.1:7000

# Key 'b' 是該代理負責的,因此我們處理請求。
127.0.0.1:5299> set b 1
OK


責任編輯:武曉燕 來源: 黑客下午茶
相關推薦

2022-01-26 20:43:04

集群構建塊Chunk

2022-01-27 20:15:31

集群存儲元數據

2022-02-06 21:14:57

Redis命令

2022-02-02 21:58:43

Redis集群Undermoon

2024-03-07 16:03:56

RedisDocker

2023-06-10 23:09:40

Redis場景內存

2021-04-06 06:04:36

Redis 6.X C集群搭建操作系統

2023-04-07 08:28:14

2019-12-13 10:50:49

集群Redis存儲

2020-08-31 16:36:36

Redis架構節點

2021-04-22 08:40:42

RedisCluster 集群故障轉移

2023-10-10 23:06:46

RedisMySQL

2019-09-16 16:05:13

Redis集群模式

2021-06-03 18:42:26

Redis集群故障

2022-08-28 19:36:15

數據分片KafkaRocketMQ

2022-02-14 08:33:51

Redis哨兵集群

2021-10-07 20:36:45

Redis集群場景

2025-01-06 13:00:00

RedisSentinel高可用模式

2022-03-19 12:16:49

Redis高并發系統集群部署

2017-02-27 21:55:04

LinuxCentOS 7.0Redis
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 午夜久久久 | 国产欧美日韩在线 | 老外几下就让我高潮了 | 欧美在线观看一区二区 | 国产一区二区三区免费观看在线 | 一级黄色片免费在线观看 | 亚洲三级免费看 | 日韩欧美1区2区 | 国产精品一区二区久久久久 | 亚洲日日夜夜 | 国产一区91在线 | 免费三级黄 | 亚洲1区| 99精品国产一区二区三区 | 久久免费高清视频 | 日韩中文字幕免费在线 | 天堂视频免费 | 亚洲 欧美 日韩 精品 | 天天操夜夜操 | 麻豆国产一区二区三区四区 | 国产精品久久久久久久久污网站 | 一区二区三区免费 | 一区二区精品在线 | 狠狠爱综合 | 日韩色图视频 | 91 在线| 日本精品一区二区三区在线观看视频 | 成人精品视频99在线观看免费 | 天堂在线网 | 99re6在线 | 人操人人 | 国产精品一区二区av | 日本不卡免费新一二三区 | 9久久 | 久久国产香蕉 | 亚洲视频二区 | 亚洲成人一区二区 | 午夜久草| 久久人人网 | 亚洲精品2| 久久机热 |