Webcam chat br
One of the things I like most about working at Facebook is the ability to launch products that are (almost) immediately used by millions of people.Unlike a three-guys-in-a-garage startup, we don't have the luxury of scaling out infrastructure to keep pace with user growth; when your feature's userbase will go from 0 to 70 million practically overnight, scalability has to be baked in from the start.For Facebook Chat, we rolled our own subsystem for logging chat messages (in C ) as well as an epoll-driven web server (in Erlang) that holds online users' conversations in-memory and serves the long-polled HTTP requests.Both subsystems are clustered and partitioned for reliability and efficient failover. In short, because the problem domain fits Erlang like a glove.The naive implementation of sending a notification to all friends whenever a user comes online or goes offline has a worst case cost of O(average friendlist size * peak users * churn rate) messages/second, where churn rate is the frequency with which users come online and go offline, in events/second.
It is rather keeping each online user aware of the online-idle-offline states of their friends, so that conversations can begin.Surfacing connected users' idleness greatly enhances the chat user experience but further compounds the problem of keeping presence information up-to-date.Each Facebook Chat user now needs to be notified whenever one of his/her friends (a) takes an action such as sending a chat message or loads a Facebook page (if tracking idleness via a last-active timestamp) or (b) transitions between idleness states (if representing idleness as a state machine with states like "idle-for-1-minute", "idle-for-2-minutes", "idle-for-5-minutes", "idle-for-10-minutes", etc.).Com o Go To Meeting, reduzimos drasticamente nossas viagens e passamos a atender uma carteira maior de clientes.Conseguimos trabalhar com clientes de qualquer lugar do mundo como se eles estivessem aqui pertinho.