Redis集群拆分原则之AKF
当我们搭建集群的时候,首先要想明白需要解决哪些问题,搞清楚这个之前,想想单节点、单实例、单机有哪些问题?
- 单点故障
- 容量有限
- 可支持的连接有限(性能不足)
- ......
为了解决这些问题,我们需要对服务器进行集群,一变多,具体怎们扩充服务器呢?
这儿引入一个概念,微服务设计原则之一——AKF原则
微服务拆分原则之AKF
首先来看单节点的单点故障这个问题,既然单节点容易挂,那么就可以进行复制,一变多,这儿设计到三个概念,主从、主主、主备,也是三种方式,简单来说,主主相当于多台服务器同时对外提供读写:
主从,主机可以读写,但是一般只对外提供写,从机对外提供读:
主备,主机提供读写,备机不对外提供服务,当主机挂了的时候,备机通过选举产生主机对外提供服务。
X轴拆分
可以看到的是,这几种拆分一台机器可以看成另一台机器的镜像,基本具有全量数据,这种拆分模式就是AKF拆分模式之一:X轴拆分
上图就是AKF拆分示意图,为了解决单点故障,所以弄几台全量数据的机器做备份,例如之前说到的主主、主备等,特点是任何两台包含的数据是差不多的,一台可以看成另一台的镜像。
Y轴拆分
这时候又有新的问题,例如一台服务器中,可能某些功能被频繁访问,涉及到的数据频繁读写,其他数据基本不怎么访问,这时候可以将这部分数据独立出来,也就是根据功能、业务继续拆分服务器,这种拆解就是AFK中的Y轴拆分
特点是Y轴纵向来看不同的Redis负责的功能是不同的,也就是所包含的数据也是不同的,另外仅仅扩展出一个Y轴上的业务服务器,又可能会存在单点问题,所以可以结合AFK的X轴拆分原则,继续对刚拆分的Y轴上的点进行X轴拆分。
Z轴拆分
在上面的AFK原则X-Y拆分之后,对服务器显示做了主从主备复制,然后做了业务拆分,不同的Redis负责不同的业务请求,这时候还会有一个新的问题,例如对于Y轴上一个Redis,它负责某一样业务,但是这天这个业务的数据访问巨大,贼大,那就只好对数据请求进行AFK的Z轴拆分,例如先分析下数据请求的情况,然后根据访问来源,分为北京的、上海的,这样不同的Redis虽然是负责不同的数据,但是负责的业务是一样的。AFK拆分图示:
AFK总结
X轴拆分:水平复制,就是讲单体系统多运行几个实例,做集群加负载均衡的模式,主主、主备、主从。
Y轴拆分:基于不同的业务拆分
Z轴拆分:基于数据拆分。
最新文章
- JavaScript零基础学习系列五
- 编码中的setCharacterEncoding 理解
- 【noiOJ】p8209
- 获取地理位置的html5代码
- IP地址子网掩码、主机数、子网掩码及主机段的算法
- Facade 门面模式 外观模式
- php-fpm日志告警";seem busy";
- android netty5.0 编译时 java.lang.NoClassDefFoundError: io.netty.channel.nio.NioEventLoopGroup
- nginx 使用过程中一些基础性问题总结
- 《Java程序设计》终极不改版
- 静态html制作之psd转html
- mvn管理项目jar包
- hyperledge环境安装
- 能使 Oracle 索引失效的六大限制条件【转】
- day051 Django创建
- 【转】Winform程序未捕获异常解决方法 EventType clr20r3 P1
- 【UI测试】--菜单位置
- JAVA框架之Hibernate【Hibernate缓存详解】
- luogu1312
- [C#技术] DataSet(DataTable)轻松的通过Sum、Aver、Count等统计出相关结果
热门文章
- 让API并行调用变得如丝般顺滑的绝招
- Linux音频编程--使用ALSA库播放wav文件
- win10 设置文件夹别名、修改文件夹图标、修改文件夹别名、英文目录和中文目录、设置文件夹中文名称、快捷访问显示设置中文
- Mac电脑远程连接SSH Host key verification failed 解决办法
- JVM 低延迟垃圾收集器 Shenandoah 和 ZGC
- centosl7简洁版配置
- python之scrapy篇(一)
- 第二章 信号量及条件变量(三)——>; 重点
- 一个轻量级的.Net Core微服务快速开发的轮子
- day116:MoFang:显示背包解锁/未解锁格子数&;显示背包的道具物品&;背包解锁