【Предисловие】
Когда данные достигают определённого объёма, база данных становится узким местом всей системы, и стратегия оптимизации обычно принимается как разделение чтения и записи, а база данных реализует разделение чтения и записи, разделяя основную базу данных от базы данных (операция запроса записи из основной базы данных, операция запроса чтения из базы данных);
【Идеи для решения задержек данных】
1. Принцип синхронизации мастер-слейв (здесь возьмём самый популярный MySQL в качестве примера)
Вот схематическая схема классической синхронизации данных MySQL мастер-слейв через binlog:
2. Как возникают проблемы?
1. Из приведённой выше схемы несложно узнать, что синхронизация мастер-слейв имеет определённую задержку, которая влияет на размер задержки:
(1) Размер задержки зависит от объёма данных, полученных от последней синхронизации до настоящего времени
(2) Текущая сетевая ситуация между серверами
(3) Давление самого мастер-слейв-сервера (процессор, память, ввод и т.д.)
2. Поскольку сервис базы данных обычно находится в интранете, а при покупке сервер будет занимать более высокий уровень конфигурации (больше, чем фактическая потребность), синхронизация происходит практически очень быстро, обычно в миллисекундах;
3. В общих бизнес-ситуациях задержку миллисекунд можно игнорировать;
4. Существуют общие и частные случаи, и некоторые особые ситуации требуют разницы во времени в реальном времени. Вот распространённые решения для таких особых ситуаций.
3. Решения по задержке данных:
1. Схема 1: Запись программы двойной (одновременно записывать основную базу данных и читать её)
2. Схема 2: Прочитайте программу, чтобы проверить основную базу данных
3. Схема 3: Записать основную базу данных и записать кэш (установить определённое время истечения, обычно немного превышающее максимальную задержку синхронизации базы данных), прочитать программу, прочитать кэш и прочитать ведомую базу данных
4. Преимущества и недостатки трёх схем:
1. Схема 1: Двойное письмо требует определённого уровня производительности, что относительно просто реализовать и не подходит для сценариев с большим количеством одновременных записей;
2. Схема 2: Программа чтения влияет на производительность основной библиотеки, что относительно просто в реализации и не подходит для сценариев с большим количеством одновременного чтения.
3. Схема 3: В большинстве случаев чтение и запись требуют большей производительности записи, что сложнее реализовать и подходит как для одновременных чтений, так и для записи (чтение и запись в кэше очень быстрые);
【Резюме】
1. Реализация важна, но ещё важнее сама идея;
2. Многие основные принципы и идеи универсальны Исходный текст:https://blog.csdn.net/zhanghan18 ... le/details/91638443
|