Balanceador de carga versus agrupación de conexiones: ¿hay alguna diferencia?


11

Estoy trabajando en un proyecto que se espera que sirva a millones de usuarios poco después del lanzamiento. La base de datos es postgres, y por ahora supongo que se necesitarán al menos dos servidores. Un administrador del sistema (que claramente conoce bien los sistemas escalables) ha sugerido colocar un equilibrador de carga entre los servidores web y los servidores de bases de datos.

Mi pregunta es con respecto a la diferencia del equilibrio de carga frente a la agrupación de conexiones. Para mantener el rendimiento, ¿debería mirar uno u otro, o ambos?


Son más o menos lo mismo. pgbouncer es el agrupador recomendado, pgpool II tiene más funciones pero es más complejo de configurar.
Scott Marlowe

Respuestas:


7

Con PostgreSQL, tiene dos áreas diferentes que pueden agrupar, ya sea en la capa de la aplicación (es decir, jdbc integrado en la agrupación, etc.) o en una capa intermedia que se encuentra entre la aplicación y la base de datos, como pgbouncer o pgpool.

Si agrupa en una capa intermedia, como pgbouncer o pgpool, entonces esa capa TAMBIÉN puede hacer el equilibrio de carga de consultas seleccionadas. Además, al equilibrar la carga, puede hacer escrituras de una de dos maneras: puede tener un solo maestro de escritura que se replica por otros medios a sus esclavos de lectura, utilizando una herramienta como slony o la replicación de transmisión integrada que apareció en la página 9.0 o superior, o puede hacer que el equilibrador de carga haga toda la escritura, de modo que las lecturas entrantes lleguen a un solo db, pero las escrituras golpeen cada base de datos para mantenerlas actualizadas.

O si eres advenidor, puedes mover la capa de equilibrio de carga hacia abajo otra capa en postgresql usando plproxy. Este es un lenguaje pl para pgsql diseñado para permitirle colocar una base de datos pg en el front end que no tiene datos reales, y esa base de datos puede ejecutarse sobre múltiples dbs posiblemente redundantes para un rendimiento increíble. Plpoxy es bastante complejo para configurarlo y ejecutarlo, pero también es bastante escalable. Tenga en cuenta que su aplicación debe reescribirse para admitirla, de modo que no se pueda lanzar bajo ninguna aplicación anterior y simplemente funcione.

http://slony.info/ http://wiki.postgresql.org/wiki/PL/Proxy http://pgpool.projects.postgresql.org/


3

El equilibrio de carga y la agrupación de conexiones son dos cosas muy diferentes.

La agrupación de conexiones (vengo de un lado del mundo de Microsoft, pero supongo que las cosas son similares) permite que la aplicación mantenga abierta la conexión a la base de datos para que pueda reutilizarla para la próxima consulta en lugar de tener que desconectarse y volver a conectarse para cada consulta que debe ejecutarse.

El equilibrio de carga le permite tener múltiples servidores de bases de datos detrás del equilibrador de carga para que pueda distribuir la carga en varios servidores en lugar de tener un solo servidor que maneje todo el trabajo.

Puede usar la agrupación de conexiones con equilibrio de carga, sin embargo, tenga en cuenta que, dado que las conexiones nunca se perderán, puede terminar con una carga no equilibrada entre los dos servidores de bases de datos.

Si un solo servidor de base de datos no puede manejar la carga de la aplicación, obtenga 3 servidores allí. De esa manera, puede reiniciar uno según sea necesario sin que la aplicación se bloquee.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.