redis集群搭建

分布式应用

北城以北 提交于 2019-12-03 04:53:08
基于SOA的分布式高可用架构和微服务架构,是时下如日中天的互联网企业级系统开发架构选择方案。在核心思想上,两者都主张对系统的横向细分和扩展,按不同的业务功能模块来对系统进行分割并且使用一定的手段实现服务之间的通信,并且基于弹性云服务搭建高可用的分布式解决方案。 但它们之间的区别可能比相似的地方要多,特别是体现在对服务的使用和与云服务的深度结合上。在具体实践中,微服务的架构也可以与其它互联网中间件组合在一起,组成规模更为庞大的SOA分布式系统。本文主要对一个典型的SOA分布式应用的架构和组件做详细的说明。 企业级系统架构的演变 单体式 单体架构即所有系统功能和模块基于MVC的设计模式耦合在一个单体服务器单元中。基于传统的MVC思想,单体应用基于前后端分离的原则,通过Model、Control和View共同来完成一个特点的服务请求。这种传统的架构模式带了了多人团队合作、代码更新和维护、持续部署方面的困难,更重要的是,这种架构无法支持互联网行业对高并发的需求。下图为一个典型商城应用的单体架构及其SSM实现架构: 关于单体式应用的更多资料,可参看: JavaWeb开发之详解Servlet及Servlet容器 基于SSM的Java Web应用开发原理初探 集群 至少在高并发的需求上,单体应用的缺陷是行业所无法忍受的, 那如何提升并发性能呢?一个直接的思路是,把单体应用变成多体,变成集群

redis入门(二)

流过昼夜 提交于 2019-12-03 04:26:13
目录 redis入门(二) 前言 持久化 RDB AOF 持久化文件加载 高可用 哨兵 流程 安装部署 配置技巧 集群 原理 集群搭建 参考文档 redis入门(二) 前言 在 redis入门(一) 简单介绍了redis的历史和安装部署,以及基本的数据结构和api,本节讲解redis持久化、高可用、redis集群和分布式相关的知识。 持久化 redis作为内存数据库,数据全部存储到内存中。但是若出现断电等原因会造成数据丢失。redis内置了2种持久化的方式,分别为RDB持久化和AOF持久化。 RDB RDB持久化是把当前进程数据生成快照保存到硬盘的过程,换句话来说是将当前redis内存中的数据全部保存到硬盘。触发RDB持久化过程分为手动触发和自动触发。 手动触发 可以通过 save 和 bgsave 两个命令手动执行保存RDB快照。 save 命令:会阻塞当前redis主进程,直到RDB保存完成,save命令已经弃用,不建议生产环境使用。 bgsave 命令:redis进程会执行fork操作创建进程执行保存RDB快照。只有在fork子进程才会短时间阻塞。建议大家都是用 bgsave 命令保存RDB快照。目前redis内部所有RDB操作都使用 bgsave 命令 127.0.0.1:26379> save OK 127.0.0.1:26379> bgsave Background

打不死的redis集群

柔情痞子 提交于 2019-12-03 03:26:55
最近遇到部分系统因为redis服务挂掉,导致部分服务不可用。所以希望搭建一个redis集群镜像,把原先散落各处的redis服务器统一管理起来,并且保障高可用和故障自动迁移。 一 redis集群分类 大家都知道redis集群有两种,一种是redis sentinel,高可用集群,同时只有一个master,各实例数据保持一致;一种是redis cluster,分布式集群,同时有多个master,数据分片部署在各个master上。基于我们的需求和redis本身技术的成熟度,本次要搭建的是redis sentinel。 Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance), 该系统执行以下三个任务: 监控(Monitoring): Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。 提醒(Notification : 当被监控的某个 Redis 服务器出现问题时, Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。 自动故障迁移(Automatic failover): 当一个主服务器不能正常工作时, Sentinel 会开始一次自动故障迁移操作, 它会将失效主服务器的其中一个从服务器升级为新的主服务器, 并让失效主服务器的其他从服务器改为复制新的主服务器; 当客户端试图连接失效的主服务器时,

apache tomcat负载均衡总结

自闭症网瘾萝莉.ら 提交于 2019-12-03 01:12:46
1 proxy、proxy_blancer和mod_jk的比较 proxy的缺点是,当其中一台tomcat停止运行的时候,apache仍然会转发请求过去,导致502网关错误。但是只要服务器再启动就不存在这个问题。 mod_jk方式的优点是,Apache 会自动检测到停止掉的tomcat,然后不再发请求过去。 缺点就是,当停止掉的tomcat服务器再次启动的时候,Apache检测不到,仍然不会转发请求过去。 proxy和mod_jk的共同优点是.可以只将Apache置于公网,节省公网IP地址资源。 可以通过设置来实现Apache专门负责处理静态网页,让Tomcat专门负责处理jsp和servlet等动态请求。 共同缺点是:如果前置Apache代理服务器停止运行,所有集群服务将无法对外提供。 proxy和mod_jk对静态页面请求的处理,都可以通设置来选取一个尽可能优化的效果。 mod_proxy_balancer和mod_jk都需要修改tomcat的配置文件配合 <Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1"> 这三种Tomcat集群方式对实现最佳负载均衡都有一定不足,mod_proxy_balancer和mod_jk相对好些,mod_jk的设置能力更强些。lbfactor参数来分配请求任务。

redis(9)集群搭建

匿名 (未验证) 提交于 2019-12-03 00:44:02
一、搭建流程 redis集群至少需要3个redis实例,不过官方推荐采用6个实例;3个master,3个slave。 那么我们需要做以下几件事: 1)编译一个redis-server 2)创建6个redis.conf配置文件 3)启动6个redis实例 4)redis-trib.rb创建集群 二、创建集群 1)编译一个redis-server $ wget http : //download.redis.io/releases/redis-4.0.10.tar.gz $ tar xzf redis - 4.0 . 10.tar . gz $ cd redis - 4.0 . 10 $ make 详细可以参考: https://www.cnblogs.com/lay2017/p/9248454.html 2)创建6个redis.conf配置文件 我们先创建以下文件夹目录: mkdir redis - cluster cd redis - cluster mkdir 7000 7001 7002 7003 7004 7005 然后我们将第一步编译出来的src/redis-server拷贝一份到redis-cluster下,然后把redis.conf拷贝6份分别放入到上面创建的6个文件夹内。 分别修改每个redis.conf的内容: port 7000 cluster - enabled

windows快速搭建redis伪集群(单台机器)

匿名 (未验证) 提交于 2019-12-03 00:44:02
1.简述 redis版本需要大于3 集群6个节点,3个master,3个slave 生产环境的话,建议6个物理机上搭建 2.下载ruby和redis,安装过程中把复选框都选上 ruby 链接: https://pan.baidu.com/s/19JuhBMc9uEai4i3hsdTbsw 密码: e6je redis 链接: https://pan.baidu.com/s/1d6E56jD11KIwZRloBeVV6Q 密码: ex4h redis管理端 链接: https://pan.baidu.com/s/18WMQdLiSySDzUEHjDGmpmg 密码: msrh 3.下载culster目录,直接放到redis安装目录 集群配置 链接: https://pan.baidu.com/s/1Q1lMhINSv13f5LUD16i3xA 密码: s7ci 4.下载已经写好的util下的全部bat文件和rb文件,把bat,rb文件全部放在redis目录下 批处理文件 链接: https://pan.baidu.com/s/1OvbM4lOMdgo65CyV6gSbSQ 密码: c1pm 5.按照顺序执行bat文件 install.bat 把6个redis****服务全部启动 install_module.bat install_culster.bat 6.集群客户端

redis4.0、codis、阿里云redis 3种redis集群对比分析

匿名 (未验证) 提交于 2019-12-03 00:44:02
摘要: 本文对redis4.0版本的cluster,codis,以及阿里云redis 3种集群进行了对比分析。 1、架构对比 1.1、redis 4.0 cluster redis 4.0版本的集群是去中心化的结构,集群元数据信息分布在每个节点上,主备切换依赖于多个节点协商选主。 redis 提供了redis-trib 工具做部署集群及运维等操作。 客户端访问散列的db节点需依赖smart client,也就是客户端需要对redis返回的节点信息做判断选择路由等操作。例如客户端请求一个节点,如果所请求的key不在该节点上,客户端需要判断返回的move或ask等指令,重定向请求到对应的节点。 1.2、codis codis由3大组件构成: codis-server : 修改过源码的redis, 支持slot,扩容迁移等 codis-proxy : 支持多线程,go语言实现的内核 codis Dashboard : 集群管理工具 提供web图形界面管理集群。 集群元数据存在在zookeeper或etcd。 提供独立的组件codis-ha负责redis节点主备切换。 基于proxy的codis,客户端对路由表变化无感知。客户端需要从codis dashhoard调用list proxy命令获取所有proxy列表,并根据自身的轮询策略决定访问哪个proxy节点以实现负载均衡。 1.3

redis入门(三)(转载)

匿名 (未验证) 提交于 2019-12-03 00:44:02
Ŀ¼ Ŀ¼ redis-trib.rb Ŀ¼ redis 入门(一) redis入门(二) redis入门(三) 在前两章介绍了 Redis 的一些常用的API与功能,在本章会对一些其他功能包括事务、脚本、Redis集群搭建工具以及集群动态扩容与故障转移方式进行讲解。 在关系型 数据库 ,我们可以通过事务(transaction)的方式执行数据库级别的原子性操作。在Redis中也提供简单的事务功能。 Redis通过MULTI、EXEC、WATCH等命令来实现功能。它提供了一种将多个命令请求打包,然后一次性、按顺序地执行多个命令的机制。 将一组需要一起执行的命令放到MULTI和EXEC两个命令之间。MULTI命令代表事务开始,EXEC命令代表事务结束,它们之间的命令是原子顺序执行的,在MULTI执行之后,的写命令会直接返回QUEUE,当输入EXEC后会将所有命令一起执行。 127.0.0.1:6379> multi OK 127.0.0.1:6379> set a 1 QUEUED 127.0.0.1:6379> set b 2 QUEUED 127.0.0.1:6379> exec 1) OK 2) OK 若不使用事务时,客户端发送的命令会立即被服务端执行。使用事务时,当客户端发送的命令是 EXEC 、 DISCARD 、 WATCH 、 MULTI 命令之一时

redis集群

匿名 (未验证) 提交于 2019-12-03 00:44:02
1.redis集群搭建   redis分片和哨兵存在的问题 优点: 分片实现内存数据的动态扩容 分片可以分散的保存数据 哨兵可以实现redis高可用 缺点: 分片中如果有一个节点宕机,则整个分片将不能正常使用 哨兵本身没有实现高可用,如果哨兵宕机,则可能导致整合redis服务宕机. 1.1 redis集群内部通讯原理 搭建原则:一般主节点一般都大于等于3,同时主节点的个数是奇数个. 搭建: 3主6从共9台redis. 内部通信原理: 1.2编辑redis.conf配置文件 (1)注释IP绑定 (2)修改保护模式和端口 (3)开启后台启动 (4)修改PID路径 (5)修改存储路径 (6)修改内存策略 (7)关闭AOP模式 (8)开启集群配置 (9)开启集群配置 (10)设定超时时间 1.2.1批量修改配置文件 说明:将redis.conf中7000改为对应的端口号. 修改命令: 分别修改7001-7008端口号 1.2.2批量启动redis #!/bin/sh redis - server 7000 / redis . conf & redis - server 7001 / redis . conf & redis - server 7002 / redis . conf & redis - server 7003 / redis . conf & redis - server

redis集群搭建(redis版本3.2.5)

匿名 (未验证) 提交于 2019-12-03 00:43:02
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37294838/article/details/90339642 注意: 如下图: 安装ruby环境 ( http://www.rvm.io/ hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB https://get.rvm.io 第二步:创建6个redis的配置文件,3主3从 redis-6379.conf include /temp/myredis/redis.conf pidfile "/var/run/redis_6379.pid" port 6379 dbfilename "dump6379.rdb" cluster-enabled yes cluster-config-file nodes-6379.conf cluster-node-timeout 15000 redis-6389.conf include /temp/myredis/redis.conf pidfile /var/run/redis_6389.pid port 6389 dbfilename dump6389.rdb