Assuming live chat clients (Skype, Windows Live Messenger) use sockets to stay connected to their relative services, what are some strategies that the developers implement to scale out their servers? Even a system like Xbox LIVE where users are able to chat and send out game invites to their online friends.
The main problem is that each of these connections have to share state; some of this state needs to be queried by other clients (who could be connected to a different server behind a load balancer on the other side of the world). The most obvious one is online status.
Do these services use giant RAM based caches (maybe something like memcached) or NoSQL databases (like Cassandra) which all servers around the world connect to and update and retrieve the required state information.
I was wondering if this sort of solution would be fast (or reasonable) enough for real time services like the ones I described above.
My main problem is with memory. Distributing load is fairly straight forward (i hope) with a combination of load balancers and round-robin DNS balancing.
Here is one way. Though not necessarily concerned with memory based caching
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