This project aims to implement a similar product like twitter/wechat.
This project is developed on Django
under Vagrant
.
Utilized databases:
Uploaded the user avatar to Amazon S3
.
Developed RESTful APIs for accounts, tweets, comments, friendships, likes, notifications, and newsfeeds based on Django-Rest-Framework
.
Get data from the MessageQueue based on the number of requests that each machine can handle. Even if there are high volume of requests per second, it just puts the requests in the MQ, and the message of the message queue is controlled by the system itself, so that the entire system will not be collapsed.
- Optimized tweet and newsfeed pagination by implementing a infinite scroll pagination instead of
page-number-pagination
. - Utilized
Redis
: cache lists of tweets and newsfeeds, and utilized Redis as Message Queue Broker to deliver asynchronized feeds fanout tasks by usingCelery
. - Utilized
Memcache
: cache friendship followings and user. - Utilized
ratelimiter
as a decorator to add limitations on user actions for RESTful APIs.
- Deploy in a remote server, e.g. AWS
- Load balance.