Основным преимуществом микросервисов является то, что один «тип» службы можно масштабировать, используя несколько экземпляров контейнеров и балансировку нагрузки для улучшения с помощью пут.
Но есть одна вещь: несколько экземпляров (т. Е. Контейнеров)«Тип сервиса» совместно используют один и тот же экземпляр базы данных;и это может привести к снижению производительности при записи / чтении нескольких экземпляров в этом экземпляре базы данных.
Традиционно мы увеличиваем вычислительную мощность этого экземпляра базы данных, чтобы удовлетворить высокий спрос.
Основные вопросы для меня: какова текущая лучшая практика / дизайн / решение для горизонтального / горизонтального масштабирования, чтобы мы могли иметь несколько экземпляров этой базы данных и иметь повышение производительности?
ВВ частности, я хочу заархивировать:
Один экземпляр не работает, другой экземпляр может справиться с нагрузкой -> Высокая доступность
Можетчтение баланса нагрузки или, возможно, даже запись в несколько экземпляров базы данных
Поддержание постоянства и согласованности данных в случае, если я хочу создать больше экземпляра базы данных
Насколько мне известно,
Одним из решений является Microsoft SQL Server, обеспечивающий высокую доступность для контейнеров SQL Server, которые могут выполнять большую частьтребования выше (https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-container-ha-overview?view=sql-server-2017). Но мне интересно, есть ли лучшее решение, позволяющее избежать блокировки технологии?
Еще одно решение, о котором я думаю: репликация на несколько экземпляров с использованием потока CDCДанные из основного экземпляра базы данных для нескольких копий.Это позволяет читать репликацию.
Но я все еще не убежден, потому что для обеспечения согласованности каждый экземпляр службы должен записывать в экземпляр master-database-instance, это также может стать узким местом для экземпляра master-базы данных.