Size: a a a

2020 May 15

AK

Andrey Konovalov in Modern::Perl
Anton Petrusevich
вопрос не в том, произойдёт что-то плохое или нет, вопрос в последствиях и рисках
Ну вот сервис-пул коннектов в базу если рухнет, его достаточно за полсекунды рестартануть. С бизнес-логикой не факт, что ты даже сразу поймёшь, что рухнула именно логика взаимодействия с базой
источник

AP

Anton Petrusevich in Modern::Perl
Andrey Konovalov
Ну вот сервис-пул коннектов в базу если рухнет, его достаточно за полсекунды рестартануть. С бизнес-логикой не факт, что ты даже сразу поймёшь, что рухнула именно логика взаимодействия с базой
это уже вообще другой вопрос. началось с асинка
источник

AK

Andrey Konovalov in Modern::Perl
Anton Petrusevich
это уже вообще другой вопрос. началось с асинка
Запросы HTTP в Perl'е прекрасно становятся асинком.
Запросы к БД - с трудом поддаются асинку.
источник

AP

Anton Petrusevich in Modern::Perl
есть асинк. я считаю, что в комбинации с коро, он применим в перле, что можно писать код "как обычно", при этом исполнение останется асинхронным в рамках кооперативной многозадачности. для этого я сделал пул коннектов, асинхронные запросы к дб, которые выглядят как синхронные. а потом приходишь ты и говоришь: "микросервис через лупбек устроит всех, поскольку у меня с ним нет проблем". я сдуру начал спорить.
источник

AP

Anton Petrusevich in Modern::Perl
демонстрирую, как выглядит мой "асинхронный код": https://github.com/jef-sure/pef-chat-demo/blob/master/app/ChatDemo/Local/Model.pm#L14
источник

AK

Andrey Konovalov in Modern::Perl
Anton Petrusevich
есть асинк. я считаю, что в комбинации с коро, он применим в перле, что можно писать код "как обычно", при этом исполнение останется асинхронным в рамках кооперативной многозадачности. для этого я сделал пул коннектов, асинхронные запросы к дб, которые выглядят как синхронные. а потом приходишь ты и говоришь: "микросервис через лупбек устроит всех, поскольку у меня с ним нет проблем". я сдуру начал спорить.
А если клиентов у тебя больше, чем коннектов в базу в твоём пуле - то, конечно же, всё падает?
Тебя не смущает латентность исполнения кода внутри пакета DBI, который ты в конечном итоге всё равно используешь?
источник

AK

Andrey Konovalov in Modern::Perl
Просто был выше задвиг про то, что делать, если коннектов не хватает, о у жас
источник

AK

Andrey Konovalov in Modern::Perl
Ну ты же как-то решил эту "проблему". Наверное, новый коннект создаёшь просто, не?
источник

AP

Anton Petrusevich in Modern::Perl
Andrey Konovalov
А если клиентов у тебя больше, чем коннектов в базу в твоём пуле - то, конечно же, всё падает?
Тебя не смущает латентность исполнения кода внутри пакета DBI, который ты в конечном итоге всё равно используешь?
прикол в том, что не падает. ну пока у сервера ресурсов хватает.
источник

AP

Anton Petrusevich in Modern::Perl
Andrey Konovalov
Ну ты же как-то решил эту "проблему". Наверное, новый коннект создаёшь просто, не?
нет, у меня коннекты сверх лимита ставятся в вейт-пул
источник

AP

Anton Petrusevich in Modern::Perl
при освобождении коннкета в пуле, проверяется очередь ожидания и берётся оттуда следующий
источник

AK

Andrey Konovalov in Modern::Perl
В любом случае эта логика может быть точно так же на стороне отдельного сервиса, что не так-то?
источник

AP

Anton Petrusevich in Modern::Perl
Andrey Konovalov
В любом случае эта логика может быть точно так же на стороне отдельного сервиса, что не так-то?
я вроде по русски говорю, нет?
источник

W

Warstone in Modern::Perl
Andrey Konovalov
Ну ты же как-то решил эту "проблему". Наверное, новый коннект создаёшь просто, не?
Боже как низко вы о нем думаете... Там-же постгре... Но он не пользуется DBD::Pg, потому что там нету асинхронного чтения, поэтому он пользуется баиндингами к libpq и сделал сам и асинхронное ожидание и асинхронное чтение, конечно-же.
источник

AP

Anton Petrusevich in Modern::Perl
Warstone
Боже как низко вы о нем думаете... Там-же постгре... Но он не пользуется DBD::Pg, потому что там нету асинхронного чтения, поэтому он пользуется баиндингами к libpq и сделал сам и асинхронное ожидание и асинхронное чтение, конечно-же.
там есть асинхронное чтение. там нет только асинхронного коннекта
источник

W

Warstone in Modern::Perl
Нету в libpq асинхронного чтения
источник

W

Warstone in Modern::Perl
Есть только асинхронное ожидание начала ответа
источник

W

Warstone in Modern::Perl
Вернее в libpq - есть асинхронное чтение
источник

W

Warstone in Modern::Perl
Его нету в DBD::Pg
источник

W

Warstone in Modern::Perl
Не сделали.
источник