我是Apache Thrift的新手。我认为这是一个非常棒的工具,能够使用IDL定义客户端和服务器之间的协议,以便它可以轻松地交换信息,程序员可以节省编写额外代码的工作。
但是,我不确定为什么Thrift需要服务器支持,例如TSimpleServer?这是否意味着Thrift包含足以提供服务的服务器基础架构?那么,作为开发人员,我们不需要自己设置服务器吗?
或者,我们仍然需要设置服务器,这需要与Thrift的服务器要求保持一致?
答案 0 :(得分:1)
作为probably already found out,Apache Thrift既是序列化框架又是 RPC框架。那是什么意思呢?
序列化部分是用于序列化您从Thrift IDL生成的类等的难题。结果,您将获得一些准备好发送到其他地方的字节数。当然,它还使您能够将那堆字节反序列化为有用的东西。根据您使用的传输/协议栈,字节可能是包含二进制数据的steream,或包含一些JSON的文件,或包含您选择的TProtocol
的内存缓冲区。
第二部分是基础设施,允许您在您能想到的任何TTransport
内发送和接收远程过程调用(RPC)。 Thrift包括对套接字,HTTP,管道等的支持,具体取决于您计划使用的语言绑定。
Apache Thrift最强大的一点是模块化。我刚才描述的整个传输/协议栈被设计为一组可插拔的部分。这不仅允许您自由地将现有的部分组合到例如形成一个套接字服务器,在一个端点上提供三种服务,通过框架紧凑格式的gziped消息进行通信。它还使您能够在非常短的时间内编写自己的特定TTransport
,如果需要的话。
最后,尤其是有人使用Apache Thrift让他们的应用程序通过MQ系统进行通信,或者只使用Thrift的序列化部分,或者编写自己的传输和/或协议。可以在源树的/contrib
folder中找到一些示例。
从技术上讲,我们并不需要。但由于Apache Thrift也是一个RPC框架,服务器是这个难题的核心部分。你知道吗?准备好使用这些选项非常方便,而是从头开始编写自己的TThreadPoolServer
或TNonblockingServer
!