Может ли Apache Thrift использовать несколько транспортов для одного сервера?

У меня есть сервер со многими облегченными методами и одним тяжеловесным методом. Кажется, я не могу найти доказательств того, что Apache Thrift поддерживает несколько транспортов для сервера. Что мне нужно, так это общая память для всех, кроме тяжеловесного метода, и TCP/IP (распределенный) для тяжеловесного метода. Я мог бы разбить его на два сервера, но это нарушает цель инкапсуляции (я думаю).


person Los Alamos Al    schedule 15.12.2015    source источник
comment
Нет, не может. Почему транспорт актуален? Если метод тяжелый, я не вижу, как изменение транспорта повлияет на производительность этого конкретного метода.   -  person m0skit0    schedule 16.12.2015
comment
Ой, простите, это так медленно, что требует гораздо больше мощности, чем вызывающий код. Допустим, код приложения распределен по 20 серверам. Локальные методы настолько быстры, что удаленное выполнение может привести к значительным накладным расходам (так что общей памяти на каждом сервере приложений вполне достаточно). Медленный метод может использовать огромные, специализированные, многоядерные узлы (и многие из них — скажем, тысячи по мере роста приложения), поэтому для них больше подходит распределенный транспорт — на самом деле он никогда не мог бы разумно завершиться, если бы был ограничен несколькими узлами. 20 узлов. Соотношение медленных и быстрых методов: в лучшем случае 100-1.   -  person Los Alamos Al    schedule 16.12.2015
comment
Я понимаю. Рассматривали ли вы возможность использования кластера вместо того, чтобы делать это вручную? Это позволит вашим 20 серверам вести себя так, как будто они являются одним целым, без необходимости кодирования.   -  person m0skit0    schedule 16.12.2015
comment
Мы можем иметь в виду разные вещи, когда говорим «кластер». Я работаю на кластерах HPC со строго ограниченными операционными средами (только Linux, Slurm, MPI). Я не могу запускать такие вещи, как Mesos, Aurora, AWS, балансировщики нагрузки и т. д. Я должен делать все сам. Многие приложения для высокопроизводительных вычислений статичны, но мое приложение эластично. Итак, я должен сам писать планирование, балансировку нагрузки и т. д. Похоже, что Thrift сделает это несколько проще, предоставив возможность асинхронного/синхронного RPC. Я также могу попробовать ZeroMQ для динамического обмена сообщениями (я могу запускать TCP/IP в сетях HPC).   -  person Los Alamos Al    schedule 16.12.2015


Ответы (1)


Если вы действительно имеете в виду транспорты - не напрямую. Что возможно, так это иметь обработчик как отдельный объект, который можно использовать повторно, например. с другим стеком протокола/транспорта.

Как это звучит, лучшим решением в вашем случае действительно было бы наличие двух серверов с двумя разными стеками протоколов/транспорта, использующих один и тот же код обработчика, но реализующих разные службы Thrift.

                              +----------------+
       +----- uses ---------> | LWService      | <-------+
       |                      +----------------+         |
       |                                             implements
       |                                                 |
+------+-----------+                               +-----+-----+
|                  |                               |           |
|                  |                               |           |
|  Client          |                               | Handler   |
|                  |                               |           |
|                  |                               |           |
|                  |                               |           |
|                  |                               |           |
|                  |                               +-----+-----+
+------+-----------+                                     |
       |                                              implements
       |                      +----------------+         |
       +---- uses ----------> | HeavyService   | <-------+
                              +----------------+
person JensG    schedule 15.12.2015
comment
Мне нужно некоторое время подумать об этом. Спасибо за ответ. - person Los Alamos Al; 16.12.2015