I've been evaluating technology stack for developing a social network based application. Below are the stack I think could well suitable for this application type of application:
GUI -- ASP.NET MVC, Flash (Flex)
Business Services -- Thrift based services One of the advantage of using Thrift is to solve scaling problems that will come in future when the user base increases rapidly. All the business logic can be exposed as a services using REST,JSON etc., This also allows us to go with C++ or Erlang based services when situation demands.
Database -- mySQL, CasSandara mySQL can be used for storing the data which needs to be persisted. Cassandara will be used for storing global identifiers to the persisted data. Since Cassandara is also very good at scaling by introducing more nodes this will leverage Thrift based services as well. And also there is native support between Cassandara and Thrift
Cache Server -- Memcached
Any requests from Business Services will only talk to Memcached if any non-dirty data is required, otherwise there will be some background jobs that will invalidate the cache from database.
The question is:
One of the main objective behind this stack is to easily scale up with more nodes and also this helps us to use Linux boxes, it will reduce our cost significantly
Thoughts please ..
You don't give details about your data model, but if you're trying to do something similar to facebook, twitter, digg, or reddit, Cassandra should be a good fit since as you knw those companies are all using Cassandra.
One of the advantages of Cassandra is you shouldn't need a separate caching layer: Cassandra's built-in key and row caches, and the ability to just add machines to scale, make memcached unnecessary.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With