Модуль experimental.connpool
Начиная с: 3.1.0
Модуль experimental.connpool предоставляет набор средств для
подключения к удаленным экземплярам кластера и выполнения удаленных
вызовов процедур на экземпляре, удовлетворяющем заданным критериям.
Чтобы загрузить модуль experimental.connpool, используйте директиву
require():
local connpool = require('experimental.connpool')
Ниже приведен перечень всех функций модуля experimental.connpool.
Имя | Назначение |
|---|---|
Выполняет указанную функцию на удаленном экземпляре | |
Создает подключение к указанному экземпляру | |
Возвращает имена экземпляров, соответствующих заданным условиям |
Выполняет указанную функцию на удаленном экземпляре.
Параметры:
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' })
Создает подключение к указанному экземпляру.
Параметры:
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().
Возвращает имена экземпляров, соответствующих заданным условиям.
Параметры:
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' } })