受飛凡電商技術(shù)負責人劉兵先生的獨家授權(quán)代态,在csdn博客我原創(chuàng)發(fā)表《NRedis-Proxy 高性能Redis 中間件服務(wù)》的架構(gòu)原理慧起,以及項目開源介紹吗坚。
一祈远、 NRedis-Proxy 介紹
NRedis-Proxy 是一個Redis中間件服務(wù),第一個Java 版本開源Redis中間件商源,無須修改業(yè)務(wù)應(yīng)用程序任何代碼與配置车份,與業(yè)務(wù)解耦;以Spring為基礎(chǔ)開發(fā)自定義標簽牡彻,讓它可配置化扫沼,使其更加容易上手出爹;以netty 作為通信傳輸工具,讓它具有高性能缎除,高并發(fā)严就,可分布式擴展部署等特點,單片性能損耗約5%左右。
二器罐、 NRedis-Proxy 技術(shù)架構(gòu)圖
三梢为、NRedis-Proxy 優(yōu)勢以及缺點
a) 功能優(yōu)勢 1. 自帶連接池,簡單穩(wěn)定且性能高效 2. 支持讀寫分離轰坊,從讀按照權(quán)重算法 3. 支持靈活主從配置策略 4. 默認支持一致性哈希分片策略铸董,擴展性強 5. 分片策略與從讀取策略可自定義化 6. 支持主從自動切換,提供RedisServer監(jiān)聽服務(wù) 7. 支持HA 分布式部署肴沫,節(jié)點可隨意擴展
b) 天然缺點 中間件的存在袒炉,會自帶網(wǎng)絡(luò)損耗,但是網(wǎng)絡(luò)帶寬足夠樊零,可以忽略不計我磁。相比客戶端分片等策略,中間件可以解決客戶端應(yīng)用過多驻襟,解決M*N 問題夺艰,Redis-Server連接數(shù)不夠,造成機器CPU性能降低;如下圖:
四沉衣、NRedis-Proxy 類邏輯調(diào)用圖
五郁副、 NRedis-Proxy 配置標簽
1、redisProxyNode
2豌习、redisProxyMaster
3存谎、redisProxyCluster
4、默認兩個分片策略
六肥隆、NRedis-Proxy 使用場景
1既荚、項目初始團隊 當一個公司成立一個研發(fā)初始團隊,對于互聯(lián)網(wǎng)公司栋艳,研發(fā)時間周期短恰聘,迭代快,沒有時間與資源研發(fā)基礎(chǔ)中間件吸占,如果有成熟的中間服務(wù)晴叨,不參合業(yè)務(wù)代碼,與應(yīng)用解耦矾屯,讓研發(fā)專心專一研發(fā)業(yè)務(wù)本身 兼蕊,同時又能夠讓后期上線業(yè)務(wù)穩(wěn)定。NRedis-Proxy是一個高性能且穩(wěn)定中間件服務(wù)件蚕,第一個真正意義Java 版本Redis中間件孙技,讓研發(fā)團隊既可以學習产禾,又可控!
2绪杏、秒殺場景下愈,應(yīng)用服務(wù)較多,RedisServer較少
1毅舆、怎么樣保證讀取高性能,滿足高并發(fā)請求愈腾?
2.憋活、怎么樣保證數(shù)據(jù)一致性,保證MySQL 數(shù)據(jù)不丟失虱黄,與Redis 數(shù)據(jù)保持一致性
3悦即、 RedisServer 連接數(shù)不夠,應(yīng)用程序RedisClient 客戶端連接數(shù)過多橱乱,造成 Redis Server 機器CPU 性能降低辜梳,以至于Redis Server 性能低
4.、Redis Server 機器性能不一樣泳叠,當大流量風暴 怎么樣保障高性能RedisServer 機器 支持支撐 重要的業(yè)務(wù)實時性作瞄,高并發(fā)性
解決問題方案如下圖:
2叶摄、怎么樣保證數(shù)據(jù)一致性,保證MySQL 數(shù)據(jù)不丟失安拟,與Redis 數(shù)據(jù)保持一致性 使用MQ 消息以及消息冪等性蛤吓,采取補償機制,記錄錯誤日志糠赦,補寫數(shù)據(jù)会傲,保障數(shù)據(jù)最終一致性
3锅棕、RedisServer 連接數(shù)不夠,應(yīng)用程序RedisClient 客戶端連接數(shù)過多淌山,造成Redis Server 機器CPU 性能降低裸燎,以至于Redis Server 性能低 使用NRedis-Proxy 集群 部署,對應(yīng)用程序透明化泼疑,保障連接數(shù)可用德绿,避免此問題
4、Redis Server 機器性能不一樣退渗,當大流量風暴 怎么樣保障高性能RedisServer 機器 支持支撐 重要的業(yè)務(wù)實時性移稳,高并發(fā)性 自定義Redis 分片機制,采用虛擬捅算法以及配置中心系統(tǒng)会油,當流量一旦來臨个粱,在快超過最大容量時,改變分片規(guī)則以及流量翻翩,把不重要的業(yè)務(wù)流量涌向低性能機器都许,充分利用機器性能,保障服務(wù)性能.(后續(xù)開源)
七嫂冻、NRedis-Proxy 部署
1胶征、部署架構(gòu)圖
2、部署環(huán)境要求 JDK 1.7 Redis-Server Zookpeer3.4.6
3絮吵、調(diào)試步驟 a弧烤、啟動Redis Server 主機器
b、啟動Redis Server
c蹬敲、啟動 zookpeer
d暇昂、啟動NRedis-Proxy Server
e、使用Redis 命令行連接NRedis-Proxy
g伴嗡、部署方式 執(zhí)行nredis-proxy-sample 中 sing.sh 文件
八急波、 NRedis-Proxy 未來規(guī)劃
1、Redis Server 集群監(jiān)控報警 2瘪校、NRedis-Proxy頁面可控制流量以及RedisServer主從切換
九澄暮、項目開源地址