The caching of data objects was done using BerkeleyDB. We wrote a simple cache interface on top of it to keep track of an expiration time for each entry and only return unexpired items. These days, you could just use Cache::Cache for this. That module wasn't around when we started.
The part in C was a daemon on each app server to broadcast shared data to all the other app servers. The only data we shared was the read-only product data which should be the same on any server. | [reply] |