Apache Thrift гарантирует целостность данных?

Есть ли в Apache Thrift проверка целостности данных? Гарантирует ли это, что данные всегда доставляются без изменений? Я отправляю большие объемы двоичных данных через сервис Thrift, и я не уверен, нужно ли мне выполнять какую-либо дополнительную проверку целостности, такую ​​как контрольная сумма MD5.

3

Решение

Нет, такого понятия, как встроенное обнаружение ошибок, не существует. Эта задача остается за разработчиком и / или другими частями стека связи.

Первый вопрос, который следует задать, — достаточно ли простого CRC32 или если вам нужны более мощные инструменты, такие как некоторые SHA. Верхний конец, вероятно, будет полноценной крипто-инфраструктурой для подписи сообщений и проверки подлинности с помощью асимметричных ключей.

Для каждого из этих вариантов использования есть хорошие библиотеки. Как правильно отметили другие, если транспорт использует TCP и, возможно, даже TLS / SSL, этого может быть достаточно. Просто нет необходимости изобретать это колесо снова. И, как указано выше, если это действительно необходимо, задачу можно легко делегировать специализированная, индивидуальная транспортная реализация как «многоуровневый транспорт», похожий на то, что TFramedTransport делает.

2

Другие решения

Слои Apache Thrift являются объяснил здесь. Это разумное предположение, что ошибки могут произойти только на транспортном уровне. Если вы используете транспортные интерфейсы TCP или HTTP (который основан на TCP), данные будут доставлены без изменений, потому что это TCP работает.

Замечания: Я предполагаю, что вы не беспокоитесь о безопасности своего канала связи. В противном случае ни TCP, ни контрольные суммы не защитят вас от злонамеренного изменения данных. В такой ситуации вам нужен безопасный коммуникационный туннель, такой как SSL / TLS. Увидеть: Бережливость / SSL.

2