Russian Qt Forum
Ноябрь 22, 2024, 00:40 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: RPC - обмен данными между распределёнными процессами  (Прочитано 9246 раз)
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« : Сентябрь 17, 2020, 12:14 »

Всем привет.

Кто имеет опыт в RPC, чтобы заставить два процесса, (теоретически) работающих на разных машинах (но могут и на одной физически быть запущены), "общаться" между собой?

Сокеты - это понятно, "дедовский метод не подводит". Но может быть есть что-либо более приятное для глаз? Улыбающийся
Например, gRPC?
Имеет смысл с ним связываться?
Или это ещё один слой метакомпиляции и проблем?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #1 : Сентябрь 17, 2020, 12:31 »

В продакшне опыта нет, но я изучал тему.
gRPC - старая и нажёдная технология, поддерживает различные языки, можно иметь сервер на одном языке, а клиент - на другом. Из недостаков - технология весьма старая и асинхронный код изобилует всякими void* и прочими прелестями из 90х.
flatbuffers+gPRC - всё тоже самое, но как протокол передачи даннных используются flatbuffers, которые ммапятся в память. Языков кроме с++ воде бы нет (питон, к примеру, я не нашел), плюс кгда я проверял, была несовместимость между новой libgprc и flatc - код просто не компилировался. Выглядит как не очень живая и развивающая технология.
Cap'n'proto RPC. Выглядит наиболее свежо, асинхронный код пишется с футурами, можно асинхронно чейнить коллы (не надо ждать пока колл А завершится чтобы передать его результат в колл Б). Написано тем же челом что изначально писал protobuf, так что чел знает грабли. Есть поддержка разных языков при помощи 3rdparty решений, но они все совместимы, также можно иметь сервер\клиент на разных языках. Выглядит наиболее адкеватно, но количество юзеров на порядки меньше, чем у gRPC.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #2 : Сентябрь 17, 2020, 14:01 »

Cap'n'proto RPC. Выглядит наиболее свежо, асинхронный код пишется с футурами, можно асинхронно чейнить коллы (не надо ждать пока колл А завершится чтобы передать его результат в колл Б). Написано тем же челом что изначально писал protobuf, так что чел знает грабли. Есть поддержка разных языков при помощи 3rdparty решений, но они все совместимы, также можно иметь сервер\клиент на разных языках. Выглядит наиболее адкеватно, но количество юзеров на порядки меньше, чем у gRPC.

Ну, судя по саморекламе, оно быстрее, чем gRPC.
Но всё таки метакомпилятор для него нужен... Это минус.
И API ужасен, конечно Грустный Такое впечатление, что это и не C++ вовсе...

Но спасибо за наводку, посмотрим, как оно себя в проекте поведёт...

Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #3 : Сентябрь 17, 2020, 14:43 »

По моим глупым замерам он в 2 раза быстрее чем gRPC, но цифры ИМХО слишком маленькиечто для того что для другого - я ожидал примерно на порядок быстрее (судя по цифрам из интернетов которые люди получают на Го или по тому, что говорил Пантер). Хз, где собака порылась.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #4 : Сентябрь 17, 2020, 14:47 »

Ну, в 2 раза - это уже неплохо. А изначальное время какого порядка было?
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #5 : Сентябрь 17, 2020, 14:52 »

Я сейчас не помню, но вроде бы для GRPC 10к синхронных, для capnproto - 20k для синхронных и 50к для асинхронных.
В энторнетах пишут про 90к для grpc, как этого добиться яхз.
Правда я тестил на виртуалке на лэптопе анально огороженном всяким софтом для безопасности, это могло влиять.
Я могу кинуть архив с бенчмарками, погоняете сами.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #6 : Сентябрь 17, 2020, 14:57 »

here we go

возможно будет сложно собрать, grpc на qbs, а capnproto на cmake
client/server - примеры
bench - бенчмарк, запускать при запущенном сервере
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #7 : Сентябрь 17, 2020, 18:53 »

спасибо,попробую Улыбающийся
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #8 : Сентябрь 18, 2020, 09:31 »

gRPC классная штука, используем ее вовсю в Go проектах. В плюсах юзал ее один раз только и не могу сказать, что мне это понравилось. Но тут недостаток плюсов.
Есть еще WebSocket'ы, тоже вполне удобно.
А еще можно их запустить общение через шину обмена соообщениями (NATS, MQTT, etc).
Тут нужно отталкиваться от задачи. Допустим, я для одного из проектов для коммуникации межу сервисом (Go) и GUI(c++/Qt) выбрал WebSocket и это оказалось вполне удобно, но я там не гоняю большое количество информации. Зато отлаживаться удобно было.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #9 : Сентябрь 18, 2020, 10:56 »

NATS кстати тема, юзаем на работе. Только ограничение на размер сообщения разочаровывает=(
Записан
Пантер
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 5876


Жаждущий знаний


Просмотр профиля WWW
« Ответ #10 : Сентябрь 18, 2020, 11:06 »

NATS кстати тема, юзаем на работе. Только ограничение на размер сообщения разочаровывает=(
А что там за ограничение, никогда не сталкивался? Хотя, мы по нему гоняем json'ы в основном. Фильмы гонять да, неудобно будет.
Записан

1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #11 : Сентябрь 18, 2020, 11:40 »

[off]Есть же сокеты по рупь двадцать, так нет - хочется "новизны". С жиру бесятся. Какой горячий интерес "что-то поюзать", и как быстро он пропадает когда надо "что-то сделать"[/off]
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #12 : Сентябрь 18, 2020, 11:43 »

А что там за ограничение, никогда не сталкивался? Хотя, мы по нему гоняем json'ы в основном. Фильмы гонять да, неудобно будет.

То ли 1МБ то ли 10МБ, смешная цифра крч.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #13 : Сентябрь 18, 2020, 11:46 »

[off]Есть же сокеты по рупь двадцать, так нет - хочется "новизны". С жиру бесятся. Какой горячий интерес "что-то поюзать", и как быстро он пропадает когда надо "что-то сделать"[/off]

Если что, CORBA появилась 30 лет назад. Просто она ниощинь оказалась (ну для своего времени норм) вот и появились альтернативы.
Записан
Racheengel
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2679


Я работал с дискетам 5.25 :(


Просмотр профиля
« Ответ #14 : Сентябрь 18, 2020, 12:06 »

[off]Есть же сокеты по рупь двадцать, так нет - хочется "новизны". С жиру бесятся. Какой горячий интерес "что-то поюзать", и как быстро он пропадает когда надо "что-то сделать"[/off]

Сокеты это да, но boilerplate большой довольно.
Хочется, чтобы мало кода и "изкаропки".
Записан

What is the 11 in the C++11? It’s the number of feet they glued to C++ trying to obtain a better octopus.

COVID не волк, в лес не уйдёт
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.071 секунд. Запросов: 22.