Nacos Server Verison :2.1.2 我使用python脚本操作Nacos单台节点IP。 在注册后立刻查询,无实例返回(不管是注册临时节点还是持久节点)。 但是注册后线程sleep1秒,就可以查询到,请问有办法解决么? 我们有需求场景对读写一致性要求很高, 希望客户端注册到Nacos一台节点上后,立刻查询该节点能查询到注册的实例
import time import requests
params = {'ip': '192.168.20.110', 'port': '8002','serviceName':'Python'} url = "http://10.254.107.230:8848/nacos/v1/ns/instance" res = requests.post(url, params=params) print(res.text)
time.sleep(1)
params = {'ip': '192.168.20.110', 'port': '8002','serviceName':'Python'} url = "http://10.254.107.230:8848/nacos/v1/ns/instance/list" res = requests.get(url, params=params) print(res.text)
params = {'ip': '192.168.20.110', 'port': '8002','serviceName':'Python'} url = "http://10.254.107.230:8848/nacos/v1/ns/instance" res = requests.delete(url, params=params) print(res.text)
原提问者GitHub用户guozongkang
看了一下 server,在注册上的处理是用事件传播,异步完成的。也就是说,注册的时候,只保留一下元数据然后就直接返回给客户端了,注册是异步做的。
1、异步化增加吞吐,注册完立刻去查询有可能获取不到最新数据。 2、集群之间同步也是异步的,AP协议只保证最终一致。
如果有这种强烈一致的诉求, 可以自行修改一下源代码,将读取服务的接口由读取缓存改为主动刷新数据后再读取数据。这样导致的问题是每次查询都会重新生成一遍数据,即使数据未变化,导致的代价就是rt略微增加,cpu损耗增加。如果可以接受的话可以如此修改后自行使用。
原回答者GitHub用户Daydreamer-ia
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。