Распределенный чат/систему оповещений, на чем писать?
Здравствуйте.
Нужна система оповещений для сайта, мне как android разработчику первое что приходит в голову gcm, но он только для google chrom, вторая мысль long polling но боюсь при серьезных нагрузках сервер ляжет.
По сути long polling меня устраивает, какую технологию посоветуете чтобы при необходимости просто добавить сервер ?
Ожидается большое число подключений, но не слишком активных - нормальное поведение пару оповещений в минуту а потом час простоя
Сообщения должны быть доставлены "сейчас, или никогда"
Извините за несколько сумбурное описание, заранее спасибо.
sim3x: все через вк, по сути связка iframe приложения и мобильный клиент, сообщение с мобильного на iframe приложение и обратно через сервер, по сути сообщения самому себе. Как вы смотрите на связку (tornado/asyncio)+ webrtc +redis ключевой момент удобство расширения, чтобы при увеличении нагрузки просто добавить еще один сервер
gadfi: если оботисть просто (или сложно на lua) nginx нельзя, то я смотрю на го
На питоне нужно уметь писать асинхронно
Но если у тебя есть желание изучить асинхронный питон, то вперед
Сергей: я ограничен в бюджете, поэтому скорее всего noede.js главное стартануть а там уже если пойдет и будет необходимость переписать хоть на go, хоть на erlang
Oleg Shevelev: > предложите кейс в котором Erlang выгоднее чем Golang
я не работал с Golang, думаю это все гуглится по запросу erlang vs golang. Дерзайте.
Oleg Shevelev:
1. Распределенность из коробки. Единая гетерогенная среда для мультисерверного приложения.
2. Наличие внутренней консоли, которая позволяет влезть внутрь системы и исследовать её в горячем состоянии
3. Горячее обновление кода. Без остановки сервиса в можете обновить программный код.
Oleg Shevelev: я не фанат js, и возможно в будущем я воспользуюсь вашим советом, но сейчас куда важнее просто запустится в разумные сроки, пускай ценой десяти серверов там где справился бы один(масштабирование это то что особо вкусно звучит в centrifugo ) но отпугивает отсутствие стабильных библиотек для мобильных
gadfi: что вы имеете в виду под отсутствием стабильных библиотек?:) Там WebSocket классический... и только для особых случаев всё остальное с помощью полифил-библиотеки. Иными словами - запустить centrifugo и начать отправлять через него сообщения дело ну получаса от силы.
Oleg Shevelev: я понимаю что там обычный вебсокет, но если реализовывать всю работу с сокетами руками это лишние затраты, лишние риски на новую технологию ... в приоритете первый релиз а дальше смотреть где узко и не плодить преждевременную оптимизацию
gadfi: тут дело не в оптимизации. Просто потратьте день на изучение этих технологий и всё встанет на свои места, а пока вы может быть просто чего-то боитесь чего на самом деле нет.
Oleg Shevelev: честно говоря читал это все, хотя и признаюсь опыта в js почти нет, но в то что все это безболезнено заведется для android не верю, но обдумав еще раз утром .... хм зато можно сэкономить время и написать сервер хоть на пыхе, хоть на питоне и упростить себе жизнь с администрированием ..., словом надо еще думать .. пусть будут свои проблемы с android и ios, но их я решу быстрее чем с маштабированием
а сами с centrifugo работали ? если да то какие впечатления
gadfi: у centrifugo отличные статьи от разработчика. Кстати его в Mail.Ru в некотором роде делают. Для своих сайтов использую gorilla/websockets в нативном, что называется виде. К centrifugo присматриваюсь с инфраструктурной точки зрения, но пока не пробовал.