Уведомления

Группа в Telegram: @pythonsu

#1 Авг. 22, 2014 12:08:55

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Архитектура приложения. Отказоустойчивость.

Budulianin
У меня mongodb. Там нельзя объединять несколько запросов в одну транзакцию.
можно использовать 2-х фазные комиты, есть bulk insert

Офлайн

#2 Авг. 27, 2014 12:06:04

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Архитектура приложения. Отказоустойчивость.

o7412369815963
можно использовать 2-х фазные комиты, есть bulk insert
Спасибо, не знал про bulk. Я решил более простым способом.
Просто начал сохранять pid, а потом проверять, жив ли этот процесс.
И если такого в системе нет, то я понимаю, что он умер и нужно за ним почистить.



Отредактировано Budulianin (Авг. 27, 2014 12:06:17)

Офлайн

#3 Авг. 27, 2014 12:09:55

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Архитектура приложения. Отказоустойчивость.

Budulianin
Спасибо, не знал про bulk. Я решил более простым способом.
Просто начал сохранять pid, а потом проверять, жив ли этот процесс.
И если такого в системе нет, то я понимаю, что он умер и нужно за ним почистить.
А если этот pid уже успел занять другой процесс?



Офлайн

#4 Авг. 27, 2014 12:32:40

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Архитектура приложения. Отказоустойчивость.

FishHook
А если этот pid уже успел занять другой процесс?
Это может случиться только в одном случае, когда осталась запись в БД и перезагрузилась ОС.
И то не факт что этот номер сразу же займут.

Так что можно считать, что это нереально.



Отредактировано Budulianin (Авг. 27, 2014 14:03:32)

Офлайн

#5 Авг. 27, 2014 15:34:10

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Архитектура приложения. Отказоустойчивость.

Budulianin
Это может случиться только в одном случае, когда осталась запись в БД и перезагрузилась ОС.
И то не факт что этот номер сразу же займут.

Так что можно считать, что это нереально.
OS - Linux или *bsd?

Офлайн

#6 Авг. 27, 2014 15:42:13

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Архитектура приложения. Отказоустойчивость.

s0rg
OS - Linux или *bsd?
Linux



Офлайн

#7 Авг. 27, 2014 16:30:42

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Архитектура приложения. Отказоустойчивость.

емнип, как раз на Linux такая ситуация (переиспользование pid-ов) более чем возможна, в openssl специально добавляли код, учитывающий это, а недавно и в libressl на эти же грабли наступили.

Офлайн

#8 Авг. 27, 2014 16:46:46

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Архитектура приложения. Отказоустойчивость.

s0rg
емнип, как раз на Linux такая ситуация (переиспользование pid-ов) более чем возможна, в openssl специально добавляли код, учитывающий это, а недавно и в libressl на эти же грабли наступили.

В любой ОС переиспользуются pidы. :) иначе никак.
В Linux всё хорошо должно быть с этим.
Принцип такой: берётся номер последнего созданного процесса и к нему добавляется 1.
Если такой номер уже занят, то эта процедура повторяется, пока не достигнут предел(2 ** 32).
После предела, счётчик обнуляется и всё по новой.

Вот статья

Там говорится, что в Linux, может возникнуть ситуация, когда дочерний pid,
будет совпадать с pidом родителя(странная ситуация, не знаю почему).
Это было потенциальной проблемой для них, т.к. у них ГСЧ завязывался на pid.
Там ещё говорится про 16 разрядный pid, но в современном Linux он
32 разрядный(может про старые версии говорили?)



Отредактировано Budulianin (Авг. 27, 2014 17:19:37)

Офлайн

#9 Авг. 27, 2014 18:21:12

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Архитектура приложения. Отказоустойчивость.

За статью - спасибо, понятно, что pid-ы не бесконечны, просто из беглово ознакомления с openssl, мне почему-то показалось, что суть была именно в быстром переиспользовании освободившегося pid-а.
Хорошо что это не так ;)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version