Cómo escribir una base de datos distribuida
Hasta cierto punto, la base de datos es el núcleo de todo el sistema. Esta frase en realidad no es una exageración. La selección de la base de datos está relacionada con todos los aspectos de la implementación del código comercial de la capa superior. La solución arquitectónica más popular ahora es la lógica empresarial de nivel superior con microservicios y combinada con almacenamiento en caché distribuido. Este marco básicamente puede lograr la expansión elástica del negocio de nivel superior, pero el almacenamiento de datos de nivel inferior aún es difícil de descentralizar. (a menos que la base de datos relacional (RDBMS) se elimine de toda la pila de tecnología), todo utilizando NoSQL). Por lo tanto, a menudo es el RDBMS el que se convierte en el cuello de botella de todo el sistema.
En la lucha a largo plazo, todos han resumido muchas formas de expandir la base de datos relacional de nivel más bajo:
1. , a través de la cola Solicitud de almacenamiento temporal... Estas soluciones en realidad no resuelven el problema. La escritura sigue siendo un solo punto y plantea un desafío relativamente grande para el DBA. No lo discutiremos hoy.
2. A través de la fragmentación de middleware, las soluciones comunes de código abierto incluyen: Cobar, TDDL, Vitess, Kingshard, MyCat, etc. La idea de estas soluciones es interceptar solicitudes SQL y reenviarlas a través de una clave de fragmentación. y ciertas reglas. / Transmitir a diferentes instancias de MySQL para lograr el efecto de expansión horizontal. Esta solución básicamente resuelve el problema de la escritura de un solo punto. Para las empresas, el rendimiento general también se ve bien. Es una solución a los cuellos de botella en el rendimiento para la mayoría de los problemas comerciales, pero también tiene desventajas:
1) La mayoría del middleware no resuelve el problema de la expansión dinámica y utiliza principalmente estrategias de enrutamiento estático, y la expansión generalmente aún se mantiene. en el estado del manual x2. Los requisitos para DBA son relativamente altos.
2) Hasta cierto punto, las transacciones se abandonan. Esto se debe a que una declaración puede involucrar múltiples instancias de bases de datos. La implementación de transacciones distribuidas es un asunto relativamente difícil.
3) No es transparente para la empresa y necesita especificar la clave de fragmentación, lo que supone una gran carga mental