这是来自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
<p class="indent">
|
Scala的延迟比Ruby提高了近6倍, 吞吐量提高了10多倍。
更多具体细节可点击标题进入英文PPT了解。
[该贴被banq于2014-08-18 15:31修改过]
[该贴被banq于2014-08-18 15:38修改过]