Subbase de datos y tabla de ShardingSphere (1): modelo de arquitectura de alto rendimiento

Después del auge de los negocios en Internet, con las características de usuarios masivos y datos masivos, un único servidor de base de datos no ha podido satisfacer las necesidades comerciales y se deben considerar grupos de bases de datos para mejorar el rendimiento. Clúster de bases de datos de alto rendimiento 第一种方式是“读写分离”.第二种方式是“数据库分片”

1. Arquitectura de separación de lectura y escritura

**Principio de separación de lectura y escritura:** El principio básico de la separación de lectura y escritura es dispersar las operaciones de lectura y escritura de la base de datos en diferentes nodos. El siguiente es su diagrama de arquitectura básica:

Insertar descripción de la imagen aquí

Implementación básica de la separación de lectura y escritura:

  • 主库负责处理事务性的增删改操作,从库负责处理查询操作, puede evitar eficazmente los bloqueos de filas causados ​​por las actualizaciones de datos, lo que mejora en gran medida el rendimiento de las consultas de todo el sistema.
  • La separación entre lectura y escritura es 根据 SQL 语义的分析, 将读操作和写操作分别路由至主库与从库.
  • A través 一主多从del método de configuración, las solicitudes de consulta se pueden distribuir uniformemente en múltiples copias de datos, lo que puede mejorar aún más las capacidades de procesamiento del sistema.
  • El método utilizado 多主多从no solo puede mejorar el rendimiento del sistema, sino también la disponibilidad del sistema, de modo que incluso si alguna base de datos está inactiva o incluso el disco está físicamente dañado, el funcionamiento normal del sistema no se verá afectado.

La siguiente figura muestra una solución para enrutar operaciones de escritura y lectura de tablas de usuario a diferentes bases de datos según las necesidades comerciales:
Insertar descripción de la imagen aquí

Teoría de la PAC:

El teorema CAP, también conocido como teorema de Brewer, es una conjetura propuesta por Eric Brewer, un científico informático de la Universidad de California, Berkeley, en el ACM PODC en 2000.对于设计分布式系统的架构师来说,CAP 是必须掌握的理论。

En uno 分布式系统中, cuando se trata de operaciones de lectura y escritura, solo se pueden garantizar dos de los tres (Consistencia), Disponibilidad (Disponibilidad) y Tolerancia de partición (Tolerancia de partición), y el otro debe sacrificarse.

  • Consistencia C: para un cliente específico, se garantiza que las operaciones de lectura devolverán los resultados de las operaciones de escritura más recientes.
  • A Disponibilidad: los nodos no defectuosos devuelven respuestas razonables en un tiempo razonable(不是错误和超时的响应)
  • P Tolerancia de partición: cuando se produce una partición de red (可能是丢包,也可能是连接中断,还可能是拥塞), el sistema puede continuar "cumpliendo con sus funciones"

Características de la PAC:

  • En el proceso de diseño real, cada sistema no puede procesar solo un tipo de datos, sino que contiene múltiples tipos de datos.有的数据必须选择 CP,有的数据必须选择 AP,分布式系统理论上不可能选择 CA 架构。

    • CP: como se muestra en la figura siguiente, 为了保证一致性cuando se produce una partición, los datos en el nodo N1 se han actualizado a y, pero debido a la interrupción del canal de replicación entre N1 y N2, los datos y no se pueden sincronizar con N2, y los datos en el nodo N2 siguen siendo x . 这时客户端 C 访问 N2 时,N2 需要返回 Error,提示客户端 C“系统现在发生了错误”,Este método de procesamiento 违背了可用性(disponibilidad) requiere que CAP solo pueda satisfacer CP.

    Insertar descripción de la imagen aquí

    • AP: Como se muestra en la figura siguiente, 为了保证可用性cuando se produce una partición, los datos en el nodo N1 se han actualizado a y, pero debido a la interrupción del canal de replicación entre N1 y N2, los datos y no se pueden sincronizar con N2, y los datos en el nodo N2 siguen siendo x . 这时客户端 C 访问 N2 时,N2 将当前自己拥有的数据 x 返回给客户端 C 了De hecho, los datos más recientes ya son y, que es 不满足一致性el requisito de (consistencia), por lo que los tres de CAP solo pueden satisfacer AP. Nota: El nodo N2 aquí devuelve x, que no es un resultado "correcto", sino un resultado "razonable", porque x son datos antiguos, no un valor desordenado, pero no los datos más recientes.

Insertar descripción de la imagen aquí

  • En la teoría CAP C 在实践中是不可能完美实现的, durante el proceso de replicación de datos, los datos del nodo N1 y el nodo N2 no son consistentes (fuerte consistencia). Incluso si esto no es posible 强一致性, la aplicación puede lograrlo de forma adecuada 最终一致性. Tiene las siguientes características:

    • Básicamente disponible: cuando ocurre una falla en un sistema distribuido, se permite perder la disponibilidad parcial, es decir, se garantiza la disponibilidad del núcleo.
    • Estado suave: permite que el sistema exista en un estado intermedio sin afectar la disponibilidad general del sistema. El estado intermedio aquí es la inconsistencia de los datos en la teoría CAP.
    • 最终一致性(Eventual Consistency):系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。

2. Arquitectura de fragmentación de bases de datos

El problema de la separación de lectura y escritura:

La separación de lectura y escritura dispersa la presión de las operaciones de lectura y escritura de la base de datos, pero no dispersa la presión del almacenamiento. Para satisfacer las necesidades del almacenamiento de datos comerciales, es necesario 将存储分散到多台数据库服务器上.

Fragmentación de datos:

Distribuya los datos almacenados en una única base de datos en varias bases de datos o tablas para mejorar los cuellos de botella en el rendimiento y la disponibilidad. Un medio eficaz de fragmentación de datos es realizar bases de datos relacionales 分库和分表. Los métodos de división de datos se dividen en 垂直分片和水平分片.

2.1 Fragmentación vertical

Subbiblioteca vertical:

按照业务拆分的方式称为垂直分片,又称为纵向拆分, su concepto central está dedicado a bases de datos especiales. Antes de dividirse, una base de datos constaba de varias tablas de datos, cada una de las cuales correspondía a un negocio diferente. Después de la división, las tablas se clasifican según el negocio y se distribuyen a diferentes bases de datos, distribuyendo así la presión a diferentes bases de datos.

Insertar descripción de la imagen aquí

La siguiente figura muestra la solución de fragmentar verticalmente la tabla de usuarios y la tabla de pedidos en diferentes bases de datos según las necesidades comerciales:

Insertar descripción de la imagen aquí

La división vertical puede aliviar los problemas causados ​​por el volumen y el acceso a los datos, pero no puede solucionarlos.如果垂直拆分之后,表中的数据量依然超过单节点所能承载的阈值,则需要水平分片来进一步处理。

Mesa vertical:

垂直分表适合将表中某些不常用的列,或者是占了大量空间的列拆分出去。

Supongamos que somos un sitio web de citas: cuando los usuarios filtran a otros usuarios, utilizan principalmente los campos de edad y sexo para realizar consultas, mientras que los campos de apodo y descripción se utilizan principalmente para mostrar y generalmente no se utilizan en consultas comerciales. La descripción en sí es relativamente larga, por lo que podemos separar estos dos campos en otra tabla, lo que puede aportar ciertas mejoras en el rendimiento al consultar edad y sexo.

La complejidad introducida por la fragmentación vertical de la tabla se refleja principalmente en el aumento en el número de operaciones de la tabla. Por ejemplo, antes era posible obtener nombre, edad, sexo, apodo y descripción con una sola consulta, ahora se requieren dos consultas, una para obtener nombre, edad y sexo, y otra para obtener apodo y descripción. .
Insertar descripción de la imagen aquí

水平分表适合表行数特别大的表,水平分表属于水平分片

2.2 Fragmentación horizontal

水平分片又称为横向拆分。En comparación con la fragmentación vertical, ya no clasifica los datos según la lógica empresarial, sino que los dispersa en varias bibliotecas o tablas a través de un determinado campo (o algunos campos) y de acuerdo con ciertas reglas. Cada fragmento solo contiene una parte de los datos. Por ejemplo: según la fragmentación de la clave primaria, los registros con claves primarias pares se colocan en la base de datos 0 (o tabla) y los registros con claves primarias impares se colocan en la base de datos 1 (o tabla), como se muestra en la siguiente figura.

Insertar descripción de la imagen aquí

单表进行切分后,是否将多个表分散在不同的数据库服务器中,可以根据实际的切分效果来确定。

  • **División de tabla horizontal:** Después de dividir una sola tabla en varias tablas, las nuevas tablas pueden aportar mejoras de rendimiento considerables incluso si están en el mismo servidor de base de datos. Si el rendimiento puede cumplir con los requisitos comerciales, no es necesario dividir en varias tablas Un servidor de base de datos, después de todo, las subbases de datos comerciales también introducirán mucha complejidad;

  • **Subbase de datos horizontal:** si una sola tabla se divide en varias tablas y un solo servidor aún no puede cumplir con los requisitos de rendimiento, entonces es necesario distribuir varias tablas en diferentes servidores de bases de datos.

Manual de desarrollo de Java de Alibaba:

[Recomendación] Se recomienda realizar la fragmentación de bases de datos y tablas solo si el número de filas en una sola tabla excede los 5 millones o la capacidad de una sola tabla excede los 2 GB.

Nota: Si la cantidad de datos esperada en tres años no alcanza este nivel en absoluto, 请不要在创建表时就分库分表.

3. Arquitectura de separación de lectura y escritura y fragmentación de datos

La siguiente figura muestra la compleja relación topológica entre la aplicación y el clúster de base de datos cuando se utiliza la fragmentación de datos junto con la separación de lectura y escritura.
Insertar descripción de la imagen aquí

4. Método de implementación

Generalmente existen dos formas específicas de implementar la separación de lectura y escritura y la fragmentación de datos: 程序代码封装y 中间件封装.

4.1 Encapsulación del código del programa

La encapsulación del código del programa se refiere a abstraer uno en el código 数据访问层(或中间层封装)para lograr la separación de las operaciones de lectura y escritura y la gestión de las conexiones del servidor de la base de datos.

** La arquitectura básica es: ** Tome la separación de lectura y escritura como ejemplo
Insertar descripción de la imagen aquí

4.2 Encapsulación de middleware

La encapsulación de middleware se refiere a 独立一套系统出来la separación de operaciones de lectura y escritura y a la gestión de conexiones del servidor de bases de datos. Para el servidor empresarial, no hay diferencia entre acceder al middleware y acceder a la base de datos. Desde la perspectiva del servidor empresarial, el middleware es un servidor de base de datos.

** La arquitectura básica es: ** Tome la separación de lectura y escritura como ejemplo

Insertar descripción de la imagen aquí

4.3 Soluciones comunes

Apache ShardingSphere (nivel de programa y nivel de middleware)

MyCat (middleware de base de datos)

Supongo que te gusta

Origin blog.csdn.net/weixin_44816664/article/details/132791278
Recomendado
Clasificación