Короче говоря, у меня есть Java-процесс, который считывает и записывает данные в/из процесса. У меня есть программа на C++, которая берет данные, обрабатывает их и затем должна передать их обратно на Java, чтобы Java могла записать их в базу данных.Как я могу запускать Java-программы C++ и наоборот, когда данные записываются в буферы протоколов?
Программа Java вытаскивает свои данные из Hadoop, поэтому, как только процесс Hadoop запускается, он заполняется данными, но фактическая обработка (сделанная программой C++) не может обрабатывать сразу все данные. Поэтому мне нужен способ контролировать поток. Кроме того, чтобы усложнить проблему (но упростите мою работу), я делаю материал Java, а мой друг делает материал на C++ и пытается сохранить наши программы как можно более независимыми.
В этом проблема. Я нашел буфер протокола Google, и мне кажется довольно здорово передавать данные между программами, но я не уверен, как данные сохранения Java-программы могут запускать программу C++ для обработки, а затем, когда программа C++ сохраняет результаты, как будет запускаться программа Java для сохранения результатов (это для одной или нескольких записей, но мы планируем обрабатывать миллиарды записей).
Каков наилучший подход к этой проблеме? Есть ли простой способ сделать это?
Просто так я понимаю. Hadoop отправляет данные в java-приложение -> Java-приложение отправляет в сокет TCP -> C++ прослушивает данные сокета и обработки -> C++ отправляет обработанные данные в другой TCP-сокет -> Java берет его и записывает в БД? Я правильно понимаю это? Я изучаю это, кажется хорошим (если я правильно понял). Один вопрос, может ли программа C++/java сказать другим, чтобы замедлить, если они отправляют слишком много данных? есть ли способ управления потоком? – user1735075
TCP имеет встроенный контроль потока. C++ не сможет читать что-либо, что не отправляет Java, а буферы ограничены по размеру и блокируются, если вы попытаетесь написать больше, чем читатель читает. –
ahh Я понимаю ... Я буду делать некоторые тесты. Большое спасибо Петру за предложение – user1735075