Отправка запроса клиентом на заданный инстанс
Я, как разработчик приложения, хочу иметь возможность определения заданного шарда на клиенте для отправки запроса на конкретный инстанс.
Информация о распределении бакетов будет приходить от Пикодата в сообщении с мета информацией.
Описание механизма
Механизм реализован в Picodata 26.1, поэтому для реализации необходимо обновление пикодаты #62 (closed)
В linked/child задачах есть привязка подзадач, необходимый для реализации механизма в Picopyn
В целом алгоритм вычисления следующий:
- получить метаданные запроса от пикодата, необходимые для вычисления bucket id (начиная с пикодата 26.1)
- закешировать мету запроса
- для конкретных данных:
- вычислить bucket id на основе мета по формуле
- смаппить bucket_id -> replicaset master uuid (карта бакетов и топология)
- выбрать из пула соединение по uuid узла (если таковое имеется или использовать стандартный механизм выбора соединения) и отправить на него запрос с данными
Ограничения
Edited by Asya Lomakina