public
Description: Web application for music sharing. A personal scalability experiment.
Homepage:
Clone URL: git://github.com/andreisavu/music-share.git
name age message
file .gitignore Sat Apr 25 03:33:57 -0700 2009 initial import [andreisavu]
file README Mon May 18 12:16:49 -0700 2009 details about the future arhitecture [andreisavu]
file db.py Sat May 02 16:15:54 -0700 2009 multidatabase ready: master-slave setup [andreisavu]
directory db/ Sat Apr 25 03:33:57 -0700 2009 initial import [andreisavu]
directory doc/ Sun Apr 26 03:28:57 -0700 2009 added simple readme [andreisavu]
file index.py Sun May 03 01:08:15 -0700 2009 embedded player code [andreisavu]
directory lib/ Mon May 18 12:26:21 -0700 2009 get disk free space [andreisavu]
file search.py Mon May 18 12:25:55 -0700 2009 placeholder for related objects [andreisavu]
file settings.py Sat May 02 16:15:54 -0700 2009 multidatabase ready: master-slave setup [andreisavu]
directory static/ Sun Apr 26 14:32:10 -0700 2009 added jquery ui tabs [andreisavu]
file storage.py Sat May 02 15:36:01 -0700 2009 improved input cleanup [andreisavu]
directory templates/ Sun May 03 01:08:15 -0700 2009 embedded player code [andreisavu]
directory tools/ Sun May 03 02:51:07 -0700 2009 some refactoring & cleanup [andreisavu]
README
Simple web.py application for music sharing

Requirements:

webpy & python mysql support
python-magic : http://gavinjnet.blogspot.com/2007/05/python-file-magic.html
python-simplejson

Arhitecture:

Master/Slave MySQL database:
 - write to master & read from slaves
Cluster of identical nodes. Components:
 - nginx + wsgi for app
 - log analyser 
Memcache for session storage & for avoiding database hits
Apache Solr for search and clustering
ActiveMQ for async tasks

Details:

Upload steps:
- check file format & extract info
- check local storage space & save if available
- if space not available contact another computer from cluster
- send message notification of the new file

Log analyser:
- watch nginx log and node load. if high load detected 
send notification message in order to improve capabilities