KlonD90
да ну совершенно разные цели у caddy/traefik
KlonD90
есть веб-сервер есть лоад балансер
KlonD90
они где-то рядом конечно но задачи разные
Aleksand
да ну совершенно разные цели у caddy/traefik
у caddy есть все для баланса, но у него нет специфичных вещей - поддержки service discovery, например, которая есть у gobetween, но caddy умеет grpc, например, а другие не умеют
KlonD90
вот gobetween похож на то что надо
KlonD90
только etcd не умеет ._.
KlonD90
consul имеет зато
Aleksand
только etcd не умеет ._.
они все чего-то не умеют
KlonD90
traefik умеет
KlonD90
Aleksand
вот gobetween похож на то что надо
gobetween - weight, iphash, leastconn, roundrobin, leastbandwidth caddy - random, least_conn, round_robin, first, ip_hash, or uri_hash сложно сказать кто из них балансер исходя из политик балансирования
Aleksand
но это все приедет вероятно в nginx, поэтому это временные все решения на фоне нехватки такого в общепринятых инструментах
KlonD90
да ну из nginx'а нулевой балансер ( надо докручивать все модулями слава китайцам
Aleksand
надежный и быстрый чтобы
KlonD90
У меня основное требование к балансеру сейчас уметь про хелсчекать и понять что что-то умерло плюс чтобы можно было по нормально раскатывать изменения
KlonD90
что в целом решает кубернетес/номад. но чот сложно
KlonD90
и сыро
KlonD90
но gobetween идеей exec мне очень понравился
KlonD90
написать bash скриптик который сам все прочекает
KlonD90
весьма ок
KlonD90
но деплоить еще и этот скрипт и мейнтейнить чот лень (
Aleksand
У меня основное требование к балансеру сейчас уметь про хелсчекать и понять что что-то умерло плюс чтобы можно было по нормально раскатывать изменения
proxy from to... { policy random | least_conn | round_robin | first | ip_hash | uri_hash fail_timeout duration max_fails integer max_conns integer try_duration duration try_interval duration health_check path health_check_port port health_check_interval interval_duration health_check_timeout timeout_duration header_upstream name value header_downstream name value keepalive number without prefix except ignored_paths... upstream to insecure_skip_verify preset }
Aleksand
caddy умеет health_check свои делать
Aleksand
но gobetween идеей exec мне очень понравился
это костыль скорее, лучше делать нормальные хелсы у сервисов и кодом ответа сообщать о здоровье, тогда и ничего не надо левого мейнтейнить
GG
подскажите, как на ноде бичмарки своего кода(модуля) проводить?
Aleksand
и вот gobetween не поддерживает проверку по коду, если сервис ответил это не значит что он адекватен, это не микросервисно совсем, вот хэлсы у caddy лучше сделаны точно
Aleksand
traefik вроде тоже не умеет код хэлсов, вот тебе и балансеры
GG
Aleksandr помнишь - я написал простую ф-цию в 20 строк, для вывода даты по шаблону. Мы спорили по поводу бичмарков, сейчас вывел милисекунды в цикле через свою ф-цию
GG
GG
миллисекунды
GG
тоесть ты можешь логировать время через мою ф-цию хоть каждую миллисекунду, и задержок не будет
GG
Sergey
мило выглядит
Sergey
дай ссылку на репо
GG
пока не выложил, там нужно один трабл решить
Aleksand
тоесть ты можешь логировать время через мою ф-цию хоть каждую миллисекунду, и задержок не будет
по сравнению с кем? сравни запись через console простой строки и строки с датой
Aleksand
чет не понял. -_-
ну ты же говоришь что нет задержки, давай посмотрим насколько ее нет
Sergey
ну ты же говоришь что нет задержки, давай посмотрим насколько ее нет
понятное дело будет НО такая, что ей можно пренебречь
Sergey
вот что-то не уверен
лол если тебе надо написать дату где-то, ты что будешь делать?
Aleksand
лол если тебе надо написать дату где-то, ты что будешь делать?
тут речь про максимально быстрый способ форматирования даты вроде бы
Sergey
суть то не изменилась
Sergey
да и date-template скорее про "удобный+быстрый" способ
GG
и минимальный)
Sergey
на какой?
Если тебе надо напечатать форматированную дату, что ты будешь делать?
Aleksand
Если тебе надо напечатать форматированную дату, что ты будешь делать?
сам напишу функцию форматирования под свою задачу и померяю скорость всех вариантов сначала. в логгерах форматирование строки самый важный и тонкий момент
Sergey
я предпочту иметь что-то протестированное и уже рабочее, чем тратить время на написание своего
Aleksand
Не о логгерах речь А если у тебя 15 языков в системе, и под каждый язык свой формат даты?
а я о логгерах, там максимально критична любая лишняя задержка, а в том о чем ты лучше брать что-то готовое, там задача шире и скорость не так важна и заметна
Sergey
а я о логгерах, там максимально критична любая лишняя задержка, а в том о чем ты лучше брать что-то готовое, там задача шире и скорость не так важна и заметна
не все готовые решения акцентируются на широких возможностях но по факту, чаще всего готовые решения лучше, тупо потому что их разрабатываешь не ты множество человек попробовало в своих проектах и внесло свои коррективы, как в удобство так и в скорость
GG
а я о логгерах, там максимально критична любая лишняя задержка, а в том о чем ты лучше брать что-то готовое, там задача шире и скорость не так важна и заметна
ну тык, яж сейчас показал, что можно логировать каждую милисекунду и задержки не будет, то есть задержка меньше 0.01 милисекунды
Aleksand
не все готовые решения акцентируются на широких возможностях но по факту, чаще всего готовые решения лучше, тупо потому что их разрабатываешь не ты множество человек попробовало в своих проектах и внесло свои коррективы, как в удобство так и в скорость
ну я разве спорю с этим? если вопрос критичный к производительности то готовые решения лучше не брать, или взять и форкнуть, если не особо, то вообще париться не стоит, если выигрыш не заметен
Sergey
короче чувак хейтит готовые решения
Aleksand
короче чувак хейтит готовые решения
нет, конечно, можно почитать что я говорю прежде чем придумывать
Aleksand
только вот далеко не факт, что ты напишешь решение, которое будет работать быстрее готового
смотря о чем речь, иногда можно в много раз ускорить, например, логгеры популярные, иногда нельзя
Sergey
смотря о чем речь, иногда можно в много раз ускорить, например, логгеры популярные, иногда нельзя
если есть популярное решение, то скорее всего в одиночку написать что-то более быстрое с необходимой функциональностью будет сложно
Aleksand
если есть популярное решение, то скорее всего в одиночку написать что-то более быстрое с необходимой функциональностью будет сложно
ну вот ты это озвучиваешь как будто я с этим спорю. нет, не спорю, но если готовое решение не устраивает по скорости или нужна только его часть то тут есть варианты всегда
Aleksand
непонятно о чем спор
Aleksand
вот эпичный пример почему я всегда использую console напрямую без всяких популярных решений $ node benchmark/logging.js console.info x 1,459,530 ops/sec ±0.78% (88 runs sampled) rufus.info x 201,119 ops/sec ±0.62% (91 runs sampled) winston.info x 65,377 ops/sec ±1.05% (80 runs sampled) intel.info x 59,193 ops/sec ±1.13% (97 runs sampled) bunyan.info x 82,040 ops/sec ±0.68% (100 runs sampled) log4js.info x 45,273 ops/sec ±2.64% (83 runs sampled) Fastest is console.info мне от логгера нужно очень немного, чтобы он космически быстро писал нужные мне строки в консоль без накладок на ненужное мне форматирование, выходит примерно в 10 раз быстрее популярных логгеров
KlonD90
traefik вроде тоже не умеет код хэлсов, вот тебе и балансеры
Всмысле? ты хочешь в случае хорошего отвечать чем-то отличным от 200?
Aleksand
Всмысле? ты хочешь в случае хорошего отвечать чем-то отличным от 200?
ну среди микросервисов принято что 200-399 коды это ок, остальные нездоровые. сервис имеет кучу зависимостей и если он отвечает то это не говорит о том что у него все ок, вот поэтому удобно кодом регулировать хэлсы
KlonD90
очень страно было бы в случае редиректа
KlonD90
О_о