Codis分布式Redis解决方案 v3.2.2 源码下载

来源:脚本之家  责任编辑:小易  

Dynomite是NetFlix对亚马逊分布式存储2113引擎Dynamo的一个开源通5261用实现4102,使用1653C/C++语言编写、以代理的方式实现的Redis缓存集群方案。Dynomite不仅能够将基于内存的Redis和Memcached打造成分布式数据库,还支持持久化的MySQL、BerkeleyDB、LevelDB等数据库,并具有简单、高效、支持跨数据中心的数据复制等优点www.zgxue.com防采集请勿采集本网。

源码大小:5.4MB 源码语言:简体中文 源码类型:国产软件 源码授权:免费软件 更新时间:2020-08-13 16:36:09 源码类别:其它源码 源码官网: 官方网址 网友评分:源码评分 应用平台:C/C++/Go

 Codis是一个分布式Redis解决方案,对于上层的应用来说,连接到CodisProxy和连接原生的RedisServer没有明显的区别(不支持的命令列表),上层应用可以像使用单机的Redis一样使用,Codis底层会处理请求的转发,不停机的数据迁移等工作,所有后边的一切事情,对于前面的客户端来说是透明的,可以简单的认为后边连接的是一个内存无限大的Redis服务。

Codis由四部分组成:

redis3.0以后开始支持集群了,不过是主从式集群,如果你的应用不支持主从式集群的话,可以使用codis这个是国人豌豆荚开发的redis分布式集群! 本回答被提问者采纳 已赞过 已

CodisProxy(codis-proxy)

redis3.0以后开始支持集群了,不过是主从式集群,如果你的应用不支持主从式集群的话,可以使用codis这个是国人豌豆荚开发的redis分布式集群,有关的文章可以去

CodisManager(codis-config)

ZooKeeper :是Codis项目维护的一个Redis分支,基于2.8.13开发,添加/删除Redis节点,添加/,表现得和一个原生的Redis没什么区别(就像Twemproxy),对于一个业务来说,发起数据

CodisRedis(codis-server)

多个 同构twemproxy(配置 2113 相同) 同时 工作, 5261 接受客户端的请求 ,根 据hash算法, 4102 转发给对应的 1653 redis。 优点: - 开发 简单 ,对应用几乎透明 -

ZooKeeper

redis3.0以后开始支持集群了,不过是主从式集群,如果你的应用不支持主从式集群的话,可以使用codis这个是国人豌豆荚开发的redis分布式集群,有关的文章可以去

codis-proxy是客户端连接的Redis代理服务,codis-proxy本身实现了Redis协议,表现得和一个原生的Redis没什么区别(就像Twemproxy),对于一个业务来说,可以部署多个codis-proxy,codis-proxy本身是无状态的。

codis-config是Codis的管理工具,支持包括,添加/删除Redis节点,添加/删除Proxy节点,发起数据迁移等操作。codis-config本身还自带了一个httpserver,会启动一个dashboard,用户可以直接在浏览器上观察Codis集群的运行状态。

codis-server是Codis项目维护的一个Redis分支,基于2.8.13开发,加入了slot的支持和原子的数据迁移指令。Codis上层的codis-proxy和codis-config只能和这个版本的Redis交互才能正常运行。

Codis依赖ZooKeeper来存放数据路由表和codis-proxy节点的元信息,codis-config发起的命令都会通过ZooKeeper同步到各个存活的codis-proxy。

Codis支持按照Namespace区分不同的产品,拥有不同的productname的产品,各项配置都不会冲突。

Codis特性:

自动平衡

使用非常简单

图形化的面板和管理工具

支持绝大多数 Redis 命令,完全兼容 twemproxy

支持 Redis 原生客户端

安全而且透明的数据移植,可根据需要轻松添加和删除节点

提供命令行接口

RESTful APIs

下载地址如下:

网硕互联电信下载

港中数据电信下载

河南紫田网通下载

易阳网络电信下载

酷云中国电信下载

易阳IDC电信下载

群英网络电信下载

烽火云集电信下载

网盾科技电信下载

创梦网络电信下载

1 从零2113开始最初的需求非常简单,我们有一个提5261供热点新闻列表的api:/hot-news,api的消费者抱4102怨说每次请1653求都要2秒左右才能返回结果。随后我们就着手于如何提升一下api消费者感知的性能,很快最简单粗暴的第一个方案就出来了:为API的响应加上基于HTTP的缓存控制 cache-control:max-age=600 ,即让消费者可以缓存这个响应十分钟。如果api消费者如果有效的利用了响应中的缓存控制信息,则可以有效的改善其感知的性能(10分钟以内)。但是还有2个弊端:第一个是在缓存生效的10分钟内,api消费者可能会得到旧的数据;第二个是如果api的客户端无视缓存直接访问API依然是需要2秒,治标不治本呐。2 基于本机内存的缓存为了解决调用API依然需要2秒的问题,经过排查,其主要原因在于使用SQL获取热点新闻的过程中消耗了将近2秒的时间,于是乎,我们又想到了一个简单粗暴的解决方案,即把SQL查询的结果直接缓存在当前api服务器的内存中(设置缓存有效时间为1分钟)。后续1分钟内的请求直接读缓存,不再花费2秒去执行SQL了。假如这个api每秒接收到的请求时100个,那么一分钟就是6000个,也就是只有前2秒拥挤过来的请求会耗时2秒,后续的58秒中的所有请求都可以做到即使响应,而无需再等2秒的时间。其他API的小伙伴发现这是个好办法,于是很快我们就发现API服务器的内存要爆满了。。。3 服务端的Redis在API服务器的内存都被缓存塞满的时候,我们发现不得不另想解决方案了。最直接的想法就是我们把这些缓存都丢到一个专门的服务器上吧,把它的内存配置的大大的。然后我们就盯上了redis。。。至于如何配置部署redis这里不解释了,redis官方有详细的介绍。随后我们就用上了一台单独的服务器作为Redis的服务器,API服务器的内存压力得以解决。3.1 持久化(Persistence)单台的Redis服务器一个月总有那么几天心情不好,心情不好就罢工了,导致所有的缓存都丢失了(redis的数据是存储在内存的嘛)。虽然可以把Redis服务器重新上线,但是由于内存的数据丢失,造成了缓存雪崩,API服务器和数据库的压力还是一下子就上来了。所以这个时候Redis的持久化功能就派上用场了,可以缓解一下缓存雪崩带来的影响。redis的持久化指的是redis会把内存的中的数据写入到硬盘中,在redis重新启动的时候加载这些数据,从而最大限度的降低缓存丢失带来的影响。3.2 哨兵(Sentinel)和复制(Replication)Redis服务器毫无征兆的罢工是个麻烦事。那么怎办办?答曰:备份一台,你挂了它上。那么如何得知某一台redis服务器挂了,如何切换,如何保证备份的机器是原始服务器的完整备份呢?这时候就需要Sentinel和Replication出场了。Sentinel可以管理多个Redis服务器,它提供了监控,提醒以及自动的故障转移的功能;Replication则是负责让一个Redis服务器可以配备多个备份的服务器。Redis也是利用这两个功能来保证Redis的高可用的。此外,Sentinel功能则是对Redis的发布和订阅功能的一个利用。3.3 集群(Cluster)单台服务器资源的总是有上限的,CPU资源和IO资源我们可以通过主从复制,进行读写分离,把一部分CPU和IO的压力转移到从服务器上。但是内存资源怎么办,主从模式做到的只是相同数据的备份,并不能横向扩充内存;单台机器的内存也只能进行加大处理,但是总有上限的。所以我们就需要一种解决方案,可以让我们横向扩展。最终的目的既是把每台服务器只负责其中的一部分,让这些所有的服务器构成一个整体,对外界的消费者而言,这一组分布式的服务器就像是一个集中式的服务器一样(之前在解读REST的博客中解释过分布式于基于网络的差异:基于网络应用的架构)。在Redis官方的分布式方案出来之前,有twemproxy和codis两种方案,这两个方案总体上来说都是依赖proxy来进行分布式的,也就是说redis本身并不关心分布式的事情,而是交由twemproxy和codis来负责。而redis官方给出的cluster方案则是把分布式的这部分事情做到了每一个redis服务器中,使其不再需要其他的组件就可以独立的完成分布式的要求。我们这里不关心这些方案的优略,我们关注一下这里的分布式到底是要处理那些事情?也就是twemproxy和codis独立处理的处理分布式的这部分逻辑和cluster集成到redis服务的这部分逻辑到底在解决什么问题?如我们前面所说的,一个分布式的服务在外界看来就像是一个集中式的服务一样。那么要做到这一点就面临着有一个问题需要解决:既是增加或减少分布式服务中的服务器的数量,对消费这个服务的客户端而言应该是无感的;那么也就意味着客户端不能穿透分布式服务,把自己绑死到某一个台的服务器上去,因为一旦如此,你就再也无法新增服务器,也无法进行故障替换。解决这个问题有两个路子:第一个路子最直接,那就是我加一个中间层来隔离这种具体的依赖,即twemproxy采用的方式,让所有的客户端只能通过它来消费redsi服务,通过它来隔离这种依赖(但是你会发现twermproxy会成为一个单点),这种情况下每台redis服务器都是独立的,它们之间彼此不知对方的存在;第二个路子是让redis服务器知道彼此的存在,通过重定向的机制来引导客户端来完成自己所需要的操作,比如客户端链接到了某一个redis服务器,说我要执行这个操作,redis服务器发现自己无法完成这个操作,那么就把能完成这个操作的服务器的信息给到客户端,让客户端去请求另外的一个服务器,这时候你就会发现每一个redis服务器都需要保持一份完整的分布式服务器信息的一份资料,不然它怎么知道让客户端去找其他的哪个服务器来执行客户端想要的操作呢。上面这一大段解释了这么多,不知有没有发现不管是第一个路子还是第二个路子,都有一个共同的东西存在,那就是分布式服务中所有服务器以及其能提供的服务的信息。这些信息无论如何也是要存在的,区别在于第一个路子是把这部分信息单独来管理,用这些信息来协调后端的多个独立的redis服务器;第二个路子则是让每一个redis服务器都持有这份信息,彼此知道对方的存在,来达成和第一个路子一样的目的,优点是不再需要一个额外的组件来处理这部分事情。Redis Cluster的具体实现细节则是采用了Hash槽的概念,即预先分配出来16384个槽:在客户端通过对Key进行CRC16(key)% 16384运算得到对应的槽是哪一个;在redis服务端则是每个服务器负责一部分槽,当有新的服务器加入或者移除的时候,再来迁移这些槽以及其对应的数据,同时每个服务器都持有完整的槽和其对应的服务器的信息,这就使得服务器端可以进行对客户端的请求进行重定向处理。4 客户端的Redis上面的第三小节主要介绍的是Redis服务端的演进步骤,解释了Redis如何从一个单机的服务,进化为一个高可用的、去中心化的、分布式的存储系统。这一小节则是关注下客户端可以消费的redis服务。4.1 数据类型redis支持丰富的数据类型,从最基础的string到复杂的常用到的数据结构都有支持:string:最基本的数据类型,二进制安全的字符串,最大512M。list:按照添加顺序保持顺序的字符串列表。set:无序的字符串集合,不存在重复的元素。sorted set:已排序的字符串集合。hash:key-value对的一种集合。bitmap:更细化的一种操作,以bit为单位。hyperloglog:基于概率的数据结构。这些众多的数据类型,主要是为了支持各种场景的需要,当然每种类型都有不同的时间复杂度。其实这些复杂的数据结构相当于之前我在《解读REST》这个系列博客基于网络应用的架构风格中介绍到的远程数据访问(Remote Data Access = RDA)的具体实现,即通过在服务器上执行一组标准的操作命令,在服务端之间得到想要的缩小后的结果集,从而简化客户端的使用,也可以提高网络性能。比如如果没有list这种数据结构,你就只能把list存成一个string,客户端拿到完整的list,操作后再完整的提交给redis,会产生很大的浪费内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • redis能解决什么问题 百度知道
  • codis集群中怎么使用redis 百度知道
  • codis 中redis-server 数据怎么主从同步 百度知道
  • java 使用codis?以及Spring如何整合Codis? 百度知道
  • redis 从哪个版本开始支持主备 百度知道
  • redis哪个版本开始支持集群 百度知道
  • codis集群搭建好后怎么使用 百度知道
  • 面试问题redis有哪些集群方案 百度知道
  • redis设计与实现第二版基于redis哪个版本 百度知道
  • 如何实现高可用的redis集群 百度知道
  • 网站首页源码下载asp源码php源码.net源码jsp源码软件开发脚本下载js框架网站地图网页游戏黑客源码数据库类其它源码整站系统博客程序留言聊天企业网站新闻文章ajax相关搜索链接文件管理交友会员上传下载投票调查框架模板整站系统新闻文章留言聊天博客系统贺卡图片ajax相关文件管理问答系统社区论坛上传下载整站系统控件组件新闻文章主机域名计数统计小偷采集电子商务学校班级 社区论坛上传下载投票调查blog程序留言聊天整站系统社区论坛上传下载投票调查数据管理jsp其它c#源码易语言源码delphi源码vb源码java源码其它菜单导航tab标签焦 点 图在线客服css特效相册代码flash特效批处理其它jqueryextjsprototypemootoolsajax/javascript其它框架主页源码下载其它源码frp内网穿透工具 v0.33.0codis分布式redis解决方案 v3.2.2seafile开源网盘云存储 v6.2.11仿爱奇艺html5电影站源码 v1.1云码支付源码星糖付多合一全自动码商,商户,代理,付一体系统完整数据源码codisredisredis解决方案ckplayer 超酷视频播放器(支持flv,f4v,mp4,rtmp)vx bulid2020.ckplayer 超酷视频播放器(支持flv,f4v,mp4,rtmp)vx bulid2020.下载my97日期控件 datepicker 4.1 正式版my97日期控件 datepicker 4.1 正式版下载精美淘宝客单页面 zblog模板 v1.0 精美淘宝客单页面 zblog模板 v1.0 下载 蝙蝠在线考试系统源码 v2.2.6 蝙蝠在线考试系统源码 v2.2.6下载qvod快播电影插件 for discuz 7.0qvod快播电影插件 for discuz 7.0下载jquery v3.4.1 免费版jquery v3.4.1 免费版下载jquery easyui v1.9.0jquery easyui v1.9.0下载网页播放器_支持lrc歌词同步及列表拖动的网页mp3播放器源码网页播放器_支持lrc歌词同步及列表拖动的网页mp3播放器源码下载cairo 1.16.0 开源2d向量图形绘图库cairo 1.16.0 开源2d向量图形绘图库下载找不到分享码?frp内网穿透工具 v0.33.0codis分布式redis解决方案 v3.2.2seafile开源网盘云存储 v6.2.11仿爱奇艺html5电影站源码 v1.1云码支付源码星糖付多合一全自动码商,商户,代理,付一体系统完整数据源码x-tool前端开发小工具集合 v0.1.0plaincms异步协程内容管理系统 v1.0elton web框架 v1.0.4lanai ui后台管理框架 v1.0litenetwork轻量级网络请求框架 v1.0.1分享码的获取方法迅雷winrar v5微信小程序androidasp源码生活购物php源码asp.net源码jsp源码软件开发移动开发网页游戏黑客源码数据库类网页编辑器其它源码frp内网穿透工具 v0.33.0codis分布式redis解决方案 v3.2.2layui(前端ui框架) 2.5.6 官方最新版spring framework v5.2.8t-io 百万级即时通讯框架 v3.6.2seafile开源网盘云存储 v6.2.11仿爱奇艺html5电影站源码 v1.1云码支付源码星糖付多合一全自动码商,商户,代理,付一体系统完整x-tool前端开发小工具集合 v0.1.0bootstrap 正式版 v4.5.2chrome
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved