Планируемая посещаемость ресурса от ~2000 до ~50000.
1/3 посещаемости это общение в чатах как в вк.
Постоянная сверка с базой на наличии новых сообщение и уведомлений. (равно 1/2 поещаемости)
На каком языке проще всего это сделать?
Где хранить данные?
Основа на php, mysql.
Делал такое на node js + socket.io + mysql
Изначально начинал в связке node js + jabber, но не помню по какой причине от jabber отказались в сторону mysql
советую писать на node.js а база использовать mongodb, можешь но сокетах можешь без них там особая нагрузка не будет а моешь и использывать готовы модуль easyrtc для node там и есть месидж чат и видео чат и друге удобности и документация боле мене нормальный
Фронт - на NodeJS сейчас модно писать для такого. Бэкэнд - правильно советуют на эрланге. А лучше не выпендриваться и внутри использовать ejabberd, который из коробки кластеризуется.
Поддерживаю предыдущих комментаторов и добавлю: на клиенте советую использовать любой доступный фреймворк (Angular, Bootstrap, etc.)
Потому что без него делать что-то сложное на клиенте будет запарно.