server如何调用 thrift_Sails - 构建 Thrift Server 实现跨语言之间调用

什么是 Thrift

The Apache Thrift software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi and other languages.

Thrift 用于实现跨语言之间调用的服务框架,它支持 C++, C#, Cocoa, D, Delphi, Erlang, Haskell, Java, OCaml, Perl, PHP, Python, Ruby, NodeJS, Go, Smalltalk... 非常多热门的语言,可以直接基于写好的接口描述文件 (IDL) 生成目标语言的本地化代码。

我们现在目前的项目至少有 C, Java, Ruby, PHP 期间各种语言有各种不同团队负责不同侧重点的服务。

团队合作的时候,我们用 Thrift 来实现跨语言之间的调用。

所以基于 Thrift 的 Ruby 库实现了一套服务器框架,让我们可以快速构建一个类似 Rails 一样易用、可维护的 Thrift Server,内部非常多的实现都和 Rails 一模一样,你可以完全用 Rails 的使用习惯来开发。

今年的 RubyConf China 2014 上,@ 罗昕 曾经讲过类似的主题《RailsService: Create microservices with(or without) Rails》,当然此 Gem 有受他的启发

Sails 是从我们的实际项目上面抽出来的,断断续续发布了好几个版本,也解决了 N 多 Real world 环境的问题,比如 Capistrano 部署重启载入的问题,Linux 发送 kill -USR2 $pid 重启的问题等等

功能

让你像在用 Rails 一样配置、开发、使用

进程管理,守护进程(Thrift 默认没有这些东西)

I18n 支持;

尽可能兼容 Rails 接口,以便能支持一些 Gem,比如我们已经在我们的项目上面同时用 Sails 和 second_level_cache;

Migration 功能;

同时支持 ThreadPool 和 NonBlocking 模式;

sails console;

Sails.cache, Sails.logger, Sails.root 之类和 Rails 一模一样的东西

熟悉的 Rails log 打印信息

还有待解决的

开发模式自动重新载入新的代码,以及部署模式收到 USR2 信号软重启;

更多的 Rails 细节;

一些例子

打信息:

Processing by UserService#find_user_quota at 2014-12-29 18:36:52 +0800

Parameters: {:req=><:commonrequest user_id:36 session_id: ip:>}

UserQuota Load (9.3ms) SELECT `user_quota`.* FROM `user_quota` WHERE `user_quota`.`user_id` = 36 LIMIT 1

Completed 200 OK in 13.73ms (DB: 9.3ms)

一些命令

$ sails s

$ sails stop

$ sails restart

$ sails s --daemon

$ sails c

irb> Sails.root

=> #

irb> Sails.root.join("log")

=> #

irb> Sails.cache.write("foo", 1)

=> true

irb> Sails.cache.read("foo")

=> 1

irb> reload!

项目地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值