Что такое в конечном счете последовательность и как вы справляетесь с этим?
23 февраля 2022 г.Что такое конечная согласованность?
Консистенция в конечном счете — это причудливое название того, что вы делаете что-то и ожидаете изменения состояния только через некоторое время. И есть гарантия, что вы в итоге получите ожидаемое состояние. Отсюда и консистенция.
Но это не будет хорошо работать с кешированием. И мне пришлось столкнуться с этим недавно, когда я работал с WhatsApp API.
При запросе списка шаблонов сообщений из WhatsApp мы кэшируем ответ для последующего использования. Это потому, что шаблоны сообщений не меняются так часто. Просто кэшируйте его, чтобы уменьшить количество ненужных вызовов API.
После создания шаблона мы его какое-то время не увидим, если вызовем API листинга. Это из-за, как вы уже догадались, в конечном итоге согласованности.
Все станет еще хуже, потому что эти отвеченные шаблоны сообщений будут кэшироваться на несколько минут. Поэтому вновь созданный шаблон мы увидим не скоро, хотя он может быть доступен в WhatsApp API и раньше.
Как справиться с окончательной согласованностью
Во-первых, давайте просто проигнорируем кэш примерно на 1 минуту после создания нового шаблона. Этого будет достаточно, чтобы WhatsApp API вернул только что созданный шаблон.
Следующим улучшением будет сокращение времени истечения кэша, например, до 5 секунд в первую минуту. Назовем это длительностью догоняющего. После этого используйте исходное время истечения.
Еще одним улучшением будет проверка доступности нового шаблона в ответе и запуск кэширования в этот момент. Это было бы немного сложнее, так как нам нужно сохранить идентификатор шаблона и дополнительный код, чтобы извлечь его из ответа.
Наконец, хотя этот новый шаблон недоступен, мы все же можем создать его и вручную внедрить в наш собственный ответ.
Резюме
В конце концов, это работает хорошо. Мы можем объединить кэш и, в конечном счете, согласованность, сводя к минимуму время ожидания и количество запросов к внешней платформе! 🎉
Оригинал