Apache ShardingSphere — это экосистема, состоящая из набора решений промежуточного программного обеспечения распределенных баз данных с открытым исходным кодом. Она состоит из JDBC, Proxy и Sidecar (в стадии планирования), трех продуктов, которые независимы друг от друга, но могут быть развернуты и использованы вместе. Все они обеспечивают стандартизированное сегментирование данных, распределенные транзакции и функции управления базами данных и могут применяться к различным сценариям приложений, таким как изоморфизм Java, гетерогенные языки, облачные технологии и т. д.
Apache ShardingSphere позиционируется как промежуточное ПО для реляционных баз данных, целью которого является полное и разумное использование вычислительных возможностей и возможностей хранения реляционных баз данных в распределенных сценариях, а не реализация новой реляционной базы данных. Он улавливает суть вещей, фокусируясь на неизменном. Реляционные базы данных сегодня по-прежнему занимают огромный рынок и являются краеугольным камнем основного бизнеса каждой компании. В будущем их будет трудно поколебать. На данном этапе мы больше сосредоточены на приращениях, основанных на исходной основе, а не на подрывной деятельности.
Apache ShardingSphere 5.x стал ориентирован на подключаемую архитектуру, а функциональные компоненты проекта можно гибко расширять подключаемым способом. В настоящее время такие функции, как сегментирование данных, разделение чтения и записи, множественные копии данных, шифрование данных и стресс-тестирование теневых баз данных, а также поддержка SQL и таких протоколов, как MySQL, PostgreSQL, SQLServer и Oracle, встроены в проект через плагины. Разработчики могут настраивать свою собственную уникальную систему так же, как используя стандартные блоки. Apache ShardingSphere в настоящее время предоставляет десятки SPI в качестве точек расширения системы, и их количество продолжает добавляться.
ШардингСфера-JDBC
Позиционируемый как облегченная платформа Java, он предоставляет дополнительные сервисы на уровне Java JDBC. Он использует клиент для прямого подключения к базе данных и предоставляет услуги в виде jar-пакетов без дополнительного развертывания и зависимостей. Его можно понимать как расширенную версию драйвера JDBC, и он полностью совместим с JDBC и различными платформами ORM.
Применимо к любой платформе ORM на основе JDBC, такой как: JPA, Hibernate, Mybatis, Spring JDBC Template или использовать JDBC напрямую.
Поддерживает любой сторонний пул соединений с базами данных, например: DBCP, C3P0, BoneCP, Druid, HikariCP и т. д.
Поддерживает любую базу данных, реализующую спецификацию JDBC. В настоящее время он поддерживает MySQL, Oracle, SQLServer, PostgreSQL и любую базу данных, соответствующую стандарту SQL92.
ShardingSphere-Прокси
Позиционируясь как прозрачный агент базы данных, он предоставляет сервер, который инкапсулирует двоичный протокол базы данных для поддержки гетерогенных языков. В настоящее время предоставляются MySQL и PostgreSQL. Он может использовать любой клиент доступа, совместимый с протоколом MySQL/PostgreSQL (например, MySQL Command Client, MySQL Workbench, Navicat и т. д.), для работы с данными, что делает его более удобным для администраторов баз данных.
Он полностью прозрачен для приложения и может использоваться непосредственно в качестве сервера MySQL/PostgreSQL.
Применимо к любому клиенту, совместимому с протоколом MySQL/PostgreSQL.
ShardingSphere-Sidecar (TODO)
Позиционируясь как облачный прокси-сервер базы данных для Kubernetes, он проксирует весь доступ к базе данных в форме Sidecar. Бесцентровое решение с нулевым вмешательством обеспечивает уровень взаимодействия, который взаимодействует с базой данных, а именно сетку базы данных, также известную как сетка базы данных.
Основное внимание в Database Mesh уделяется тому, как органично соединить приложения с распределенным доступом к данным и базами данных. Он больше фокусируется на взаимодействии и эффективной сортировке взаимодействий между беспорядочными приложениями и базами данных. При использовании сетки базы данных приложения и базы данных, которые обращаются к базе данных, в конечном итоге образуют огромную сеточную систему. Приложения и базы данных необходимо только зарегистрировать в сеточной системе. Все они являются объектами, управляемыми слоем сетки.
гибридная архитектура
ShardingSphere-JDBC использует децентрализованную архитектуру и подходит для высокопроизводительных легких приложений OLTP, разработанных на Java; ShardingSphere-Proxy обеспечивает статический ввод и поддержку гетерогенных языков, а также подходит для приложений OLAP, а также для управления и эксплуатации сегментированных баз данных.
Apache ShardingSphere — это экосистема, состоящая из нескольких терминалов доступа. Смешивая ShardingSphere-JDBC и ShardingSphere-Proxy и используя один и тот же центр регистрации для единой настройки стратегий сегментирования, можно гибко создавать системы приложений, подходящие для различных сценариев, что позволяет архитекторам более свободно настраивать лучшую систему для текущей бизнес-архитектуры.
1. Фрагментация данных
Подбиблиотека и подтаблица
Чтение и запись разделения
Настройка стратегии шардинга
Нецентрализованно распределенный первичный ключ
2. Распределенные транзакции
Стандартизированный интерфейс транзакций
XA строго согласованные транзакции
Гибкие дела
3. Управление базой данных
Распределенное управление
Эластичное масштабирование
Наблюдаемость (распределенная трассировка, метрики)
Шифрование и дешифрование данных
Тест давления теневого манометра