注意到升级到2.0.0版本之后很多用户都提到 code:503,msg:server is DOWN now, please try again later! 这一问题,按照nacos文档给的解决方案
我理解这只是一个临时的解决方案对吧? jraft 所使用的 data/protocol/raft/ 目录下面的各snapshot 里面的存储的是旧的host信息,扩缩容导致新的集群信息跟这里的旧的host信息冲突就很有可能导致选主失败,这个我使用2.0.0-bugfix版本可以稳定复现。 我觉得扩缩容或者机器替换、ip变动应该是个很常见的场景吧?所以请问:
1、这个地方是否有后续的优化计划?
2、选主失败的情况下,是否应该让读操作可用,而不是任何读请求都被拦截然后返回503错误?举个例子,我们仅使用注册中心功能,且仅注册临时服务,只需要distro协议进行同步,这种情况下可不可以即使选主失败,依然让nacos节点工作,只是输出ERROR信息?这样跟出现选主失败然后节点直接503的情况比起来,在生产环境是否影响面小一点?
原提问者GitHub用户MajorHe1
1、 优化计划一定是有的,逐渐将使用jraft变得更正确,这个问题不是nacos的,而是所有raft协议都存在的。除非更换协议,否则解决不掉。
2、 关于可读性问题,由于最初设计时场景是考虑到数据未同步完成的情况不应该可读,会导致客户端读取到错误数据。在启动完成后如果出现问题的话还是可读的。但是加入jraft后会出现经常性的启动选不了主而导致的状态错误。后续会通过优化解决掉。
原回答者GitHub用户KomachiSion
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。