I have some large objects that are expensive to transfer from my ZEO server. It is better to send all the requests relating to that object to Zopes that already have the object cached, even if that leads to an uneven load distribution.
"Object affinity" or somesuch. Nifty.
Zope as an ICP peer has this built-in because it takes the first nonerror response it gets from any Squid peer.
Thats the goal, but my ICP patches arent quite there yet. It is possible for a half-dead Zope to still respond to ICP.
What makes this good on top of polling is that you reduce the chance of anybody seeing a proxy error, even for the short amount of time that it takes to detect the failure case and take the client out of rotation. This makes maintenance pretty easy because if the ICP system works you can just take machines out and add them "willy nilly" without worrying about changing balancer rules. I think this is pretty important... like the patch! ;-) - C