3
avneesh
5y

Hey i want to make a chat application for production workload with more than 100000 simultaneous connection and more than 1000000 daily active user which will scale 100 times in coming 1 to 2 years for Android. I have oauth based user authentication. This chat should be able to authenticate and verify authtoken generated using the oauth. What should i use? Xmpp, mqtt or something else. Can anyone who has worked on chat application help me.

Comments
  • 2
    For the chat part, you can make a chat system based entirely on notifications. Just have a big ass queue that will send push notifications to APN/GCM to let users know there is an incoming message then perform a request of all messages.
  • 0
    As you’re looking for something to horizontally scale, you can load balance multiple queues to work on notifications being sent to APN/GCM. More queues more work that can be done.
  • 0
    @growling i am little worried about fcm and gcm as the delivery of fcm messages are best effort delivery. Message can get lost and the order of delivery is not preserved. I want more robust solution
  • 0
    Kafka for the queue?
  • 2
    My answer would be Erlang (or Elixir), it excels at stuff like this but needs expertise (then again if you're building a large scale chat app you'll be using similar technologies anyway, most distributed and concurrent application architectures follow standard patterns). Comes with great concurrency, great scaling, an in memory database (ETS) and a regular database (Mnesia), also the Erlang community is very knowledgeable about hard problems you have when scaling and how to work around then. Also helpful.

    Check out ejabberd for a prebuilt thing, it's XMPP
  • 1
    @RememberMe i was also thinking about using ejabbered. Thanks for clearing my doubt.
Add Comment