我们假设有一个订单系统,一个库存系统,订单系统为消费者,库存系统为生产者,当库存系统向nacos中增加新的季芹服务信息时采用了一种copyonwrite的机制,写入时复制,即将nacos信息复制一个副本,将新的服务集群信息更新到副本中,当更新完之后将副本替换为原始的nacos集群信息。
为什么会采用这种机制呢?为了防止脏读!因为如果直接更新原始数据,这时候服务在请求数据可能会读到没有更新完的数据导致脏读,比如ip更新完了,端口没来得及更新呢,一些附加信息也没有更新。所有采用这种读写分离的机制。
可能有同学会有疑问,如果副本替换原始数据的过程中,微服务向nacos请求旧数据呢,假设旧数据中的集群服务有的地址已经g了 怎么办,其实在微服务中这种情况是可以容忍的,微服务有调用重试的机制,大不了就重试嘛。
nacos更新注册中心信息底层原理
最新推荐文章于 2024-07-23 22:59:03 发布