2010-07-27 20 views
6

Estoy trabajando en asp.net (novato) y estoy tratando de entender lo que significa hacer "balanceo de carga" para el sitio web. El sitio web será utilizado por múltiples usuarios y recursos (base de datos, servicio web, ...).Equilibrio de carga ASP.Net

Si alguien me puede ayudar a entender el concepto de equilibrio de carga para el sitio web asp.net, realmente lo agradecería.
Gracias.

Respuesta

1

¿Qué es? El equilibrio de carga simplemente se refiere a la distribución de una carga de trabajo entre dos o más computadoras. Como concepto, no es exclusivo de asp.net. Aunque tener máquinas separadas para su base de datos y servidor web podría denominarse "equilibrio de carga", comúnmente se refiere al uso de varias máquinas para cumplir un solo rol, como tener múltiples servidores web.

¿Debería preocuparse por ello? Probablemente no. ¿Ya tienes un problema de rendimiento? ¿Están su base de datos y su servidor web en sus propias máquinas? Si encuentra que los recursos de su servidor están agotados, probablemente sería más fácil escalar (una sola máquina más poderosa) que salir (equilibrio de carga). En estos días, una caja dedicada puede manejar MUCHO tráfico si su código es decente.

+0

Una cosa en que pensar para "¿debería preocuparse?" pregunta: si está creando sitios web para clientes, siempre es bueno entender estas cosas. Me han picado en el pasado al hacer que un cliente decidiera alojar un sitio en múltiples servidores web de carga equilibrada, cuando nunca se había desarrollado con eso en mente. Si usted no controla el entorno de alojamiento usted mismo, es genial entender todas las posibilidades. – Carson63000

+0

Eso es verdad. Pero si el cliente tiene un novato autoproclamado tratando de hacer frente a algo con ese tipo de posibilidades, es probable que las cosas no terminen bien independientemente de si intenta planificar el equilibrio de carga o no. Ser capaz de anticipar ese tipo de cosas y ejecutar bien no es una cuestión sencilla. – Larsenal

0

El equilibrio de carga, en el sentido de programación, no se aplica a ASP.NET; se aplica a una técnica para tratar de distribuir la carga del servidor a través de dos o más máquinas, en lugar de que todo se use en una máquina. A menos que tenga muchos miles (millones) de usuarios, probablemente no tenga que preocuparse por ello.

Compruebe el Wikipedia article para obtener más información.

0

El equilibrio de carga no es específico para ninguna pila de tecnología asp.net, jsp, etc. El equilibrio de carga consiste en distribuir las solicitudes entrantes a un sitio web en más de un servidor. Esto generalmente se hace con un equilibrador de carga de software o hardware. El equilibrador de carga se encuentra frente a dos o más servidores web y delega el tráfico entrante. Aunque esta técnica no se limita a los servidores web. Load Balancing

¡Disfrútalo!

-2

Debo añadir que realmente no es algo de lo que preocuparse. En el momento en que necesite un equilibrador de carga, es probable que pueda pagar uno de los nuevos con sesiones adhesivas para que no tenga que lidiar con el boogeyman de la sesión.

4

Un problema relacionado con el equilibrio de carga que puede que desee conocer en el momento del desarrollo: dónde almacena su estado de sesión. This MSDN article ofrece una buena visión general de sus opciones.

Si implementa su sistema asp.net utilizando gestión de estado de sesión "fuera de proceso" o "sql-server-mode", eso le dará cierta flexibilidad adicional más adelante, si decide introducir un equilibrador de carga a su sistema desplegado:

  1. Su equilibrador de carga no necesita gestionar la afinidad de la sesión. Como un cartel mencionado anteriormente, todos los equilibradores de carga modernos lo manejan de todos modos, por lo que esta es una consideración menor en cualquier caso.
  2. Web-gardens (una especie de equilibrador de carga implementado por IIS/servidor) REQUIERE el uso de gestión de estado de sesión "fuera de proceso" o "sql-server-mode". Entonces, si su sistema ya está configurado de esa manera, estará un paso más cerca de poder usar los jardines web.
0

Nunca lo he usado, pero la opción es IIS Application Request Routing.

Inventario de Aplicación Solicitud de enrutamiento (ARR) 2.0 permite a los administradores de servidor Web, los proveedores de alojamiento y contenido redes de distribución (CDN) para aumentar la escalabilidad de la aplicación Web y fiabilidad a través basado en reglas enrutamiento, cliente y el host nombrar afinidad, equilibrio de carga de HTTP peticiones al servidor, y el disco distribuido almacenamiento en caché

0

En un escenario típico de servidor/base de datos de la web, el PP es casi alwa Está garantizado que cargará la máquina primero. Esto es porque lidiar con el almacenamiento de datos requiere más recursos. Antes de comenzar a buscar el equilibrio de carga en su servidor web, debe pensar en cómo equilibrar la carga de la base de datos.

Difundir una base de datos en varios servidores es mucho más difícil que equilibrar la carga de un servidor web. Una de las técnicas que se puede usar es sharding (o partición horizontal). Aquí es donde se almacenan algunos registros en un servidor y otros registros, en otro servidor. Por ejemplo, los registros con ID 1-900000 están en el servidor 1 y los registros 900001 están en el servidor 2.

En comparación con el equilibrio de carga DB, distribuir la carga entre múltiples servidores ASP.NET no es demasiado complicado. La mayoría de los problemas de la sesión pueden mitigarse fácilmente mediante el uso de una sesión fuera de proceso y/o sin hablar directamente con Application.Cache. El balance de carga de datos, por otro lado, es difícil y requiere mucha planificación y prueba y error. En la mayoría de los casos, hablar con un DB con equilibrio de carga requiere el uso de un ORM que lo admita (por ejemplo, NHibernate) o su propia capa de acceso a datos. La razón es que debe establecer establecer una conexión desde el código que usa la base de datos, de modo que la decisión con la que hablar con DB se maneje en un solo lugar.

0

la solución exacta es guardar la sesión en el servidor SQL con el procedimiento almacenado. Para leer la sesión llame a 'SessionCheck' almacenado Procedimiento.

Cuestiones relacionadas