- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
这里总结一下redis集群的搭建以便日后所需同时也希望能对你有所帮助。
一、redis的安装
Redis是c语言开发的。
安装redis需要c语言的编译环境。如果没有gcc需要在线安装:yum install gcc-c++
第一步:获取源码包:wget
第二步:解压缩 redis: tar zxvf redis-3. 0. 0. tar. gz
第三步:编译?进入redis源码目录(cd redis-3. 0. 0) o执行make
第四步:安装° make install PREFIX=/usr/local/redis
PREFIX参数指定redis的安装目录。一般软件安装到/usr目录下
这样Redis就成功装在了我们的usr/local/redis目录下。
第五步:设置后台启动:
[root@localhost redis-3. 0. 0]# cp redis. conf /usr/local/redis/bin/
(把/root/redis-3. 0. 0/redis. conf 复制到/usr/local/redis/bin 目录下)
修改配置文件:把daemonize后面的参数改为yes
测试启动:[root@localhost bin]# redis. conf
查看 redis 进程:[root?localhost bin]# ps aux grep redis
二、集群原理
一个系统建立集群主要需要解决两个问题:数据同步问题和集群容错问题。
三、Naive方案
一个简单粗暴的方案是部署多台一模一样的Redis服务,再用负载均衡来分摊压力以及 监控服务状态。这种方案的优势在于容错简单,只要有一台存活,整个集群就仍然可用。但 是它的问题在于保证这些Redis服务的数据一致时,会导致大量数据同步操作,反而影响性 能和稳定性。
四、Redis集群方案
Redis集群方案基于分而治之的思想。Redis中数据都是以Key-Value形式存储的,而不 同Key的数据之间是相互独立的。因此可以将Key按照某种规则划分成多个分区,将不同分 区的数据存放在不同的节点上。这个方案类似数据结构中哈希表的结构。在Redis集群的实 现中,使用哈希算法(公式是CRC16(Key) mod 16383)将Key映射到0~16383范围的整数。 这样每个整数对应存储了若干个Key-Value数据,这样一个整数对应的抽象存储称为一个槽 slot)a每个Redis Cluster的节点 准确讲是master节点 负责一定范惘的槽,所 有节点组成的集群覆盖了 0~16383整个范围的槽。
据说任何计算机问题都可以通过增加一个中间层来解决。槽的概念也是这么一层。它介 于数据和节点之间,简化了扩容和收缩操作的难度。数据和槽的映射关系由固定算法完成, 不需要维护,节点只需维护自身和槽的映射关系。
五、Slave
上面的方案只是解决了性能扩展的问题,集群的故障容错能力并没有提升。提高容错能 力的方法一般为使用某种备份/冗余手段。负责一定数量的槽的日点被称为master节点。为 了增加集群稳定性,每个master节点可以配置若干个备份节点一一称为slave节点。Slave 行点一般作为冷备份保存master行点的数据,在master节点宕机时替换master 51点。在一 些数据访问压力比较大的情况下,slave在点也可以提供读取数据的功能,不过slave行点 的数据实时性会略差一下。而写数据的操作则只能通过master节点进行。
六、请求重定向
当Redis节点接收到对某个key的命令时,如果这个key对应的槽不在自己的负责范围 内,则返回MOVED重定向错误,通知客户端到正确的节点去访问数据。
如果频繁出现重定向错误,势必会影响访问的性能。由于从key映射到槽的算法是固定 公开的,客户端可以在内部维护槽到门点的映射关系,访问数据时可以自己通过key计算出 槽,然后找到正确的汽点,减少重定向错误。目前大部分开发语言的Redis客户端都会实现 这个策略。这个地址可以查看主流语言的Redis客户端。
七、节点通信
尽管不同节点存储的数据相互独立,这些廿点仍然需要相互通信以同步节.点状态信息。 Redis集群采用P2P的Gossip协议,节点之间不断地通信交换信息,最终所有节点的状态都 会达成一致。常用的Gossip消息有下而几种:
01、ping消息:每个节点不断地向其他节点发起ping消息,用于检测行点是否在线和 交换节点状态信息。
02、pong消息:收到ping、meet消息时的响应消息。
03、meet消息:新节点加入消息。
04、fail消息:行点下线消息。
05、forget消息:忘记节点消息,使一个节点下线。这个命令必须在60秒内在所有节 点
原创力文档


文档评论(0)