2019獨角獸企業重金招聘Python工程師標準>>>
高性能中間件服務器
一、 NRedis-Proxy 介紹
NRedis-Proxy 是一個Redis中間件服務,第一個Java 版本開源Redis中間件,無須修改業務應用程序任何代碼與配置,與業務解耦;以Spring為基礎開發自定義標簽,讓它可配置化,使其更加容易上手;提供RedisServer監控以及自動、收到failover等功能;以netty 作為通信傳輸工具,讓它具有高性能,高并發,可分布式擴展部署等特點,單機器單個RedisServer QPS在9千左右。
二、 NRedis-Proxy 架構圖
a) 系統架構圖
b) 技術架構圖
c) 部署架構圖
三、 NRedis-Proxy 優勢以及缺點
a) 功能優勢
- 自帶連接池,簡單穩定且性能高效
- 支持讀寫分離,從讀按照權重算法
- 支持靈活主從配置策略
- 默認支持一致性哈希分片策略,擴展性強
- 分片策略與從讀取策略可自定義化
- 支持主從自動、手動切換,下次應用程序或者機器重啟不會受到任何影響
- 支持HA 分布式部署,節點可隨意擴展
- 提供redis-monitor小型機器人,監聽cpu、jvm、線程、redis 命中率等監控服務
b) 天然缺點
中間件的存在,會自帶網絡損耗,但是網絡帶寬足夠,可以忽略不計,最主要損耗在于協議解析。相比客戶端分片等策略,中間件可以解決客戶端應用過多,解決M*N 問題,Redis-Server連接數不夠,造成機器CPU性能降低;如下圖:
四、 NRedis-Proxy 類邏輯調用圖
五、 NRedis-Proxy 配置標簽
a) redisProxyNode
序號 | 名稱 | 描述 |
---|---|---|
1 | id | Spring 標簽唯一標志 |
2 | redisProxyHost | NRedis-proxy 對外提供主機號 |
3 | redisProxyPort | NRedis-proxy 對外提供端口號 |
4 | algorithm-ref | NRedis-proxy 多主分片實現類引用 |
5 | address | Zookpeer 地址 |
b) redisProxyMaster
序號 | 名稱 | 描述 |
---|---|---|
1 | id | Spring 標簽唯一標志 |
2 | host | RedisServer主主機名 |
3 | port | RedisServer主端口號 |
4 | algorithm-ref | NRedis-proxy 從分片讀取策略類引用 |
5 | config-ref | 連接池配置 |
c) redisProxyCluster
序號 | 名稱 | 描述 |
---|---|---|
1 | id | Spring 標簽唯一標志 |
2 | host | RedisServer主主機名 |
3 | port | RedisServer主端口號 |
4 | algorithm-ref | NRedis-proxy 從分片讀取策略類引用 |
5 | config-ref | 連接池配置 |
6 | weight | 權重 |
d) redisPoolConfig
序號 | 名稱 | 描述 |
---|---|---|
1 | id | Spring 標簽唯一標志 |
2 | connectionTimeout | 連接超時時間 |
3 | maxActiveConnection | 最大活躍連接數 |
4 | maxIdleConnection | 最大空閑連接數 |
5 | minConnection | 最小連接數 |
6 | maxWaitMillisOnBorrow | 取出最大等待時間 |
7 | initialConnection | 初始化連接數 |
8 | timeBetweenEvictionRunsMillis | 每隔多久檢查一次連接池 |
9 | minEvictableIdleTimeMillis | 連接池最小生存時間 |
10 | minIdleEntries | 最小空閑數 |
11 | testOnBorrow | 取出是否檢測 |
12 | testOnReturn | 歸還是否檢測 |
13 | testWhileIdle | 空閑是否檢測 |
e) 默認兩個分片策略
六、 NRedis-Proxy 部署
###1. 部署環境要求 ###
- 1.1 JDK 1.7
- 1.2 Redis-Server
- 1.3 Zookpeer3.4.6
###2. 調試步驟 ###
- ** 2.1 啟動Redis Server 主機器 **
- ** 2.2 啟動Redis Server **
- ** 2.3 啟動 zookpeer **
- ** 2.4 啟動NRedis-Proxy Server **
- ** 2.5 使用Redis 命令行連接NRedis-Proxy **
3. 部署方式
maven執行nredis-proxy-bootstrap ,然后再找到 nredis-proxy-server.sh 文件執行