集群的目标
高可用: ,是当一台服务器停止服务后,对于业务及用户毫无影响。停止服务的原因可能由于网卡、路由器、机房、CPU负载过高、内存溢出、自然灾害等不可预期的原因导致,在很多时候也称单点问题。
突破数据量限制: 一台服务器不能储存大量数据,需要多台分担,每个存储一部分,共同存储完整个集群数据。最好能做到互相备份,即使单节点故障,也能在其他节点找到数据。
数据备份容灾: 单点故障后,存储的数据仍然可以在别的地方拉起。
压力分担:由于多个服务器都能完成各自一部分工作,所以尽量的避免了单点压力的存在
集群的基本形式
主从式
- 主从复制,同步方式:从节点来复制主节点的数据,保证和主节点的数据是一样的,这样的好处就是将的压力分担,如MySql为例,在大并发情况下MySql既要读又要写,这样很容易顶不住,使用主从模式主写重读,而且从节点和主节点的数据是一样的,这样就能承担更大的并发!
- 主从调度,控制方式:从可以让主控制,主就相当于是从的领导,所有的CURD由那个节点执行,都是由主节点来调度的,包括查询也是有主节点调度一个从节点来查询,如kubernetes就是使用的主从调度模式
主从式容易存在存储容量的问题,如使用主从复制,MySql主有什么数据从节点就有什么数据,从服务器和主服务器一模一样,当MySql存储不下了从也就存储不下了,如果想要突破存储量的限制,就可以使用下面的分片式集群模式!
分片式
- 数据分片存储:如部署多台Redis机器,1-10000号数据在第一台机器,10001-20000号数据在第二台机器上,20001-30000号数据在第三台机器上,相当于数据分了几个片区来存储,如查询99号数据,按照规则是存储在第一胎机器上,那么就会去第一台机器上查询!
- 片区之间备份:还是按照上面的分片存储规则,但是第一台机器不单是存储1-10000号数据,同时还本分了第三台机器的20001-30000号数据,第二台机器也不是只存储了10001-20000号数据,同时也备份了第一台机器的1-10000号数据,这是如果第一台机器崩溃,丢失的是1-10000号数据,那么这时在第二台机器上数捉了第一台机器1-10000号数据的备份,那么就不怕崩溃造成的数据丢失,不可用问题
选主式
选主式既可以是前两者的搭配,也可以是独立的模式,因为主从很容易出现单机故障问题,当主节点出现故障后那么就需要从新选主,分片式如果是采用服务端分片,那么各个分片去都是要产生关联关系的 ,这里指定储存片区的的调度可能就是一个主从调度,只要牵扯到主节点,出现领导人,那么就会出现选主,因为主机可能会存现问题,如网络故障,崩溃等等,一旦主机存现问题,那么就要在备选领导中进行选主,或者其他节点中选主,如RAFT算法一样
- 容灾选主:解决数据存储
- 调度选主:解决集群运行