作者:迫不及待的口琴\链接:https://www.cnblogs.com/Coura...我们在搭建集群的时候,首先要明白需要解决什么问题。在搞清楚这个之前,想一想单节点、单实例、单机的问题是什么?单点故障的能力是有限的,能够支持的连接也是有限的(性能不够)。为了解决这些问题,我们需要对服务器进行集群。扩展服务器呢?这里有一个概念,微服务设计的原则之一——AKF原则微服务拆分原则AKF首先看单节点的单点故障。由于单个节点很容易挂掉,所以可以复制。这里设计了三个概念,master-slave,master-master,master-standby。简单来说,master-master相当于多台服务器同时对外提供读写:master-slave,宿主机可以读写,但一般只提供对外写,从机提供外读:主备,主机提供读写,备机不对外提供服务。当主机挂掉时,备机选举主机对外提供服务。从X轴分切可以看出,这几款分切机中的一台可以看做是另一台机器的镜像,基本都是全数据的。这种分裂方式是AKF分裂方式之一:X轴分裂上图是AKF分裂的示意图。为了解决单点故障,采用多台数据全量的机器做备份,比如上面提到的master和master,master和backup。特点是任意两台机器包含相似的数据。一个站可以看作是另一个站的镜像。这时候Y轴拆分又出现了新的问题。例如,在服务器中,某些功能可能会被频繁访问,涉及到的数据可能会被频繁读写,而其他数据则很少被访问。这时候就可以把这部分数据拆分开来,也就是继续按照功能和业务拆分服务器。这种拆分就是AFK中的Y轴拆分,另外,Y轴上只扩展了一台业务服务器,可能会出现单点问题,所以可以结合AFK的X轴拆分原理,继续拆分Y轴上有的点刚刚在X轴上拆分。Z轴拆分是基于上面的AFK原理X-Y拆分之后,在服务器端展示进行master-slave主从复制,然后进行业务拆分。不同的Redis负责不同的业务请求。这时候,就会出现新的问题,比如对于Y轴上的一个Redis,它负责某个业务,但是今天这个业务的数据访问非常庞大,所以我们要拆分AFK的Z轴上的数据请求,比如,首先分析数据请求情况,然后根据访问来源,分为北京和上海。不同的Redis虽然负责不同的数据,但是负责的是同一个业务。AFK拆分图:AFK总结X轴拆分:水平复制,即单个系统多跑几个实例,做一个集群加负载均衡模式,master-master,master-standby,master-slave。Y轴拆分:基于不同业务拆分Z轴拆分:基于数据拆分。近期热点文章推荐:1.1000+Java面试题及答案(2022最新版)2.厉害了!Java协程来了。..3.SpringBoot2.x教程,太全面了!4、SpringBoot2.6正式发布,一大波新特性。.5.《Java开发手册(嵩山版)》最新发布,赶快下载吧!感觉不错,别忘了点赞+转发!
