设计致敬 iPhone 4,电池大缩水,售价或是最大惊喜
|
仔细看了看,原来,自从上次的攻击事件(详情:完了!CPU一味求快出事儿了!)发生以来,领导一直忧心忡忡,虽然当时依靠操作系统提供的办法暂解了燃眉之急,不过治标不治本,我们自身的缺陷一直存在,保不准哪天还要翻车。 这个代号为SGX的神秘项目全称Software Guard Extensions,志在全面改革,提升咱们CPU的安全能力。 偷听会议 我瞬间不高兴了,这么重要的项目,居然没找我参加? 随即,我来到了领导的办公室,果然他们几个在开着秘密会议,而我就凑在一旁偷听。 “诸位,你们都是咱们厂里的核心骨干,关于这次安全能力提升的事情,大家回去之后有没有什么想法,请畅所欲言!”,我听到领导在讲话。 核心骨干?难道我阿Q不是核心骨干吗?真是气抖冷!
沉闷了一小会儿,隔壁二号车间虎子才说到:“咱们现在不是有安全访问级别吗,从Ring0到Ring3,已经可以很好到隔绝应用程序的攻击了啊” CLUSTER NODE、CLUSTER SLOT两个命令可以连接到任意节点上执行,这两个命令都是读取的这个节点的本地信息,根据gossip的特性,存在这两个命令展示的不是最新的configuration的可能性。 16、Conflict 虽然前面讲的failover过程通过大多数master投票的方式保证只有一个slave选中,并且产生唯一的configEpoch。但是Resharding的过程却没有经过大多数的master的投票。 执行slot迁移时,仅仅是在集群中所有configEpoch中最大的那个configEpoch的基础上,再加一而得到的。并且由于Resharding一般包括多个slot的迁移,Redis cluster目前的做法是,在一次resharding过程中,所有的slot迁移使用的configEpoch都是第一个slot迁移时产生的那个configEpoch。 而failover和resharding都会修改hash slot map,如果在resharding的过程中发生了failover,这就有可能导致对hash slot map的修改产生冲突。另外,手动failover也是不经过master投票的,也就是执行CLUSTER FAILOVER命令(带TAKEOVER参数)。 产生冲突就是指针对同一个slot,slot被修改成映射到不同的节点上,并且这些修改具有相同的configEpoch。 为了解决这个问题,Redis cluster需要存在一个冲突解决的机制。如果一个master发现相同的configEpoch,则比较一下两个节点的id,id小的节点,把自己currentEpoch加一,作为自己的configEpoch。 三、Write Safety由于有冲突的存在,可能导致不同的节点上的hash slot map不一致,取决于连接的节点不同,一部分client可能会把某个slot的key写入到一个节点中,而另外一部分client会把同样slot的key写入到另外一个节点中。当冲突被解决后,其中一个节点上接受的写入会丢失。
另外,由于master和slave之间的数据复制是异步的,在failover时如果slave还没有收到最新的数据,就发生了failover,那么这部分写入就会丢失。Redis cluster在这方面做了一个优化,当一个slave发现master发生了宕机,它不会立即开始选举的过程,它会等待一个时间,这个时间计算公式如下: (编辑:济宁站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
