+
 新版
2020-11-15 01:47
即便是病毒 也要给黑客汇报,相互协作的病毒更强大
2020-11-14 18:21
总觉得这种机制有点怪怪的,确定可以形成集群共识???集群共识是有共识协议的,而必须形成客观下线(就是必须半数共识确定下线),才能启动故障转移,将流量从故障节点转移。而这种机制基本上必须要靠集群通讯来完成集群间消息传递和维护,而集群通讯的其中一个指令,就是心跳指令
2020-11-14 19:40
这个是目前的 官方共识吧. 但不是绝对真理. 虽然我目前资历尚浅,说什么打破常规之类的话可能有点贻笑大方。

但我还是想说,有时候常规是需要打破的。

首先,我这一套设计,是没有注册中心的,下掉服务 仅仅是从自己的本地接口表中下掉,跟别人无关。举个例子: 比如A连续调用B都调不通,但是C却一直都能正常调用B, 那么A达到了一定票数,就会把B下掉,但是这个时候C并没有把B下掉,所以A下掉B这个的举动并不影响别人。

我这里自己造了个名词,叫自私机制,既然每个服务都是自私的,只顾自己,那么他下掉什么接口,又何必跟别人达成共识呢? 不管别人怎么样,反正A就是连续的调不通B,他为什么要为了所谓的共识,而一次次的被B拒绝呢? 干脆下掉比较好吧。

而且下掉的条件也很苛刻,就是我文章中提到的三个条件,必须是连接不上才会下掉,其他的像什么响应过慢啊,读取超时之类的,都不构成下线的条件。
2020-11-14 19:46
集群的共识机制是保证集群分布式节点数据和状态同步的关键,是在集群理论的摸索中逐渐完善的,任何分布式系统中,对集群状态的的一致性保证,都需要共识机制来协调,如果集群的状态不一样,有时候会给集群服务产生严重影响,这就是集群脑裂,虽然你只是一个订阅-发布模型,但是,我总觉得如果不能保证状态一致,你这个分布式集群总是会发生其他问题(即便是P2P集群,也只是对客户而已,对集群内部,还是有主从划分的)。如果你想要考虑分布式系统,可能你必须考虑使用CAP理论来进行分析
2020-11-14 19:50
好的,谢谢您的指导,我后面会继续完善的。
2020-11-14 20:01
也许你需要的是一种高可用的服务发现协议,通常来说都服务发现是注册中心(当然,在分布式集群系统中,注册中心通常也是集群部署),你现在想要去掉注册中心,我认为你本地缓存的这个功能很好,可否考虑使用共识机制,来根据投票机制来判断节点是否构成客观下线,如果所有节点都认为服务下线,那么,就可以放心的下线了。并且可以启动故障转移,转移流量(比如将那个服务所应该接受的流量转入备用节点等等),但即便是这套方案,依然会涉及到集群通讯广播,其中之一即心跳协议,心跳数据的话,你可以合理设置一下,比如说,任何一个集群间通讯都可以算心跳包(这种情况就不需要单独发送心跳,这就解决了占用问题,因为这种情况,就等于把其他通讯包当成了心跳)只有在空闲时,在合理时间内发送一次心跳就行(频率不用太高),另外就是,如果你心跳包设计合理的话,那么点流量对系统应该没有太大影响的
2020-11-14 19:48
去掉注册中心的话,你就可能需要一套集群共识算法,来决定系统中现在正在运行什么服务。这叫服务发现。总感觉不是你这样做的
回复 @
{{emojiItem.symbol}}
返回顶部
顶部