Whitepages 从Ruby迁移到Scala

这是来自Whitepages的一篇从Ruby迁移到Reactive的实战分享英文PPT,文中讨论了为什么要使用Scala替代Ruby的理由。

Whitepages是一个用来定位手机或人的网站系统,每个月有50M独立用户,每天有35M的搜索查询,大概有70位工程师。

Ruby等遗留系统的问题是:

1. 高延迟 (响应缓慢)
2. 高资源消耗,包括内存和处理器
3. 其他包括:限制的并发性,当在缓慢上游堵塞时造成Worker饥饿,还有差得可怜的连接管理和恢复。

使用Scala替代Ruby的原因:
1.优雅的函数和OO范式混血。  
2. 静态类型系统: 类型推断避免Java多余的样板;编译器能捕获许多错误。  
3. 在JVM上运行: 快;与JVM库无缝互操作;相当成熟的工具支持。  
4. 基于actor并发框架:Akka

Whitepages的Reactive服务系统:
1.SOA, 通过Thrift或Http的JSON进行通讯。
2.延迟和吞吐量非常重要。
3.需要优秀的日志和监控。
4.提供敏捷的开发、测试、构建和部署的杠杆和竞争优势

下图是基于Scala和Ruby性能对比


Service p50 ms p99 ms Throughput RPS/core

Scala 25 300 80
Ruby 140 1200 7

Scala的延迟比Ruby提高了近6倍, 吞吐量提高了10多倍。

更多具体细节可点击标题进入英文PPT了解。
[该贴被banq于2014-08-18 15:31修改过]
[该贴被banq于2014-08-18 15:38修改过]

有些人认为Ruby慢在Rails框架上,以为去除Rails的Ruby就快多了,Whitepages的这项测试是基于Ruby直接开发的服务,其与Scala开发的服务性能还是相差很多,不只是语言方面,可能还有reactive等这样的异步机制等原因。
[该贴被banq于2014-08-18 19:10修改过]