Spray是否有Thrift marshaling / unmarshaling支持?

时间:2014-01-29 15:57:38

标签: scala thrift spray thrift-protocol

我的组织已选择采用Thrift消息传递作为整合客户和服务的通用语言。我们所有的服务都是用Scala编写的(或将被编写),而我们的客户端则是用其他语言编写的。

目前(据我所知)Scrooge是Scala唯一的Thrift IDL编译器,它以Finagle为目标。我想选择在Spray上构建服务。

使用现成的(开源)软件有什么选择?

1 个答案:

答案 0 :(得分:5)

我们是狂热的Thrift / Finagle用户,老实说没有什么可以与Finagle相提并论。

你在Finagle开箱即用的一些东西:

  • 使用Scrooge自动编译服务和​​客户端
  • 与数据结构的Java和Scala集成(同样是Scrooge)
  • 能够将Thrift依赖项添加到项目中。(Scrooge将为jar提取和编译IDL等)。
  • 你有maven-finagle-thrift插件,这是Scrooge的Maven风格。

现在关于Finagle,看看here。与Finagle相比,Spray是一种玩具。到目前为止,Finagle是分布式服务的最佳Scala工具:

  • 开箱即用的可扩展集中式日志记录(Zipkin)
  • 使用Twitter Server自动管理,指标和更多好东西。
  • 开箱即用的Zookeeper和Mesos集成
  • 高效分离关注点(ThriftMux和处理程序等)
  • 高性能工具的众多协议
  • 一个并发模型,在RPC请求中很容易胜过Akka(不能使用actor)。

我不知道与Scala如此深度融合的其他Thrift选项,没有理由走出Finagle。但是,您必须使用完整的生态系统才能真正从中受益。