Это очень широкий вопрос, но общие источники ошибок параллелизма из базы приложения:
- Уровень БД ( MV CC)
- Уровень времени выполнения (язык программирования, модель параллелизма, потоки, блокировки, гонка, условия и т. Д. c)
- Уровень веб-сервера (несколько клиентских запросов одновременно на одних и тех же конечных точках)
- Логический: CQRS (Возможная последовательность, записи и чтения являются отдельными, чтения могут быть устаревшими / с задержкой)
- Логические: распределенные транзакции (Представьте, что у вас есть кэш чтения, такой как redis, и хранилище, как mysql, как это сделать Вы гарантируете, что они синхронизированы c?)
Я не могу рекомендовать Разработка приложений с интенсивным использованием данных: большие идеи, стоящие за надежными, масштабируемыми и обслуживаемыми системами достаточно высоко, что обеспечивает основу для всех важных концепций, которые вас интересуют!
Конкретный пример с использованием CQRS:
- Есть хранилище БД
- есть один Writer
- Существует один Reader
Транзакция отправляет запрос на сохранение информации для устройства записи, а затем немедленно считывает данные из этого устройства чтения. В зависимости от вашей реализации CQRS, существует вероятность того, что между записью и чтением существуют только согласованные гарантии, то есть чтение может не увидеть только что записанные данные! Конечно, это может быть проблемой, в зависимости от вашего клиента.