James M Snell wrote:
If I understand Bob's solution correctly, it goes something like:
1) wake up
2) scratch whatever you need to scratch
3) turn on computer, launch feed reader
4) feed reader does some RFC3229+feed magic to catch up on what happened
during the night
5) feed reader opens a XMPP connection to receive the active stream of new
entries
This is precisely what I was describing and it is what we implement in
the PubSub Sidebar clients. This hybrid combination gives you the best of
both worlds. The result is the lowest possible bandwidth consumption as well
as the lowest latency in delivering content to clients.
The Push+Pull approach is particularly well suited to the kind of high
volume application that James Snell describes -- particularly if the server
has a large number of readers. While I've previously pointed out the benefit
to the network (efficient utilization of bandwidth) and to clients (low
latency), it is important to point out that the Push model offers real
benefits for the server as well. In extremely high volume applications, it
is important that the server be able to control and smooth load. Server
based load control is most easily accomplished with a Push system. In a Pull
based system, load is almost totally dependent on client-driven scheduling
and thus load tends to be very bursty. Bursty load is the worst possible
thing to have in a network-based system. In Push based systems, the server
is able to eliminate load bursts by spreading delivery of entries over
time -- without worrying about the need to service bursty client requests
within the window of their request time-out limits.
Even though there are all sorts of advantages to using Push-based and
hybrid Push+Pull systems, the reality is that only a tiny percentage of all
the millions of servers that support Atom feeds will have sufficient traffic
or readership to benefit from these methods. As Joe Gregario suggests in his
recent note: "99.99% of all syndication is done via HTTP" and this will
probably remain the case in terms of a raw census of servers. However, it is
also clear we are seeing significant growth in the use of feed aggregators
like PubSub, FeedBurner and the other blog search and monitoring services.
Also, we are seeing an increase in the use of feed-readers on mobile devices
which require that feeds be consolidated and fed through proxies in order to
reduce the amount of polling and other processing done by those mobile
devices. As the use of these services increases, it will make sense for
client developers to implement client-based support for Push+Pull and thus
provide to their users the benefits of reduced bandwidth, reduced session
management, and reduced latency. Broad client-based support makes sense even
if similarly broad server-based support does not.
bob wyman