Двухэтапная фиксация и слияние, выполнение и фаза подготовки

Насколько я понимаю, перед двухфазной фиксацией даже запускается двусторонняя связь для отправки транзакций на каждый сайт. Каждый сайт выполняет свою часть транзакции, и когда координатор получает ответ от всех сайтов, он выполняет двухфазную фиксацию. Это инициирует этап подготовки и т. Д.

Почему необходимо, чтобы фаза подготовки была отделена от выполнения, предшествующего двухфазной фиксации? Есть ли причина не объединять этапы выполнения и подготовки, тем самым сокращая расходы на связь в оба конца?

Это продолжение моего предыдущего вопроса.


person user782220    schedule 18.11.2012    source источник


Ответы (1)


Для этого есть несколько веских причин:

  1. Для работы могут потребоваться данные с других сайтов. Как бы вы реализовали операцию swap (a, b) между элементами данных на разных сайтах, если вы объедините этапы выполнения и подготовки?
  2. Координатор может стать узким местом в производительности. Объединение этапов выполнения и предложения приведет к тому, что он будет задействован в ретрансляции данных приложения, что приведет к их дальнейшей перегрузке.
  3. Прозрачность и инкапсуляция. Обратите внимание, что код между begin / commit в ответе на ваш предыдущий вопрос (т. е. бизнес-логика) вообще не имеет отношения к распределенным транзакциям. Не нужно знать, какие сайты и даже сколько из них будут задействованы! Он вызывает произвольные процедуры, которые могут быть (или нет ...) удаленными вызовами на неизвестные сайты. Чтобы объединить выполнение и подготовиться, вам нужно явно упаковать логику приложения в независимые обратные вызовы для каждого участника.

Более того, когда вы думаете о производительности с учетом настойчивости, вам следует беспокоиться о циклических переходах, которые подразумевают очистку журнала. Вызовы на этапе выполнения не нуждаются в очистке журнала и, следовательно, должны быть намного дешевле, чем этапы подготовки и фиксации, которые это делают.

person jop    schedule 18.11.2012
comment
(1) Можете ли вы объяснить, почему операция swap(a,b) предотвращает объединение фаз выполнения и подготовки. (2) Когда вы говорите, что координатор может стать узким местом в производительности, вы имеете в виду, что до 2PC клиент отвечает за отправку транзакции до 2PC на все сайты, а не на координатора? (3) Наконец, где вы узнали об этих идеях и есть ли какая-нибудь статья, в которой подробно обсуждаются отрицательные стороны попытки этой идеи объединения выполнения и подготовки? - person user782220; 19.11.2012