In order to make load balancing decisions, the client may need a reasonably current profile of the individual servers providing the service. Depending on the application, updating the director of changes in service state can be achieved through either lazy or eager techniques, presenting both performance and semantic tradeoffs for maintaining consistency.
Examples of eager update techniques include client polling and server callbacks. Using client polling of servers to maintain load information has the disadvantage of severely loading server machines. Server callback techniques can be more scalable than client polling, however they require server modifications and increase implementation complexity. Neither client polling nor server callbacks is likely to scale to the level of thousands of clients necessary for some Web services. Eager update methods are appropriate when accurate information is required and the scale of the service is small enough to support eager protocols.
Lazy update techniques [Ladin et al. 1992] are likely to be more appropriate in the context of the Web. Lazy updates reduce network traffic by sending information only occasionally, after a number of updates have been collected. One particularly attractive mode of lazy updates is piggy-backing update information with server replies to client requests. For example, a server can inform Smart Client directors applets of the addition of new server machines comprising the service when replying to a director request.