Thrift

服务开发框架
授权协议 Apache
开发语言 Java
所属分类 程序开发、 服务框架/平台
软件类型 开源软件
地区 不详
投 递 者 闾丘鸣
操作系统 跨平台
开源组织 Apache
适用人群 未知
 软件概览

Thrift 是一个软件框架(远程过程调用框架),用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引 擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。

thrift最初由facebook开发,07年四月开放源码,08年5月进入apache孵化器,现在是 Apache 基金会的顶级项目

thrift允许你定义一个简单的定义文件中的数据类型和服务接口,以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言。。

著名的 Key-Value 存储服务器 Cassandra 就是使用 Thrift 作为其客户端API的。

服务定义文件:

service Calculator extends shared.SharedService {

  /**
   * A method definition looks like C code. It has a return type, arguments,
   * and optionally a list of exceptions that it may throw. Note that argument
   * lists and exception lists are specified using the exact same syntax as
   * field lists in struct or exception definitions.
   */

   void ping(),

   i32 add(1:i32 num1, 2:i32 num2),

   i32 calculate(1:i32 logid, 2:Work w) throws (1:InvalidOperation ouch),

   /**
    * This method has a oneway modifier. That means the client only makes
    * a request and does not listen for any response at all. Oneway methods
    * must be void.
    */
   oneway void zip()

}
 相关资料
  • 我想使用apache thrift开发一些本地网络服务。应该有多个服务等待一个主机连接到它们,并独占使用它们,直到主机释放它们。这些服务是用多种语言编写的。 之所以选择使用thrift,是因为我需要一些简单的远程过程调用机制,用于快速且支持多种语言的服务之间的通信。虽然thrift适合RPC,但我需要一些机制来通过一些自动发现机制定位服务TCP地址和端口,然后才能在不硬连接地址的情况下将thrif

  • 本文向大家介绍Node.js 服务器端应用开发框架 -- Hapi.js,包括了Node.js 服务器端应用开发框架 -- Hapi.js的使用技巧和注意事项,需要的朋友参考一下 Hapi.js 是一个用来构建基于 Node.js 的应用和服务的富框架,使得开发者把重点放在便携可重用的应用逻辑而不是构建架构。内建输入验证、缓存、认证和其他 Web 应用开发常用的功能。 示例代码: 附上github

  • Service Dao Cache Log日志类 FileCache文件缓存类

  • Cache redis-cluster集群配置. 修改congif/{env}/database.php中的redis选项 将cluster设为true,表示使用集群模式 设置option参数 配置集群服务列表即可 重启服务即可,此时redis已切换为集群模式 'redis' => [ //集群模式只在service下使用有效,异步redis中并不适用 'cluster

  • Dao 框架内部会做断线重连,失败3次后将进行重连操作 文档参考:Doctrine DBAL’s documentation $this->getDefault() 获取默认服务器连接,返回\Doctrine\DBAL\Connection对象 $this->getRead($name = null) 获取读服务器连接,若name不填,随机读取。 $this->getWrite($name = n

  • Service服务 Service服务是配合服务中心来实现服务化的。每个服务可以单独启动一个server,处理请求。 在开发Service模块时候,同样要注意内存释放问题。并且不可以使用异步服务,此模块是以同步方式执行的。 所以说,你可以用传统的方式来编写服务接口,当然你也可以使用内置的一些异步task方法来实现map-reduce,提升接口吞吐。 1.开启服务如执行 app/service us

  • 开发者服务中都是google提供的一些非常实用的服务,包括:广告、分析、身份验证、Firebase和通知.

  • Example: 102basic 你可以在服务端实现Service。 Service的类型并不重要。你可以使用自定义类型来保持状态,或者直接使用 struct{}、 int。 你需要启动一个TCP或UDP服务器来暴露Service。 你也可以添加一些plugin来为服务器增加新特性。 Service 作为服务提供者,首先你需要定义服务。 当前rpcx仅支持 可导出的 methods (方法) 作