Twitter因使用Ruby on Rails而闻名,但随着服务规模的扩大,它已将部分代码迁移到其他技术。该公司首先将其后端消息队列迁移到Scala(在Java虚拟机上运行),然后继续在Java中重建其后端搜索,最近又用Java服务器替换了其搜索前端。
InfoQ正在接受Twitter工程师Evan Weaver的采访,后者详细解释了这一转变。
· Twitter上的一流语言是JavaScript,Ruby,Scala和Java。Soemtimes C也被使用。
· 在Twitter上,Ruby的使用量正在减少,因为JavaScript接管了前端,而基于JVM的语言接管了后端。
· 通常,Twitter的开发人员都是从Ruby的背景开始选择Scala,而具有C / C ++背景的开发者则更喜欢Java。
· 搜索团队使用Lucene,并且具有Java的丰富经验。Java对他们来说比Scala或Ruby更方便。
· Twitter使用名为Finagle的库在Java,Scala或任何JVM 语言中构建异步RPC服务器和客户端。
· Twitter转向Scala和Java的原因更多是对封装的需求,而不是对性能和可伸缩性的需求,目前许多现有的Ruby代码相当可行。
· 静态类型化一直是生产力的福音,因为Twitter搜索已朝着面向服务的体系结构发展。
采访还涉及了更具体的技术原因,它们更倾向于Scala而不是Rails,例如更好的垂直集成。韦弗也对Twitter的整体架构,这是在我们覆盖的谈话说明会谈在这里。
最后,开发这么多年我也总结了一套学习Java的资料与面试题,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。