Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

Модуль experimental.connpool

Начиная с: 3.1.0

Модуль experimental.connpool предоставляет набор средств для подключения к удаленным экземплярам кластера и выполнения удаленных вызовов процедур на экземпляре, удовлетворяющем заданным критериям.

Загрузка модуля

Чтобы загрузить модуль experimental.connpool, используйте директиву require():

local connpool = require('experimental.connpool')

Справочник по API

Ниже приведен перечень всех функций модуля experimental.connpool.

Имя

Назначение

connpool.call()

Выполняет указанную функцию на удаленном экземпляре

connpool.connect()

Создает подключение к указанному экземпляру

connpool.filter()

Возвращает имена экземпляров, соответствующих заданным условиям

Функции

connpool.call(func_name, args, opts)

Выполняет указанную функцию на удаленном экземпляре.

Параметры:

  • func_name (string) — имя функции для выполнения.
  • args (table/nil) — аргументы функции.
  • opts (table/nil) — параметры для отбора кандидатов, на которых должна быть выполнена функция:
    • labelsметки, назначенные экземпляру.
    • rolesроли экземпляра.
    • prefer_local – определяет, какой экземпляр предпочитать для выполнения call() — локальный или удаленный:
      • если true (по умолчанию), call() пытается выполнить указанную функцию на локальном экземпляре.
      • если false, call() пытается подключиться к случайному кандидату, пока подключение не будет установлено.
    • mode – режим, позволяющий фильтровать кандидатов по статусу чтения. Этот параметр принимает следующие значения:
      • nil (по умолчанию) – не проверять статус чтения экземпляров.
      • ro – рассматривать только экземпляры, доступные для чтения.
      • rw – рассматривать только экземпляры, доступные для записи.
      • prefer_ro – рассматривать экземпляры, доступные для чтения, затем доступные для записи.
      • prefer_rw – рассматривать экземпляры, доступные для записи, затем доступные для чтения.
    • instances – имена экземпляров, рассматриваемых в качестве кандидатов.
    • replicasets – имена наборов реплик, экземпляры которых рассматриваются в качестве кандидатов.
    • groups – имена групп, экземпляры которых рассматриваются в качестве кандидатов.
    • timeout – время ожидания подключения (в секундах).
    • bufferбуфер, используемый для чтения возвращаемого значения.
    • on_push – функция, выполняемая при получении клиентом внеполосного сообщения. Подробнее см. box_session-push.
    • on_push_ctx – аргумент функции, выполняемой при получении клиентом внеполосного сообщения. Подробнее см. box_session-push.
    • is_async – определяет, следует ли дожидаться результата вызова.

Возвращает

возвращаемое значение функции.

Пример:

В примере ниже заданы следующие условия для выбора экземпляра, на котором будет выполнена функция vshard.storage.buckets_count:

  • Экземпляр имеет роль roles.crud-storage.
  • Экземпляру назначена метка dc со значением east.
  • Экземпляр доступен только для чтения.
local connpool = require('experimental.connpool')local buckets_count = connpool.call('vshard.storage.buckets_count',        nil,        { roles = { 'roles.crud-storage' },          labels = { dc = 'east' },          mode = 'ro' })

connpool.connect(instance_name, opts)

Создает подключение к указанному экземпляру.

Параметры:

  • instance_name (string) — имя экземпляра.
  • opts (table/nil) — ни один, любой или все из следующих параметров:
    • connect_timeout – время ожидания подключения (в секундах).
    • wait_connected – определяет, следует ли блокировать подключение до его установления:
      • если true (по умолчанию), подключение блокируется до установления.
      • если false, подключение возвращается немедленно.
    • fetch_schema – определяет, следует ли получать изменения схемы с удаленного экземпляра.

Возвращает

подключение net.box.

Пример:

В примере ниже connect() используется для создания активного подключения к storage-b-002:

local connpool = require('experimental.connpool')local conn = connpool.connect("storage-b-002", { fetch_schema = true })

После установки подключения можно выполнять запросы к удаленному экземпляру, например, выбирать данные из спейса с помощью conn.space.<space_name>:select().

connpool.filter(opts)

Возвращает имена экземпляров, соответствующих заданным условиям.

Параметры:

  • opts (table/nil) — ни один, любой или все из следующих параметров:
    • labelsметки, назначенные экземпляру.
    • rolesроли экземпляра.
    • mode – режим, позволяющий фильтровать кандидатов по статусу чтения. Этот параметр принимает следующие значения:
      • nil (по умолчанию) – не проверять статус чтения экземпляров.
      • ro – рассматривать только экземпляры, доступные для чтения.
      • rw – рассматривать только экземпляры, доступные для записи.
    • instances – имена экземпляров, рассматриваемых в качестве кандидатов.
    • replicasets – имена наборов реплик, экземпляры которых рассматриваются в качестве кандидатов.
    • groups – имена групп, экземпляры которых рассматриваются в качестве кандидатов.

Возвращает

массив имен экземпляров.

Пример:

В примере ниже filter() должен вернуть список экземпляров с ролью roles.crud-storage и указанным значением метки:

local connpool = require('experimental.connpool')local instance_names = connpool.filter({ roles = { 'roles.crud-storage' },                                         labels = { dc = 'east' } })