Допустим, у нас есть 5 микросервисов (µS), и для каждого микросервиса требуется одна база данных с несколькими таблицами.Каждый из этих сервисов должен иметь возможность масштабирования, включая запросы к базе данных.Для этого у нас есть несколько вариантов, о которых я знаю:
1.1-мкСм;1 экземпляр;1 экземпляр БД
Не масштабировать по горизонтали, а только по вертикали.
2.1-мкСм;N экземпляров;1 экземпляр БД
Каждый экземпляр службы получает возможность чтения и записи в одну и ту же базу данных.Простой способ масштабирования, если обработка службы является узким местом.
3.1-мкСм;N экземпляров;Кластер БД HA
Каждый экземпляр службы получает возможность чтения и записи в одну и ту же базу данных HA.Хороший способ масштабирования, если чтение / запись базы данных также является узким местом.Большая стоимость эксплуатации.
4.N-мкСм;N экземпляров;Кластер БД HA
Каждый экземпляр каждой службы получает возможность чтения и записи в один и тот же кластер базы данных HA.Каждый сервис использует свою собственную базу данных в кластере HA DB.
5.Другое
Существуют ли другие способы масштабирования базы данных вместе с сервисом, которому она требуется?
С каждым решением есть свои компромиссы, будь то производительность чтения или записи, стоимость операции и т. д., но какое было бы рекомендовано решение для масштабирования базы данных:
- при условии, что сервис и база данных равны так, чтобы при масштабировании сервиса требовалось масштабирование базы данных?
- суслуга, требующая большего времени обработки, а это означает, что служба должна масштабироваться, а не база данных?
- с базой данных, требующей больше времени обработки, чем служба?
Мое мнение таково, что если услугаhigh on пишет, тогда 3 или 4 - это решение, а для остальных 4 - решение.