出自拉勾教育
老师你好,上一讲提到负载均衡是在nacos 是实现的,那么服务A获得服务B的一个节点信息后去请求服务B的时候,服务B挂了怎么办?还有既然是在请求其他服务的时候要去nacos获取其他服务节点,那么服务注册的时候还去通知所有的实例,意义在哪里
讲师回复: 这是主动机制与被动机制的区别。 第一种情况服务节点B挂了,当次通信失败。如果配置了重试机制回自动采用负载均衡策略向其他有效节点重发请求。过一点时间B会在Nacos被摘除。 第二种是Nacos之所以主动向其他实例推送就是为了尽可能保证实施节点状态的实时同步,尽量减少无效通信的产生。
如果过了5秒没有收到心跳请求,处理机制是什么呢?
讲师回复: Nacos中的ClientBeatCheckTask任务会定期是遍历所有的实例对象,判断最后一次心跳发送的时间距离当前时间是否超过了设定的值,如果是,则将该实例的health属性改为false。20秒后,这些health=false的节点就会从“可用实例列
请问 nacos如何通知的服务调用方 目标服务不可用了?
讲师回复: 目标服务不可用,调用方在Nacos查询后,Nacos返回的目标服务实例列表为空,调用方就抛出“无可用服务实例”异常。
如果搭建两个节点,会怎么样
讲师回复: 大多数选举算法要求奇数个节点,2个节点的数据一致性可能无法保障。
老师好,遇到一个问题,搭建 nacos 集群,SampleService 服务配置”>spring.cloud.nacos.discovery.server-addr=172.16.26.3:8848, 172.16.26.4:8848, 172.16.26.5:8848,是配置了三个节点,服务注册后,但服务列表中只有172.16.26.5 显示了 SampleService,另外两个节点服务列表中没有服务,这种可能是啥问题呢?
讲师回复: 非常有可能是网络通信问题,请确保服务与Nacos通信通常,并保证Nacos节点间网络也是通常的
131投给自己,132启动会投给自己么,如果投个自己,131、132都1票怎么选举?
讲师回复: 131投票给自己,是因为131上线时只有它自己一个节点,此时131就是Candidate,会不断向其他节点尝试发送投票请求。 132上线后,发现131是Candidate,会优先给131投票而不是投给自己
老师 这集群只能在不同的服务器上嘛 ?不可以在同一台服务器上换端口做集群嘛
讲师回复: 如果在一台服务器上,这台服务器掉电后那岂不都完蛋啦 :) 设置多台服务器是我们重要的高可用保障
当 Leader 节点宕机或停止服务,会在剩余 2 个 Nacos 节点中产生新的 Leader。如下所示133获得两票成为 Leader,132 成为 Follower,131已经下线但角色暂时仍为 Leader。133为啥获得两票成为 Leader,而不是132呢
讲师回复: 同学,https://www.cnblogs.com/xybaby/p/10124083.html 这是RAFT的算法实现细节,看完这篇文章应该可以解答对你选举算法的疑惑。
3台集群机器用一个mysql数据源?
讲师回复: 是的,3个节点公用一个数据源,这个数据源一定要做高可用,如MGR/MHA.
老师,选举算法会出现脑裂问题么?如果出现,如何避免次问题呢?
讲师回复: 可以的,在RAFT算法中增加Leader lease机制即可。
请问老师,本讲中基于raft的nacos集群配置应该属于CP吧?如果要配置成基于AP,是像Eureka一样相互注册,去中心化吗?
讲师回复: Nacos做的是AP,中间存在软状态
老师,我用虚拟机搭建的nacos集群,mysql装在windows机器上,网络在同一网段内,虚拟机使用桥接,为啥连不上数据库呢?求助。。。
讲师回复: 做NAT或者直接Bridge都是可以的。是不是防火墙没开放端口呢?
老师, 两个问题; 1: 这里的数据库会保存注册的配置信息吗; 如果保存, 为啥要进行数据同步呢? 2: 如果ABCDE五个节点, A是leader, 注册一条数据, BC已经同步,此时返回注册成功; 此时A和B挂了, D或者E能否成为新leader? 如果D或E成为leader, 如何保证数据一致性? 再假如只有B同步数据成功, 这时少于一半节点同步成功, 此时A挂了, 返回数据注册失败; 然后B成为了leader,那么如何保存B中的数据不会成为脏数据?
讲师回复: 1. 数据库不保存微服务的注册信息,如果Nacos重启这些信息回丢失。 2. 选主和一致性是两个问题,AB挂了,D或E有可能成为新Leader,不要忘记,在客户端也持有了ABCDE这5个注册中心的IP。客户端发现AB挂了,会把心跳包发到C,C不是主于是将心跳包转到D,D再向其他同步状态。但如果可用节点少于一半,就会无法选主导致节点间无法同步数据。
老师,nacos可以支持那些数据库呢,还是说只支持mysql
讲师回复: 这个得看官方的支持了,基本都是MySQL和自带的内嵌数据库
不少于1+N/2的意思是如果7个节点,不能少于4个节点吗?那DOWN了3个节点就不能集群间数据同步了吗?
讲师回复: 从选举机制算法角度来说是的,少于1+N/2节点的数据一致性将无法保障。
老师,你好!nocas可以动态增加节点吗,文章介绍节点ip是写死在配置文件里的,这样的话,增加节点不是要重启了?
讲师回复: 嗯,目前我还没有看到Nacos存在动态集群扩容的能力,都要配置文件中写死。
你好,我想问下,你服务里写的是一个 它 down 掉了,是不是就注册不上了,所以要通过域名形式?
讲师回复: Down点后如果节点恢复,重发心跳包就会恢复UP状态了。 使用域名完全是为了扩展性的需要,利用域名可以通过DNS屏蔽掉后端IP的具体细节 加入集群IP发生变化,只需要重新做DNS解析即可,客户端无需做任何调整。