В типичном сценарии веб-сервера / базы данных почти всегда гарантируется, что БД сначала загрузит машину.Это связано с тем, что для хранения данных требуется больше ресурсов.Прежде чем вы начнете смотреть на балансировку нагрузки вашего веб-сервера, вам нужно подумать о том, как сбалансировать нагрузку базы данных.
Распределение одной базы данных по нескольким серверам намного сложнее, чем балансировка нагрузки веб-сервера.Одним из методов, которые можно использовать, является sharding (или горизонтальное разбиение).Здесь некоторые записи хранятся на одном сервере, а другие - на другом.Например, записи с идентификатором 1-900000 находятся на сервере 1, а записи 900001 - на сервере 2.
По сравнению с балансировкой нагрузки на БД распределение нагрузки между несколькими серверами ASP.NET не слишком сложное.Большинство проблем сеанса можно легко устранить, используя сеанс вне процесса и / или никогда не обращаясь напрямую к Application.Cache
.Балансировка нагрузки на данные, с другой стороны, сложна и требует много планирования, проб и ошибок.В большинстве случаев для разговора с БД с балансировкой нагрузки необходимо использовать ORM, который его поддерживает (например, NHibernate), или собственный уровень доступа к данным.Причина в том, что вам нужно исключить установление соединения из кода, который использует базу данных, чтобы решение о том, с какой базой данных обращаться, обрабатывается в одном месте.