从Scala进驻Twitter看多语言混杂系统的未来
2012-05-21 22:45
120 查看
2009-06-15 15:33 Hugo Zhu
appspot 我要评论(0) 字号:T
| T
Twitter计划于09年底将大部分流量的后台使用Scala语言。原本Twitter的前台后台都是Ruby on Rails,但是效果不很理想。作者由此分析,未来的系统会是多语言的混杂系统。让DSL来实现系统的某个部分,比用一种语言到处实现更现实。
AD:
51CTO编辑推荐:Scala编程语言专题
Twitter是目前最热的“微博客(Micro Blog)”应用,据说前几天拒绝了Google出价10亿美元的收购意向。Twitter最早是几个工程师为了快速共享AIM(美国排名第一,二的IM,前身是ICQ,被AOL收购后更名为AIM)的状态(Status)而开发的一个应用,使用的是RoR (Ruby on Rail)框架,直到今天Twitter仍然是一个以Ruby为主要开发语言的网站,在Twitter服务器上后台运行着很多进程做异步处理。但Ruby的局限性也逐渐暴露出来了,RoR很适合做前端的开发,但对于比较Heavy的后台处理,Ruby的运行性能还是有些问题,然后Twitter将目光转向了Scala。
下面是一些对话的总结:
1)Ruby不太合适开发长时间运行(Long-Live)的服务器端程序,但JVM很合适,因为Java有10年的经验教训和优化,Scala是运行在JVM上的,所以天生就有了这个优点;
2) Ruby没有很好的线程(Thread)支持,Ruby多线程会限制在一个CPU上(新的Ruby应该会改善这点吧)且Ruby VM的垃圾收集支持也没有Java先进,就造成每个Ruby进程长时间运行后使用的内存月来越大;
3) 为什么不是JRuby? JRuby缺乏使用广泛的Rem支持(很多优秀的Ruby包都需要C扩展,它们并没有移植到Java),而且性能也不太理想,比MRI(C实现的Ruby VM)要慢;
下面是几点Scala的Concerns:
1) IDE支持还不全面,支持得最好的是IntelliJ IDEA 8.1(自从5年前我残忍的抛弃JBuilder后,就一直用IntelliJ的IDEA了),Mac 上的Textmate支持的较差, Emacs还行;
2) Scala的构建(Build)环境还是要比Ruby, Python, PHP等动态语言多一回事;
3)一开始就要注意Immutability(不变性),为了稳定压倒一切,当然Scala会保证性能底线, JIT compiler对不变对象还有一些性能优化,所以尽量用吧;
4) Scala的Actors对处理客户端连接很合适,(Erlang也是这样的)大量的连接也是小菜一碟。
最后Twitter的计划是到09年底,大部分的流量将Powered by Scala!
我再说一次,未来的系统会是多语言的混杂系统,让专业的语言(Domain Specific Language , DSL)来实现系统的某个部分,比用一种语言到处实现更现实。
相关文章推荐
- 【Twitter Storm系列】flume-ng+Kafka+Storm+HDFS 实时系统搭建
- 更改Ubuntu系统语言——中文到en
- [基础学习]系统语言改成英文
- SOA 新业务语言 新系统架构——什么是SOA
- 编码:隐匿在计算机软硬件背后的语言(1)--编码到二进制数字系统
- go语言在Windows系统下的安装并运行Hello World程序
- 一起talk C栗子吧(第一百五十三回:C语言实例--socket通信地址系统调用一)
- c语言课程设计—学生成绩管理系统
- C 语言课程设计 最终答辩版 学生通讯录管理系统
- Android系统信息获取 之五:系统语言信息(续)-语言地区和简写对照表
- 在安装office2003时,出现"安装程序包的语言不受系统支持"的错误,如何解决?
- 设置应用内的系统控件语言
- HBase概念学习(八)开发一个类twitter系统之表设计
- scala 类型系统
- Atitit.跨语言系统服务管理器api兼容设计
- win10(企业英文版)有关中文乱码 与 系统默认语言转换
- Ubuntukylin 14.04 系统语言改成中文[转]
- Android系统之路(初识MTK) ------ 设置系统默认语言/客制化可选语言/设置默认时区
- OSGi是什么:Java语言的动态模块系统
- 银行综合储蓄业务系统,水平为学了一年C语言