Hi All,

Now we meet a reliable problem. When service center restarted, It will clear 
all service instances information. 
And when SDK(java-chassis) queries instance list periodically, it will get an 
empty list and invocation will fail.


In order to resolve this problem, two solutions is suggested:
1. service center provide instances persistence mechanism. When service center 
restarted, it will restore instance information, 
and re-calculate the timeout information(e.g. reset instance last active time 
to startup time). If he gets the heartbeat from instance, the instance will not 
be removed, and after timeout,
it can removed instances, like the normal way. 
 2. SDK need to take special care with instances remove. SDK don't actually 
remove instances when he gets empty list from service center and it will ping 
the instances. If ping return 
OK, the instance will not removed.


Known consequencies:
Solution 2:
  a. Conflicts with service center white/black rule. 
  b. In docker or some instances changed frequently scenario, the ip/port is 
reused by many services when service start/stop, and service health URL may 
also be the same. So it will give a lot of 400 like error when instances is not 
updated. 


Any suggestions?

Reply via email to