В версии Apache ShardingSphere 5.0.0 GA мы добавили новую концепцию режима работы и предоставили три метода настройки: память, автономный режим и кластер. Почему ShardingSphere предоставляет эти режимы работы? Каковы различия между ними в реальных сценариях развития?

Эта статья поможет вам лучше понять новые режимы работы ShardingSphere.

История: распределенное управление

Распределенное управление — это основа развертывания кластера в ShardingSphere. В предыдущих версиях пользователям необходимо было настроить тег управления в файле конфигурации, чтобы включить распределенное управление:

governance:
name: # Governance Name
 registryCenter: # Configuration Center 
 type: # Governance Persistence Governance Type such as Zookeeper             and etcd
serverLists: # Governance Service Lists, including IP address and   port number (comma-separated), such as host1:2181,host2:2181 
overwrite: #Decide whether the local configuration overwrites the configuration of the configuration center. If yes, after every startup, the local configuration still works.

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

Они же являются базовыми возможностями поддержки Распределенного SQL (DistSQL). В предыдущих историях о ShardingSphere 5.0.0 основные разработчики DistSQL подробно рассказали о концепции DistSQL, его синтаксисе и использовании, а также продемонстрировали, как можно разработать свой собственный DistSQL.

Напомним, что DistSQL предоставляет пользователям ShardingSphere возможности работы с базами данных: пользователи могут использовать DistSQL для построения и управления всей экосистемой распределенных баз данных ShardingSphere.

Как и другие стандартные SQL, DistSQL, известный как рабочий язык экосистемы распределенных баз данных, должен гарантировать, что любые метаданные конфигурации и операций могут быть сохранены, чтобы сохранить согласованность данных при восстановлении системы.

В предыдущих версиях эту функцию можно было реализовать только при включенном распределенном управлении. Вот почему DistSQL был доступен только в сценарии распределенного управления на ранней стадии разработки.

Почему мы создали режимы работы

Основываясь на возможностях развертывания кластера, предоставляемых текущей функцией распределенного управления, ShardingSphere теперь переопределяет свои возможности распределения как Режим кластера.

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

Режим естественным образом поддерживает DistSQL: в этом режиме вы можете использовать DistSQL для выполнения операций на узлах вычислений/хранилищ, таких как подключение узла к сети/офлайн или отключение.

В прошлом DistSQL был ограничен распределенными сценариями. Чтобы решить эту проблему, ShardingSphere сначала нужно выяснить, как можно хранить метаданные в нераспределенной среде. Самое простое решение — записать метаданные в локальные файлы, поэтому при перезапуске службы метаданные могут быть загружены из локальных файлов в соответствии с различными конфигурациями.

В отличие от режима кластера, используемого в распределенном сценарии, локальные файлы не могут совместно использовать конфигурации между несколькими экземплярами ShardingSphere в режиме реального времени. В автономном режиме все обновления конфигурации работают только в соответствующих экземплярах.

ShardingSphere 5.0.0 не только предоставляет пользователям улучшенные функции, но также создает стабильные и удобные API для оптимизации взаимодействия с пользователем.

В дополнение к режиму кластера и автономному режиму есть еще один полезный режим, который называется Режим памяти. Почему мы разработали его? Потому что некоторым пользователям нужно быстро начать интеграцию ShardingSphere, но не нужна постоянная настройка. Например, некоторые могут использовать ShardingSphere для быстрой проверки некоторых функций или просто для проверки интеграции. Учитывая такое требование сценария, мы создали режим памяти.

На данный момент ShardingSphere имеет три режима: Memory, Standalone и Cluster. Рабочие режимы несложно понять с точки зрения дизайна нашего API, и они идеально подходят для реальных сценариев использования ShardingSphere. Кроме того, три режима работы могут поддерживать DistSQL для быстрого создания служб распределенных баз данных и управления ими.

Метод конфигурации governance удален из версии 5.0.0, и вместо этого мы начинаем использовать другие режимы работы.

mode:
 type: # Mode Type Standalone/Cluster
 repository:
 type: # Persistence Type, Different modes have different implementations: Standalone-File and Cluster-ZooKeeper/Etcd
 props: # Different persistence types have different user-defined configurations. 
 …
 overwrite: false # Decide whether to use local configuration to overwrite local/remote configuration

Далее я хотел бы подробно объяснить основные концепции трех режимов работы и показать вам, как выбрать правильный режим работы при использовании ShardingSphere для разработки.

Концепции и сценарии применения

Режим памяти

Память — это режим работы по умолчанию, поэтому вам не нужно настраивать mode. В этом режиме пользователям не нужно настраивать какие-либо компоненты или стратегии сохраняемости, поскольку любое изменение метаданных, вызванное локальной конфигурацией инициализации или операцией SQL/DistSQL, работает только в текущем потоке, а конфигурации восстанавливаются после перезапуска службы.

Режим «Память» идеально подходит для интеграционного тестирования: он удобен тем, что разработчикам не нужно очищать текущие трассировки после интеграции ShardingSphere и проведения интеграционного тестирования.

Автономный режим

Автономный режим ShardingSphere по умолчанию предоставляет локальным файлам метод сохранения. Он может сохранять информацию метаданных (например, источники данных и правила) в локальные файлы, поэтому даже при перезапуске службы конфигурации можно будет считывать из локальных файлов для обеспечения согласованности метаданных.

Автономный режим позволяет инженерам-разработчикам быстро создавать локальную среду разработки для ShardingSphere, тестировать интеграцию и проверять функции.

Конфигурация режима показана следующим образом:

mode:
 type: Standalone
 repository:
 type: File
 props:
 path: …
 overwrite: false

В автономном режиме по умолчанию могут сохраняться локальные файлы. Конфигурации по умолчанию сохраняются в пользовательском каталоге .shardingsphere, но вы также можете настроить путь к хранилищу, настроив path.

Режим кластера

Мы рекомендуем применять режим кластера в реальном развертывании и рабочей среде. Кроме того, если вы используете гибридную архитектуру развертывания с JDBC и прокси-сервером, вы должны использовать режим кластера.

Этот режим может обеспечивать возможность распределенного управления. Интегрируя независимо развернутый сторонний центр регистрации, режим может реализовать постоянство метаданных, совместно использовать данные между несколькими экземплярами и реализовать координацию состояния в распределенном сценарии. Кластерный режим также является причиной того, что горизонтальное масштабирование ShardingSphere может значительно улучшить вычислительные возможности и заложить основу для основных функций, таких как высокая доступность.

Мы возьмем Zookeeper в качестве примера, чтобы продемонстрировать настройку режима:

mode:
 type: Cluster
 repository:
 type: ZooKeeper
 props:
 namespace: governance_ds
 server-lists: localhost:2181
 retryIntervalMilliseconds: 500
 timeToLiveSeconds: 60
 maxRetries: 3
 operationTimeoutMilliseconds: 500
 overwrite: false

Мы также сравниваем различия между тремя режимами (показаны в таблице ниже). Мы предлагаем вам сначала подумать о своих потребностях, а затем выбрать правильный режим.

Сводка

Три режима работы ShardingSphere могут удовлетворить практически все потребности пользователей в различных средах: от тестирования до разработки и развертывания.

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

Ссылки на проекты с открытым исходным кодом Apache ShardingSphere:

ШардингСфера Гитхаб

ШардингСфера Твиттер

Slack-канал ShardingSphere

Руководство автора

Автор

Мэн Хаоран

Старший инженер-разработчик SphereEx и PMC Apache ShardingSphere.

Ранее он отвечал за исследования и разработки продуктов баз данных в JingDong Technology, он увлечен экосистемами с открытым исходным кодом и базами данных. В настоящее время он занимается разработкой экосистемы базы данных ShardingSphere и созданием сообщества с открытым исходным кодом.