codis简介:
codis是一个分布式redis集群解决方案,对于上层的应用来说, 连接到codis-proxy和连接原生的redis-server没有明显的区别。
上层应用可以像使用单机的redis一样使用,codis底层会处理请求的转发,不停机的数据迁移等工作。所有后边的一切事情,
对于前面的客户端来说是透明的,可以简单的认为后边连接的是一个内存无限大的redis服务。
codis由四部分组成:
codis proxy(codis-proxy)
codis dashboard(codis-config)
codis redis(codis-server)
zookeeper/etcd
codis-proxy是客户端连接的redis代理服务,codis-proxy本身实现了redis协议,表现得和一个原生的redis没什么区别
codis-config是codis的管理工具,支持包括:添加/删除redis节点,添加/删除proxy节点,发起数据迁移等操作。
codis-config本身还自带了一个http-server,会启动一个dashboard,用户可以直接在浏览器上观察codis集群的运行状态。
codis-server是codis项目维护的一个redis分支,基于redis2.8.21开发,加入了slot的支持和原子的数据迁移指令。codis上层
的codis-proxy和codis-config只能和这个版本的redis交互才能正常运行。
codis依赖zookeeper来存放数据路由表和codis-proxy节点的元信息,codis-config发起的命令都会通过zookeeper同步到各个
存活的codis-proxy。
codis的优缺点:
Codis是一套用go语言编写的,为了应对高并环境下的redis集群软件,原理是对一个redis key操作前,
先把这个key通过crc32算法,分配到不同redis的某一个slot上,实现并发读写功能.而且能通过zookeeper
调用redis-sentinel来实现故障切换功能.现在最新版本是3.2.1,依托于redis3.2.9开发出来.
优点:实现高并发读写,数据一致性高.
缺点:性能有较大损耗,故障切换无法保证不丢key,无法进行读写分离.
简单搭建一个web集群,实验环境:
server2:172.25.254.2
.bash_profile和.bashrc的区别:
/etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.
并从/etc/profile.d目录的配置文件中搜集shell的设置.
/etc/bashrc: 为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
~/.bash_profile: 每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,
该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件.
~/.bashrc: 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,
该该文件被读取.
~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件.
另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)
只能继承/etc/profile中的变量,他们是"父子"关系.
配置环境变量:
[root@server2 ~]# ls
codis-release3.2.zip go1.8.linux-amd64.tar.gz
[root@server2 ~]# tar zxf go1.8.linux-amd64.tar.gz -C /usr/local/
[root@server2 ~]# pwd
/root
[root@server2 ~]# ls
codis-release3.2.zip go1.8.linux-amd64.tar.gz
[root@server2 ~]# vim .bash_profile
[root@server2 ~]# source .bash_profile 必须刷新生效
[root@server2 ~]# cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:/usr/local/go/bin
export PATH
[root@server2 ~]# go env go env用于打印Go语言的环境信息
GOARCH="amd64"
GOBIN=""
GOEXE=""
GOHOSTARCH="amd64"
GOHOSTOS="linux"
GOOS="linux"
GOPATH="/root/go"
GORACE=""
GOROOT="/usr/local/go"
GOTOOLDIR="/usr/local/go/pkg/tool/linux_amd64"
GCCGO="gccgo"
Codis 源代码需要下载到 $GOPATH/src/github.com/CodisLabs/codis:
[root@server2 ~]# vim .bash_profile
[root@server2 ~]# source .bash_profile
[root@server2 ~]# cat .bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.ba