Как сохранить работоспособность системы при замене текущего двигателя
У нас есть две системы, A
а также B
, Система B отправляет запрос на запись и чтение, а A возвращает ответ на каждый запрос на чтение, используя существующий механизм E_current в A. Каждый запрос на запись вызывает изменение в существующем механизме E_current.
Периодически E_current будет заменяться на E_new. В процессе обновления E_new еще не может использоваться. Некоторые запросы на чтение, поступающие во время этого процесса обновления, зависят от запроса на запись, поступившего после начала процесса обновления. Новый механизм E_new также должен вносить изменения в себя для каждого запроса на запись, который поступил в процессе обновления и уже обработан.
После завершения процесса обновления E_current будет выселен, а E_new станет E_current.
Требования:
- Запросы полностью совпадают. Например, запрос на запись может поступить во время обработки запроса на чтение.
- Многочисленные модификации любого двигателя E могут привести к несовместимому состоянию, согласованность состояний должна быть сохранена.
Диаграммы: