@pgsql

Страница 923 из 1062
Artem
07.08.2018
16:01:16
кстати о дико-быстрорастущих а ля ноды, у них тоже сть umbrella, так вот они пошли по своему пути, потом опомнились и стали потихоньку переделывать все как у erlang, как говориться поспешишь...

Maksim
07.08.2018
16:02:18
Горячая замена в Web нужна для того, чтобы вносить изменения в серверный процесс без его остановки, и, как следствие, отключения активных клиентов.
Для этого делают rolling update сервисов оркестратором. И это независимо от технологии, на которой базируется сервис

Google
Nort
07.08.2018
16:02:59
не самый лучший язык для этого совсем

Fike
07.08.2018
16:03:20
Горячая замена в Web нужна для того, чтобы вносить изменения в серверный процесс без его остановки, и, как следствие, отключения активных клиентов.
В вебе давно перешли к той самой эрланговской модели let it crash и вместо пестования процесса готовят ему горячую замену целиком

Dmitry
07.08.2018
16:03:28
Ну, как бы, не PHP ? Я его вообще не вижу )

Nort
07.08.2018
16:03:54
Ну, как бы, не PHP ? Я его вообще не вижу )
хозяин барин, если самому интересно - то мне кажется вы легко освоите golang

он похож на кресты чем то

не на кресты

на С

простите

Dmitry
07.08.2018
16:05:14
В вебе давно перешли к той самой эрланговской модели let it crash и вместо пестования процесса готовят ему горячую замену целиком
Когда и кто пришёл - не ясно. Есть задача - обновлять сервис, не мешая клиентам. Мы не хотим раздражать людей жёлтыми табличками с надписями "sorry, maintenance, we use let it crash".

Artem
07.08.2018
16:05:53
golang сильно хайпят, это пугает

Fike
07.08.2018
16:06:18
Вы в каком-то другом вебе живете, в котором люди еще не поняли, что крашится абсолютно все, а соединения рвутся и сами по себе. И потому делают всякие resilient-штуки, которые нацелены на восстановление, а не пестование.

Google
Nort
07.08.2018
16:06:20
просто тот кто сделает запрос после обновления уже попадет на новую версию

а тот кто не сделает - сидит на старой

поэтому такие вопросы более чем справедливы

Dmitry
07.08.2018
16:07:29
просто тот кто сделает запрос после обновления уже попадет на новую версию
Это всё понятно. Теперь представим 32 серверных процесса. Их все надо обновить по очереди.

Fike
07.08.2018
16:08:26
32 одинаковых серверных процесса, которые делают одно и то же? На одном сервере?

Dmitry
07.08.2018
16:08:31
Что проще, обновить 32 процесса с помощью оркестраторов или просто заменить на горячую несколько функций?

Nort
07.08.2018
16:08:39
Это всё понятно. Теперь представим 32 серверных процесса. Их все надо обновить по очереди.
вы упорно не хотите сообщить что это за сервисы, если это просто http, то они штатно обновятся по модели описанной выше

Fike
07.08.2018
16:08:52
Привет, многопоточность.
Так процесса или потока?

Dmitry
07.08.2018
16:09:03
Так процесса или потока?
Привет конкурентность.

Fike
07.08.2018
16:09:25
Вы предъявляете некоторые претензии к современному устройству мира, но отказываетесь отвечать на уточняющие вопросы.

Darafei
07.08.2018
16:11:35
традиции А/Б тестирования говорят, что возможно нужно будет заменить 16 процессов на новые, 16 оставить старыми, а потом решить, на кого какие из 16 поменять

Dmitry
07.08.2018
16:12:05
вы упорно не хотите сообщить что это за сервисы, если это просто http, то они штатно обновятся по модели описанной выше
Это просто http. 32 однопоточных процесса, которые делают одно и то же. Каким образом Вы прелагаете обновить такой сервис, к которому уже подключены 100000 пользователей?

Там, где есть горячая замена, это делается элементарно.

Darafei
07.08.2018
16:12:32
обновить так же, как если бы сервер упал

Dmitry
07.08.2018
16:12:50
обновить так же, как если бы сервер упал
Но тогда пользователи могут обидеться.

Nort
07.08.2018
16:13:34
простите, я прям откровенно не понимаю зачем городить огород, если можно прям без малейших проблем подменить код (мы сейчас про php) и все будет здорово

Google
Fike
07.08.2018
16:13:50
Тупо дать клиенту сигнал, что надо переподключиться и после этого потушить процесс, нет?

Выводим процесс из-под балансировщика, говорим, что он уходит, шлем клиентам сообщения, обрываемся по таймауту, нет?

И да, это в разы проще делать оркестратором

Nort
07.08.2018
16:14:28
Тупо дать клиенту сигнал, что надо переподключиться и после этого потушить процесс, нет?
ну либо если у вас кубернетес или докер сварм то рубануть под и ингрессом сделать вышеописанное

Terminator
07.08.2018
16:15:38
@SMUGFACE будет жить. Поприветствуем!

Heisenberg
07.08.2018
16:16:27
Всем привет. Вопрос: как грамотно добавить в таблицу колонку, в которой будут какие-то вычисленные значения на основе ячеек из строк?

пример: таблица id, a, b, добавить в неё колонку, в которой значение будет равно a+b

как-то так

Heisenberg
07.08.2018
16:18:32
Там для новичков?

Nort
07.08.2018
16:18:34
SELECT id,a,b,a+b AS val

FROM и т д

Nort
07.08.2018
16:18:41
сами допишете)

Dmitry
07.08.2018
16:20:37
2018, отказ от пхп, но 32 однопоточных процесса
Ну, как бы, да. 2018, отказ от PHP, 32 однопоточных процесса и вот это всё. Вы за нас не переживайте, если будет надо, мы сделаем 8 процессов по 4 потока без оглядки на внешних экспертов.

Darafei
07.08.2018
16:21:00
Всем привет. Вопрос: как грамотно добавить в таблицу колонку, в которой будут какие-то вычисленные значения на основе ячеек из строк?
тут вопрос, зачем это делать: - можно прямо на селекте - можно прожечь в таблицу и обновлять триггером - можно сделать view и читать из него

Dmitry
07.08.2018
16:22:07
может быть, все-таки один?
Мы подумаем. Это же не PHP, тут вариантов много.

Darafei
07.08.2018
16:22:31
может быть, все-таки один?
в Python, например, есть GIL, из-за которого лучше количество процессов = количество ядер

Artem
07.08.2018
16:23:38
с GIL надо уметь работать)

Fike
07.08.2018
16:23:46
в Python, например, есть GIL, из-за которого лучше количество процессов = количество ядер
ну мы тут про высокие технологии, которые умеют в memory model

Google
Dmitry
07.08.2018
16:25:39
ну либо если у вас кубернетес или докер сварм то рубануть под и ингрессом сделать вышеописанное
Ещё раз, мы не хотим рубить клиентов. Давайте заменим long-polling ajax по http на websockets. Клиенты мониторят нечто в реальном времени. Как обновить код серверного процесса с помощью докера или кубернетеса без прерывания работы пула серверных процессов?

Artem
07.08.2018
16:28:39
postgres

Maksim
07.08.2018
16:31:24
Ещё раз, мы не хотим рубить клиентов. Давайте заменим long-polling ajax по http на websockets. Клиенты мониторят нечто в реальном времени. Как обновить код серверного процесса с помощью докера или кубернетеса без прерывания работы пула серверных процессов?
Всегда можно предусмотреть завершение коннекта по инициативе сервера с сохранением состояния клиентов и возможностью клиентам переподключиться. Потом есть завершение по исчерпанию активных коннектов. Ну не вечно же коннекты по вебсокетам будут висеть

Dmitry
07.08.2018
16:34:08
Всегда можно предусмотреть завершение коннекта по инициативе сервера с сохранением состояния клиентов и возможностью клиентам переподключиться. Потом есть завершение по исчерпанию активных коннектов. Ну не вечно же коннекты по вебсокетам будут висеть
Совершенно верно. Это можно предусмотреть коде сервера приложений. Ну а в языках, где предусмотрена горячая замена кода, ничего предусматревать не надо. Теоретически, конечно ?

Admin
ERROR: S client not available

Dmitry
07.08.2018
16:37:15
rainbow deploy
Давайте представим. Пусть есть пул из N процессов, и есть M клиентов => На каждый процесс приходится по M/N активных соединений, т.е. сокетов. Нам надо все эти сокеты перенести на новый пул без разрыва соединений. Вы какой технологией предлагаете пользоваться?

Fike
07.08.2018
16:38:46
Нам не надо переносить их без разрыва соединений

Fike
07.08.2018
16:39:11
Вы ноду таким образом на обслуживание вытащить не сможете

Vladimir
07.08.2018
16:39:16
Давайте представим. Пусть есть пул из N процессов, и есть M клиентов => На каждый процесс приходится по M/N активных соединений, т.е. сокетов. Нам надо все эти сокеты перенести на новый пул без разрыва соединений. Вы какой технологией предлагаете пользоваться?
1) деплоим новый пул 2) направляем новые подключения только на новый пул, старые не гасим 3) когда старые естественно отваливаются и освобождают старые инстансы, гасим их по мере освобождения

Dmitry
07.08.2018
16:42:25
1) деплоим новый пул 2) направляем новые подключения только на новый пул, старые не гасим 3) когда старые естественно отваливаются и освобождают старые инстансы, гасим их по мере освобождения
Всё бы хорошо, если бы не 3). Преставим, что клиенты сидят и смотрят за перемещениями объектов в рельном времени. Получается, что нам надо их принудительно переподключить, а это время. Клиенты за это время могут что-то пропустить. Нет, если было бы допустимо, чтобы несколько секунд клиент сидел и смотрел в модальное окно с песочными часами вместо мониторинга - тогда да, отключаем и подключаем заново.

Darafei
07.08.2018
16:42:56
хмм

перемещения объектов в реальном времени

Dmitry
07.08.2018
16:44:12
нет, мы не переподключаем, просто они смотрят по старым правилам
Тогда можно вообще ничего не менять? Пусть так и смотрят по старым правилам ?

Google
Vladimir
07.08.2018
16:44:30
после перезагрузки страницы будут по новым смотреть

Darafei
07.08.2018
16:45:05
реконнект занимает значительно меньше 1 секунды, иначе у вас проблемы с пингом и тогда неважно, сколько занимает реконнект - ведь вы точно так же будете лагать с непорванным коннектом

Dmitry
07.08.2018
16:49:20
реконнект занимает значительно меньше 1 секунды, иначе у вас проблемы с пингом и тогда неважно, сколько занимает реконнект - ведь вы точно так же будете лагать с непорванным коннектом
Не совсем так, конечно. Переконнект тоже имеет свои накладные расходы. В любом случае, организовать переподключения, предварительно развёртывая новую версию сервера, технически намного более сложнее и более уродливо, чем простая и изящная замена кода процесса без его перезапуска.

Fike
07.08.2018
16:50:00
простая и изящная замена

ладно, прекращаю ерничать

Dmitry
07.08.2018
16:50:28
Ну да, выглядит не очень ?

Darafei
07.08.2018
16:56:23
микросервисы и тонкий гейтвей, не требующий перезапуска, тоже вариант

Dmitry
07.08.2018
16:58:19
Т.е. все состояния соединений на балансировщике?

Как говорит Страуструп: "как это часто бывает, проблема решается посредством косвенного доступа".

Nort
07.08.2018
17:03:32
Т.е. все состояния соединений на балансировщике?
ну как бы давайте сразу так - если у вас stateful сервер то PHP не ваш вариант, тогда берем Java(вот уж где штук для хотсвапа достаточно) и пишем это все

но конечно количество магии у вас стремится к бесконечности, столько условий, для систем зависящих от коннекта

я такое тока на биржевых ботах видел

и мы писали на питоне, норм было ☺

правда с хотсвапом не морочились

я потому в начале диалога и предложил сразу все условия выкатить чтобы не сферического коня обсуждать

Dmitry
07.08.2018
17:11:08
ну как бы давайте сразу так - если у вас stateful сервер то PHP не ваш вариант, тогда берем Java(вот уж где штук для хотсвапа достаточно) и пишем это все
Это всё понятно. Мы можем задействовать и dlopen(3) в C++, и будет всё тоже работать. Я поинтересовался насчёт Erlang, потому что знаю что такое горячая замена кода в Common Lisp, и насколько проще с ней работать, чем с dlopen.

Страница 923 из 1062