Конструкторы лучше. Так как легче тестить. Например, когда нужно замокать этот самый EmailSender. Но да, бывает, что конструктор очень сильно ростет. Я в таких случаях создаю объект Holder который содержит ссылки на все синглтоны.
т.е. разобраться с одним спрингом сложнее, чем с полусотней других «простых» решений?
Именно. Тут уже внизу писали, что спринг — в топах вопросов на СО.
а набор «простых» решений еще придется друг к другу подгонять и писать интеграцию.
Наоборот — в виду узкой специализации каждой из библиотек вместе их собрать гораздо легче, чем наконфигурить спринг. Гляньте, например, guice как пример DI. За 1 минуту подключаете и используете во всю.
P. S. Если что — я 7 лет использовал спринг. Последние 3 год не использую. Моя продуктивность сильно выросла. Но это мой частный случай.
Спринг многоцелевой и сложный. Чтобы начать работу со спрингом нужен определенный бекграунд. Любую задачу, которую решает спринг можно решить другими инструментами, которые простые и узконацеленные. Никто не говорит что нужно писать свои велосипеды.
Эти 6 строк заворачиваете в обертку и все. Переиспользуете везде. Зато любой джун разберется за 1 минуту и не будет думать как же работает вся эта магия.
1. При старте хацелькаст отжирал около 50 МБ хипа; А мы ранимся на low-end VM, где всего есть 250мб;
2. Внутри, на то время, был сложный и не очень хороший код со слипами в местах записи (если мне не изменяет память)…
3. Довольно большая джарка, сейчас уже 5мб, смотреть пункт 1.
А то что Вы написали сокеты, это не в счет? И дырки есть, иначе — зачем вам енджинкс? Очевидно, что Вы им закрываете недостающий фукнционал в вашей реализации вебсокетов. (я не про лоад балансинг, а про другие пункты что Вы описали).
уместно будет процитировать эту шутку
Ну Вы же понимаете, что дело не в языке, а в людях, которые пишут код.
Спору нет – erlang для этого, очевидно, хорош. Не зря WhatsApp рекорды по соединениям на одном сервере с ним ставил =)
Ну он не так уж и хорош, если углубится в детали. Во-первых, им для этого пришлось допиливать виртуалку ерланга, так как у ерланга были проблемы с большими нагрузками.
Во-вторых, если посчитать нагрузку на ядро, то у них она всего лишь 9к рек-сек. Учитывая что это чат, это явно результаты ниже среднего.
Ну как же, Вы бросили усилия на написание высокопроизводительных вебсокетов в го, которые уже давно есть на других языках и платформах. При этом добавили сверху енджинкс, добавив оверхед, чтобы закрыть дырки по фукнционалу в го.
Ну по крайней, мере это что я вижу. Из описаного выше.
Да. Вот пример. В нем как раз есть и имейл сендер и смс сендер и пуш сендер =).
Любая IDE это делает через 2 клика.
Именно. Тут уже внизу писали, что спринг — в топах вопросов на СО.
Наоборот — в виду узкой специализации каждой из библиотек вместе их собрать гораздо легче, чем наконфигурить спринг. Гляньте, например, guice как пример DI. За 1 минуту подключаете и используете во всю.
P. S. Если что — я 7 лет использовал спринг. Последние 3 год не использую. Моя продуктивность сильно выросла. Но это мой частный случай.
1. При старте хацелькаст отжирал около 50 МБ хипа; А мы ранимся на low-end VM, где всего есть 250мб;
2. Внутри, на то время, был сложный и не очень хороший код со слипами в местах записи (если мне не изменяет память)…
3. Довольно большая джарка, сейчас уже 5мб, смотреть пункт 1.
HttpObjectDecoder
и убрать от туда парсинг хидеров, вопрос нескольких часов.А то что Вы написали сокеты, это не в счет? И дырки есть, иначе — зачем вам енджинкс? Очевидно, что Вы им закрываете недостающий фукнционал в вашей реализации вебсокетов. (я не про лоад балансинг, а про другие пункты что Вы описали).
Ну Вы же понимаете, что дело не в языке, а в людях, которые пишут код.
Ну он не так уж и хорош, если углубится в детали. Во-первых, им для этого пришлось допиливать виртуалку ерланга, так как у ерланга были проблемы с большими нагрузками.
Во-вторых, если посчитать нагрузку на ядро, то у них она всего лишь 9к рек-сек. Учитывая что это чат, это явно результаты ниже среднего.
Ну по крайней, мере это что я вижу. Из описаного выше.