Чтения шли с мастера, с реплики или как-то распределялись?

В master-slave репликации основная база данных (master) отвечает за запись и обновление данных, а реплики (slave) — за чтение. Это позволяет распределить нагрузку и повысить производительность.

Короткий ответ

Что ответить на собеседовании

В master-slave репликации основная база данных (master) отвечает за запись и обновление данных, а реплики (slave) — за чтение. Это позволяет распределить нагрузку и повысить производительность.

Подробный разбор

Ответ с пояснениями

В master-slave репликации основная база данных (master) отвечает за запись и обновление данных, а реплики (slave) — за чтение. Это позволяет распределить нагрузку и повысить производительность.

Обращения к master происходят, когда нужно выполнить операции записи (INSERT, UPDATE, DELETE), чтобы изменения были централизованно сохранены и затем реплицированы на слейвы.

Чтение данных обычно направляется на slave, чтобы разгрузить мастер и обеспечить масштабируемость. Однако при необходимости получить самые свежие данные иногда обращаются к master, так как репликация может иметь задержку.

Пример на Go с использованием базы данных и разделением чтения и записи:

type DB struct {
    master *sql.DB
    slaves []*sql.DB
}

func (db *DB) QueryRead(query string, args ...interface{}) (*sql.Rows, error) {
    // Выбираем один из slave для чтения
    slave := db.slaves[0] // упрощённо
    return slave.Query(query, args...)
}

func (db *DB) ExecWrite(query string, args ...interface{}) (sql.Result, error) {
    // Все записи идут на master
    return db.master.Exec(query, args...)
}

Такой подход помогает эффективно использовать ресурсы и поддерживать целостность данных.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее