Erlang中使用Thrift

如今每个领域都有相对成熟解决方案,不需要重复性的开发。但是也带来了一些问题,单一语言开发已经变的越来越困难。

我们使用Ruby on Rails来做API的开发,但是很多业务并不适合Ruby on Rails 来做,例如说我们近期需要实现一个发送短信的功能。我们最开始再业务逻辑中直接调用短信服务商的服务,但是效果很不好,如果出现问题很难发现问题出在何处,所以将短信发送功能单独的提出来做一个内部的短信网关。

独立后的短信网关将给我们带来以下好处:

1.发送的速度会加快,由内部短信网关统一处理网络异常,提高发送成功率

2.同时也能快速的更换短信服务商或接入多个短信运营商

3.集中管理,便于发现问题

短信网关当然选择使用适合做通信并且编程简单的Erlang。这带来一个问题,我们应当如何对接Ruby on Rails的API和Erlang实现的短信网关。最初想使用webmachine做Restful API,但是很不幸webmachine只能帮绑定一个端口,不能做到内外服务分离。然后观察现在成熟方式,Thrift和Protocol Buffer,经过比较Thrift比较符合我们的情况(生成Erlang和Ruby的端代码,Protocol暂时只能靠第三方支持)。

在Erlang使用Thrift需要注意一些事情(测试后发现的,不一定对)

1.在rebar.config中添加https://github.com/lpgauth/thrift-erlang这个git 库,这个Thrift在Erlang中的框架代码,没这东西生成的代码根本就没用。

2.在Erlang中实现的服务函数,最好是对内部逻辑的封装,除非这个函数很简单。

3.在Erlang中的handler模块不要自身就是个进程,而只是一堆函数。如果需要进程的操作,请用函数封装。

好了说下步骤。

第一步:编写相应的*.thrift  文件

第二步:thrift --gen erl *.thrift,将生成的gen-erl复制到src中

第三步:按照例子代码写一个模块,将*.thrift中的函数全都实现了,并在里面指定服务的端口号和启动thrift的框架

第四步:将上一步写的模块添加到整个程序启动过程的最末处,启动thrift开始对外提供服务。

好了,祝大家玩的开心。

转载于:https://my.oschina.net/u/236698/blog/98635

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值