Работа TCF с кластерами, запущенными в режиме синхронной репликации | Clusters_Federation
Руководство пользователя Работа TCF с кластерами, запущенными в режиме синхронной репликации

Работа TCF с кластерами, запущенными в режиме синхронной репликации

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

Примечание

Синхронная репликация поддерживается только внутри самих кластеров Tarantool. Репликация между кластерами TCF работает в асинхронном режиме.

Содержание:

Общие сведения

В кластерах Tarantool по умолчанию используется асинхронная репликация. Синхронную репликацию при этом можно настроить для отдельных спейсов. TCF предоставляет одинаковые гарантии для кластеров как с асинхронными, так и с синхронными спейсами. TCF отправляет транзакции на пассивный кластер в момент их записи (коммита):

  • синхронные транзакции – после репликации на определенном количестве экземпляров, в момент подтверждения транзакций;

  • асинхронные транзакции – сразу, не ожидая репликации на другие экземпляры.

Порядок выполнения коммитов соответствует порядку вызова метода box.commit() для каждой из транзакций, независимо от того, синхронные транзакции или асинхронные. Если для одной из синхронных транзакций истечет время ожидания, эта транзакция будет отменена (rollback). Вместе с ней будут отменены все последующие транзакции в очереди на репликацию. Транзакции отменяются в порядке, обратном порядку вызова box.commit() для каждой из них, независимо от того, синхронные транзакции или асинхронные.

Репликатор данных Gateway обрабатывает синхронные транзакции следующим образом:

  • пропускает в пассивный кластер транзакции, подтвержденные в активном кластере;

  • отбрасывает транзакции, отмененные в активном кластере, чтобы они не попали в пассивный кластер.

Компонент Destination обрабатывает полученные операции как асинхронные. Целевой спейс на пассивном кластере может быть как синхронным, так и асинхронным.

Внимание

Одновременное использование синхронных и асинхронных транзакций не рекомендуется. Если вы планируете использовать их совместно, свяжитесь с нами через форму обратной связи или напишите на sales@tarantool.io.

Включение синхронной репликации

Чтобы включить синхронную репликацию для спейса в кластере, задайте опцию space_opts.is_sync при создании или изменении этого спейса:

local space = box.schema.space.create('writers', { is_sync = true })

space:format({
    {name = 'id', type = 'number'},
    {name = 'bucket_id', type = 'number'},
    {name = 'name', type = 'string'},
    {name = 'age', type = 'number'},
})

space:create_index('primary', {parts = {'id'}})
space:create_index('bucket_id', {parts = {'bucket_id'}})

Примечание

Cинхронная репликация в кластерах с TCF настраивается так же, как и для кластеров Tarantool без TCF. Менять настройки компонентов Gateway и Destination при включении синхронной репликации в кластере не требуется.

Узнать больше:

Нашли ответ на свой вопрос?
Обратная связь