首页 > 编程知识 正文

redis分布式搭建,codis和redis用哪个

时间:2023-05-03 07:28:19 阅读:223221 作者:1967

1.什么是Codis?

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

2.codis介绍

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

Codis由四部分组成

Codis-proxy实现redis协议,由于本身是无状态的,因此可以部署很多个节点Codis-config是codis的管理工具,包括添加/删除redis节点添加/删除proxy节点,发起数据迁移等操作,自带httpserver,支持管理后台方式管理配置Codis-server是codis维护的redis分支,基于2.8.21分支,加入了slot的支持和原子的数据迁移指令; codis-proxy和codis-config只能和这个版本的redis交互才能正常运行Zookeeper用于codis集群元数据的存储,维护codis集群节点3.Codis的架构

4.Codis的优缺点

(1)优点
对客户端透明,与codis交互方式和redis本身交互一样
支持在线数据迁移,迁移过程对客户端透明有简单的管理和监控界面
支持高可用,无论是redis数据存储还是代理节点
自动进行数据的均衡分配
最大支持1024个redis实例,存储容量海量
高性能

(2)缺点
采用自有的redis分支,不能与原版的redis保持同步
如果codis的proxy只有一个的情况下, redis的性能会下降20%左右
某些命令不支持,比如事务命令muti
国内开源产品,活跃度相对弱一些

5.Codis 3.x 的各个组件的说明 Codis Server基于 redis-3.2.8 分支开发,增加了额外的数据结构,以支持 slot 有关的操作以及数据迁移指令。具体的修改可以参考文档 redis 的修改Codis Proxy客户端连接的 Redis 代理服务, 实现了 Redis 协议。 除部分命令不支持以外(不支持的命令列表),表现的和原生的 Redis 没有区别(就像 Twemproxy)。对于同一个业务集群而言,可以同时部署多个 codis-proxy 实例;不同 codis-proxy 之间由 codis-dashboard 保证状态同步Codis Dashboard集群管理工具,支持 codis-proxy、codis-server 的添加、删除,以及据迁移等操作。在集群状态发生改变时,codis-dashboard 维护集群下所有 codis-proxy 的状态的一致性。对于同一个业务集群而言,同一个时刻 codis-dashboard 只能有 0个或者1个;所有对集群的修改都必须通过 codis-dashboard 完成Codis Admin集群管理的命令行工具。可用于控制 codis-proxy、codis-dashboard 状态以及访问外部存储Codis FE集群管理界面。多个集群实例共享可以共享同一个前端展示页面;通过配置文件管理后端 codis-dashboard 列表,配置文件可自动更新Storage为集群状态提供外部存储。提供 Namespace 概念,不同集群的会按照不同 product name 进行组织;目前仅提供了 Zookeeper、Etcd、Fs 三种实现,但是提供了抽象的 interface 可自行扩展。6.codis集群的搭建

基本实验环境
主机server1:172.25.2.1和物理机:172.25.2.250

(1)在真机中创建一个全新的快照用来做实验,保证实验环境干净


(2)用真机连接虚拟机server1

(3)在真机上搭建共享yum源,让server1使用
并且关闭真机的防火墙,开启真机的apache服务

(4)确保server1的yum仓库可以使用

codis集群的搭建过程如下:

(1)安装go环境
从网上下载go的压缩包并且解压到指定目录下

在环境变量文件中最后添加以下三行



安装完成后可以运行下列命令进行检测

测试一个go程序



(2)设置编译环境
$GOPATH 是本机所有第三方库 go 项目所在目录,Codis 仅是其中之一
下载 Codis 源代码

解压


安装编译需要的依赖性工具


(3)编译 Codis 源代码
直接通过 make 进行编译,会看到如下输出




(4)快速启动
2分钟快速构建一个单机版测试 codis 集群,无任何外部组件依赖.
源码中 admin 文件夹提供了一系列脚本以便快速启动、停止各个组件,提高运维效率。
1)启动codis-dashboard
使用 codis-dashboard-admin.sh 脚本启动 dashboard,
并查看 dashboard 日志确认启动是否有异常。




2)启动codis-proxy
使用 codis-proxy-admin.sh 脚本启动 codis-proxy,
并查看 proxy 日志确认启动是否有异常。


3)启动codis-server
使用 codis-server-admin.sh 脚本启动 codis-server,
并查看 redis 日志确认启动是否有异常。

4)启动codis-fe
使用 codis-fe-admin.sh 脚本启动 codis-fe,并查看 fe 日志确认启动是否有异常。

(5)开启完毕之后查看一下端口

访问测试

(1)在浏览器输入172.25.2.1:9090,查看图形界面




(2)通过fe添加group
通过web浏览器访问集群管理页面(fe地址:127.0.0.1:9090) 选择我们刚搭建的集群 codis-demo,在 Proxy 栏可看到我们已经启动的 Proxy, 但是 Group 栏为空,因为我们启动的 codis-server 并未加入到集群 添加 NEW GROUP,NEW GROUP 行输入 1,再点击 NEW GROUP 即可 添加 Codis Server,Add Server 行输入我们刚刚启动的 codis-server 地址,添加到我们刚新建的 Group,然后再点击 Add Server 按钮即可,如下图所示:




(3)通过fe初始化slot
新增的集群 slot 状态是 offline,因此我们需要对它进行初始化(将 1024 个 slot 分配到各个 group),而初始化最快的方法可通过 fe 提供的 rebalance all slots 按钮来做,如下图所示,点击此按钮,我们即快速完成了一个集群的搭建。



到这里codis集群的搭建已经完毕,只需要图形化管理集群即可
不过这个只是其中一种方式之一,也可以使用:Ansible或者docker

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。