---
title: Twitter 从 Rails 迁到 Java，暴露出高负载系统终究会回到底层能力
date: '2011-04-29 10:20:51'
draft: false
summary: 这次迁移不只是语言偏好变化，而是高负载系统最终会被性能、并发模型和运行时能力逼回更底层的工程约束。
slug: twitter-search-from-rails-to-java
syndication:
- platform: Weibo
  url: https://weibo.com/1648815335/fPf68P
tags:
- twitter
- rails
- java
- scala
topics:
- software-engineering
type: post
---

看到 `Twitter` 从 `Rails` 迁到 `Java` 的消息，我当时的直觉是：这种迁移看起来像语言选择变化，实际反映的还是系统规模把技术栈逼回到底层能力的问题。

当时的迁移已经不只是某个边缘模块，而是连搜索库都开始从 `Ruby on Rails` 往 `Java` 方向走。更早在 `2008` 年，他们就已经把消息队列后端从 `Ruby` 迁到了 `Scala`，也就是先转向 `JVM` 生态，然后再进一步扩大范围。

这类演进路径其实很典型。早期业务快速增长时，高生产力框架可以极大降低开发成本；但当流量、并发、响应时间和系统稳定性变成核心矛盾之后，技术选型就会越来越受到底层运行时、线程模型、内存管理和工具链成熟度的约束。

所以我更愿意把这件事理解成：高负载系统最后还是会被迫面对一个问题，应用层效率和底层控制力，到底怎么权衡。`Twitter` 的迁移只是把这个矛盾显性化了。
