Использование C++ для вычислений бэкэнда в веб-приложении

Я запускаю PHP-интерфейс для приложения, которое много работает с данными и использует Cassandra в качестве хранилища данных.

однако я знаю, что PHP не даст мне производительность, необходимую для некоторых вычислений (а также управление для огромного количества данных, которые должны быть в памяти)

Я хотел бы написать резервные копии на C++ и получить доступ к нему из приложения PHP. Я пытаюсь найти лучший способ соединить их.

некоторые варианты, которые я просмотрел:

  1. бережливость (естественный выбор, так как я уже использую его для Кассандры)
  2. буферы протокола Google
  3. gSOAP
  4. Ось Apache

выше только то, что я посмотрел, я не ограничиваю себя.

данные, передаваемые в приложение PHP, очень малы, поэтому потоковая передача не требуется. Передаются только результаты расчетов.

Что вы, ребята, думаешь?

3 ответов


более подробная информация о том, сколько данных потребуется для ваших вычислений, будет полезна. Бережливость кажется разумным выбором. Вы можете использовать его между PHP, вашим вычислительным узлом и бэкэндом Cassandra. Если ваш результат невелик, ваш транспорт RPC между PHP и вычислительным узлом не будет иметь слишком большого значения.


на вашем месте я бы использовал бережливость, нет смысла тянуть другую структуру RPC. Идите с тем, что у вас есть и что вы уже знаете. Бережливость делает это так легко (как и буферы протокола google, но вам не нужны два разных механизма)


вы ограничиваете себя наличием C++ в качестве отдельного приложения? Вы рассматривали возможность прямого взаимодействия с PHP? (т. е. связать расширение C++ в вашем приложении PHP).

Я не говорю, что второй подход обязательно лучше, чем первый, но вы должны рассмотреть его в любом случае, потому что он предлагает несколько разных вариантов компромисса. Например, задержка передачи материала между PHP и c++, безусловно, будет выше, когда эти два приложения являются отдельными чем когда они динамически связаны с одним и тем же приложением.