Apache Thrift是否保证数据完整性?

时间:2017-02-03 14:10:32

标签: c++ thrift checksum data-integrity

Apache Thrift是否有任何固有的数据完整性检查?它是否保证数据始终保持不变?我通过Thrift服务发送大量二进制数据,我不确定是否需要实施任何额外的完整性验证,如MD5校验和。

2 个答案:

答案 0 :(得分:2)

不,没有内置的错误检测。该任务留给开发人员和/或通信栈的其他部分。

要问的第一个问题是,如果一个简单的CRC32就足够了,或者你需要更强大的工具,比如一些SHA。上端可能是一个完全成熟的加密基础设施,用于签署消息并通过非对称密钥验证真实性。

对于每个用例,都有很好的库。正如其他人正确指出的那样,如果传输依赖于TCP,甚至可能只有TLS / SSL就足够了。没有必要再发明那个轮子。并且,如上所述,如果确实有必要,可以轻松地将任务委派给specialized, custom transport implementation作为“分层传输”,类似于TFramedTransport所做的。

答案 1 :(得分:2)

Apache Thrift的层是explained here。这是一个明智的假设,错误可能只发生在传输层。如果您使用TCP或HTTP(基于TCP)传输接口,数据将不加改变地传递,因为这是TCP works的方式。

注意:我认为您并不担心通信渠道的安全性。如果这样做,TCP和校验和都不会保护您免受恶意数据更改。在这种情况下,您需要一个像SSL/TLS这样的安全通信隧道。请参阅:Thrift/SSL