单点故障的状况不可避免,并且单副本的存储方案早已没法知足业务的可靠性要求,单机可靠性就就两个9,也就是一年大概有3.65天不可用。所以通常状况下咱们至少也会上个双机存储架构。凡事最好有个plan B。html
主:主机,备:备机。
主机的意思固然是以它为主了,读写都是主机上,而备机呢就是备用,默默的在背后吸取主机的数据,时刻待命着等待主机挂了以后取而代之(没这么坏哈哈)。所以在主机还活着的状况下,备机的惟一使命就是同步主机的数据,不对外提供服务。服务器
优势:简单,主备之间只有数据同步,不须要考虑别的状况。就很简单的配置一下,再搞一台服务器就能组成主备架构了。架构
缺点:备机等于就拿来备份,浪费了备机这台服务器的资源。上面说的不考虑别的状况指的是主机和备机它们两之间就只要复制数据,可是有些状况咱们人仍是得考虑的:主机挂了如何让备机上。post
有三种选择htm
1.人工切换。人工切换时效性不高,出了事情首先你得开机,登陆远程一阵啪啪得好几分钟或者万一你在LOL,黑铁晋级青铜最后一把努力了几个月即将晋升倔强青铜的一刻!是吧。还要万一在深夜或者说....是吧。中间件
2.引入中间件。例如ZooKeeper、keepalived。就跟好多房东把房子委托给中介同样,这中间件就是个中介。全权由中介来打理主机和备机,它会根据机子状态来判别这时候是否是该备机上了。(建议)blog
3.主机备机之间状态传输(咱不找中介了,本身来打理),啥意思呢?就是除数据同步,主备之间还要有个状态传输过程,来让备机只要如今主机过得好很差,能够是主机主动推送它的状态给备机,或者是备机去索要状态。当状态拿不到或者不对的时候就开始主备切换。可是可能传输出现了波动啥的,致使备机误判了,而后备机升级为主机,这样就两主机了(下面会说主主的问题)。token
主:主机,从:从机资源
从机和备机的区别在于它得除了同步数据以外还得干活,对外提供读的操做,你能够理解为它是仆从。可是仆从和备机同样也有翻身作主人的一天,因此它也在默默的等待着主机挂了,取而代之。get
优势:充分利用了资源,嘿嘿不想备机这么爽了,还得出来干活,对外提供读操做。并且在主机挂了的时候,若是没任命新机主以前,读操做仍是能用的。
缺点:
1.客户端须要多个判断,也就是不一样操做须要发放给不一样服务器,我上图主机提供读写,有时候读写分离了,主机就提供写。
2.主从延迟,读操做分配给从库,就会存在数据同步的延迟问题,好比某我的注册了帐号以后,登陆走的是从机,这时候数据还未从主机同步过来,那可不让人很难受了。有关主从延迟问题的一些解决办法
3.和主备同样的切换问题。(参考主备)
主主就是两台都是主机。同时对外提供读写操做。客户端任意访问提供的一台。
优势:主主的好处就是能够把写操做也分担一下,可是问题偏偏就出在写操做上,致使主主的架构有很大的局限性。
缺点:例如主机A有个注册的插入操做,生成的id是50,同一时刻主机B也有个插入操做生成的id也是50。而后它们之间的数据同步了,你说是谁覆盖谁呢?谁覆盖谁都不对!
所以主主只适用于能够双向复制,覆盖的数据(例如用户登陆生成的token)。可是咱们平日里绝大部分的数据都不容许。
这种双机存储架构通常而言应用于一些业务量不大的场景。主要仍是为了存储的可用性。
【参考博主讲解简单明了,一目了然】
文章参考:https://www.cnblogs.com/tankblog/p/11190598.html