Vote server



next up previous contents
Next: Accumulating votes into Up: Design Architecture Previous: Specification of the

Vote server

The vote server is the part of the system responsible for accumulating, marshaling and redistributing votes from one site to another. Votes sent to the server by an interface module are accumulated into the server's vote database and marshaled into a packet with other votes to be sent on to neighboring vote servers. Figure gif shows a block diagram of the vote server's construction.

  
Figure: Block diagram for vote server. The major components are the daemon (voted) which accepts and handles connections from clients and the vote server (vs) which updates and maintains the vote database.

A vote server consists of two main parts. A daemon process called the voted and a server process called vs. The voted accepts connections from interface modules and exchanges information with them. The protocol used in this exchange is documented in Appendix A. The server process vs is responsible for maintaining the vote database - adding new votes to it and removing old votes from it - as well as exchanging vote information with other vote servers. The design of the vote server was heavily influenced by the design of the INN news server by Rich Salz [25] and the reference nntpd implementation by Phil Lapsley and Stan Barber[15]. The voted program reuses substantial portions of code from nntpd.

The three files associated with the vote server are the grouplist, localvotes, and nonlocalvotes files. The grouplist file is maintained by the vs server process and contains a list of all the newsgroups which have votes cast for articles in them. It is used by the voted to answer AVAIL requests. The localvotes file is created and added to by the voted. It contains a list of all the votes cast by users at the local site that have not yet been processed by the vs. The vs reads the localvotes file and incorporates the votes into the local vote database as well as marshaling the votes together into a packet for transmission to other sites. The nonlocalvotes file provides a means of entering into the system votes that arrive by mail or ftp from other sites.

The idea of the vote server is to have one running at every site that participates in collaborative filtering. The program would ideally run on the same machine as the news server itself, thereby reducing the number of failure points in the system. This is not a firm requirement however, and vote servers can be added or removed as the load demands. As will be discussed later, vote servers can keep track of which users have already voted on a given article to prevent these users from voting more than once on the same article.





next up previous contents
Next: Accumulating votes into Up: Design Architecture Previous: Specification of the



David A. Maltz (dmaltz@cs.cmu.edu)