Если запустить любой из примеров, можно наблюдать следующую картину:
- обрыв соединения не мешает сервису продолжить свою работу после восстановления соединения
- и это может продолжаться довольно долго
Что не так с Node.js? Все ок не считая его single threaded model, которая никак не попадает в контекст: здесь нужен один "суперпроцесс" который будет "тащить" все самостоятельно, и на эту роль код на Node.js никак не подходит. Пара вариантов архитектуры подобного решения:
- приложение создает дочерний процесс каждый раз при получении нового документа для его обработки - дороговато
- приложение состоит из нескольких процессов (к примеру кластер), при этом:
- на каждое ядро будет создан процесс
- на каждый процесс будет создан курсор
- каждый процесс будет получать свежие документы
- каждому процессу нужно будет решить для себя обрабатывать ему полученный документ или нет... плюс еще куча издержек связанных с хранением состояния... в общем тоже не вариант
Почему Go? Просто решил попробовать что-то новое, и Go меня не разочаровал, пока этот парень мне нравится :)
Дисклеймер: по понятным причинам этот код может быть не совсем "gopher style", замечания приветствуются.
Комментариев нет:
Отправить комментарий
Комментарий будет опубликован после модерации