Говоря о высокопроизводительном кластере баз данных — разделение чтения и записи

задняя часть база данных MySQL открытый источник
Говоря о высокопроизводительном кластере баз данных — разделение чтения и записи
作者 陈彩华 贝聊Java后端工程师
文章转载交流请联系 caison@aliyun.com

Недавно я изучил учебник по архитектурному проектированию по разделению чтения и письма от Ли Юньхуа, старшего технического эксперта Alibaba.Я многому научился.Позвольте мне подытожить.

Эта статья в основном знакомит с теорией, базовой архитектурой, проблемами сложности и общими решениями разделения чтения и записи высокопроизводительного кластера базы данных.

1 Обзор разделения чтения-записи

读写分离概述

Схема базовой архитектуры:

基本架构图.jpg

2 Применимые сценарии

适用场景.png

Разделение чтения-записи — это не серебряная пуля, и это не вопрос разделения чтения-записи, как только возникает проблема с производительностью., но должны быть оптимизированы в первую очередь, например, оптимизация медленных запросов, корректировка необоснованной бизнес-логики, введение кэш-запросов и т. д. Только после того, как будет определено, что в системе нет места для оптимизации, следует рассматривать кластер разделения чтения-записи.

3 Введена сложность системы

Проблема 1 Задержка репликации Master-Slave

主从复制延迟.png

Вопрос 2 Механизм распределения

Как разделить операции чтения и записи, а затем получить доступ к разным серверам баз данных?

Решение 1 Реализация инкапсуляции кода клиентской программы

Схема базовой архитектуры

程序代码封装实现分配基本架构图

程序代码封装

Внедрение отраслевого ПО с открытым исходным кодом

  • Sharding-JDBC Позиционируемый как облегченная платформа Java, он предоставляет дополнительные услуги на уровне Java JDBC. Он использует клиент для прямого подключения к базе данных и предоставляет услуги в виде пакетов jar без дополнительного развертывания и зависимостей.Его можно понимать как расширенную версию драйвера JDBC, полностью совместимую с JDBC и различными ORM-фреймворками.

Sharding-JDBC基本架构图

  • Таобао ТДДЛ Taobao разработала структуру TDDL (уровень распределенных данных Taobao) в соответствии с собственными потребностями бизнеса, которая в основном используется для решения маршрутизации доступа (взаимодействия между уровнем сохраняемости и уровнем доступа к данным) в сценарии подбазы данных и подбазы данных. синхронизация таблиц и данных между разнородными базами данных.Это реализация JDBC DataSource, основанная на централизованной конфигурации, с такими функциями, как подтаблица подбазы данных, Master/Salve и конфигурация динамического источника данных.

淘宝TDDL基本架构图

Решение 2. Инкапсуляция промежуточного программного обеспечения на стороне сервера

Схема базовой архитектуры

服务端中间件封装实现分配基本架构图

服务端中间件封装

Внедрение отраслевого ПО с открытым исходным кодом

  • MySQL официально рекомендуемый маршрутизатор MySQL

MySQL Router架构图

MySQL Router — это легкое промежуточное ПО, которое обеспечивает прозрачную маршрутизацию между приложениями и любыми внутренними серверами MySQL. Его можно использовать для самых разных вариантов использования, таких как обеспечение высокой доступности и масштабируемости за счет эффективной маршрутизации трафика базы данных на соответствующий внутренний сервер MySQL. Подключаемая архитектура также позволяет разработчикам расширять MySQL Router для пользовательских вариантов использования.

На базе MySQL Router могут быть реализованы такие функции, как разделение чтения и записи, автоматическое переключение при отказе, балансировка нагрузки и объединение соединений.

  • MySQL Proxy официально предоставлен MySQL

    MySQL Proxy

  • 360 Атлас с открытым исходным кодом

Atlas架构图形象表示

Atlas总体架构

Atlas — это проект среднего уровня данных, основанный на протоколе MySQL, который разрабатывается и поддерживается командой инфраструктуры отдела платформ. Он оптимизирован на базе mysql-proxy и дополнен некоторыми новыми функциями.

Сравнение общего промежуточного программного обеспечения базы данных с открытым исходным кодом

Функции Sharding-JDBC TDDL Amoeba Cobar MyCat
Клиент-или сервер клиент клиент Сервер Сервер Сервер
Подбиблиотека и подтаблица имеют имеют имеют имеют имеют
Интерактивный протокол MySQL JDBC Driver JDBC Driver Интерфейс с NIO, сервер с JDBC Driver Внешний интерфейс с NIO, внутренний с BIO И передняя, ​​и задняя части используют NIO
поддерживаемые базы данных любой любой любой MySQL любой

Более интересно, добро пожаловать на официальный аккаунт автора [архитектура распределенной системы]

Ссылаться на

Изучаем архитектуру с 0 - Ли Юньхуа

Анализ принципа Mycat-Анализ архитектуры Mycat