InstanceInfo的lastDirtyTimestamp与lastUpdatedTimestamp属性差异及实际用途问询
Eureka InstanceInfo的lastDirtyTimestamp与lastUpdatedTimestamp实际作用
结论
你的判断基本正确,文档描述和实际源码逻辑存在明显偏差,两个字段的实际职责和官方文档表述不符。
具体细节
lastDirtyTimestamp:
- 仅服务于实例数据复制场景:当实例向Eureka Server发起注册/更新请求,或是Eureka Server之间同步实例数据时,这个字段用于标记实例自身最后一次修改信息的时间,核心作用是解决数据同步时的版本冲突(判断哪份数据更具时效性)。
- 实例本地的常规修改(比如修改元数据、变更自身状态)不会主动更新该字段,只有在准备将变更同步至Server时才会设置。
lastUpdatedTimestamp:
- 确实会在所有实例信息变更场景下被更新:无论是状态变更(如UP/DOWN切换)、元数据修改、租约续约,只要InstanceInfo的内容发生变动,这个字段都会被设置为当前时间。
- 这和文档中“仅因状态变更修改”的描述完全不符,它是实例本地记录自身信息最后变更时间的核心字段。
补充说明
这种文档与代码的偏差属于Eureka的历史遗留问题,早期版本的逻辑可能与文档一致,但后续迭代中字段职责发生了调整,官方文档未同步更新。
内容的提问来源于stack exchange,提问作者Laird Nelson
相关产品推荐
相关产品推荐

