rails in trouble ?

In flex   April 22, 2007 - 10:54 pm

Rails scaling problem with Twitter

response 1

response 2

事情大略是這樣的:

-Twitter 是一個最近快速抉起的網路服務,主要就是可以用簡訊、網頁更新自已的近況,幾個月前上面還沒什麼中文內容,但現在似乎頗多台灣人在用。

-有個blogger 訪談了 twitter dev team 的 alex,結果在訪問中他說 twitter 使用 ruby on rails 開發目前碰到最大的問題就是 scaling,他們的網站目前每秒有11,000個 requests,結果他們很驚訝的發現 ror 目前並沒有辦法同時存取兩個以上的 db,再加上 ruby 這個語言本身很慢,所以 bottleneck 一時無法解除。

然後此文一出後,就如同你知道的,當然立刻引發一場正反攻防戰,上面列出的兩個 response 是其中比較值得一看的(其實回應實在太多根本沒時間一一看完)。

比較有趣的是在 response 1中,ror的創始者 DHH 跳出來講了幾句話,另外其它幾個有趣的回應也整理如下。

(先插個花:更有趣的是在 response 2 中有人說 DHH seems to have an uncanny ability to track down negative Ruby/Rails comments on the web and refute them, 大意是 DHH似乎總能找到網路上說 ror 不好的文章然後立及反駁,結果不出幾個小時他就在前一個blog中回應了… 了不起啊~)

-DHH認為ror 一直是靠社群力量成長的project,因此 Twitter 應該要儘一份心力把他們解決問題的方式貢獻出來給 ror

-許多人認為如果能實現像 google 般 shared nothing architecture 將來在 db clustering 上的問題或許就不會那麼嚴重(當然這實際上是一個很大的題目,嘴上說說比較容易)。

-更多人指出其實在 postgresql 上已經可以輕易做到多個db分散流量的設計,而且實作起來只要幾十行 ruby code。

-另外,也有人指出要把問題分成幾個層面來看,不能連多個db不是ruby的錯,語言本身是無罪的,應該要怪 ror 還沒提供這個功能,或提供的還不合用;而至於 ruby 本身太慢則或許等 JRuby 成熟後應該就會解決了。

-另外也有許多其它陣營,像php, java, 甚至連 asp.net都跑來插花,重提一遍用某種技術就不會有這種問題勻勻。

至於我的想法?

ruby 不快這本來就不是新聞,它的 scalability 不高大家也早就知道了,但一個新技術本來就需要時間去 brew,java也是走了很多年才有今天,如果提一個更貼近的例子,同樣跑不快的 php 也是發展幾年後才有各種 vm 與 compiled binary 出現,所以一切需要時間啊~

至於現在看好 ruby 則是有幾個原因:

-JRuby 理論上應該會解決許多核心的問題(速度、擴展、java介接)
-RoR 的持續發展與廣大的 gems support
-apple 將 ruby 列為主要開發語言之一(在 os x 10.5 與 xcode 3 中將直接支援 ruby編程)

從種種跡象中都可看出 ruby / ror 有者比較光明的未來,再加上跟 flex 的接續也處理的不錯(呃,好,其實 midnightcoders 只是一個三人的小公司,而 weborb for ror 這種不賺錢的產品其實bug也挺多而他們大概也無力處理,但至少目前堪用),所以如果一定要寫點後台程式,選ror還是不錯的。

我比較好奇的是,到底有多少人在用 Twitter 啊?

by admin

5 Comments Add your own

  • 1. luar&hellip  |  April 22nd, 2007 at 11:53 pm

    其實Ror一直有種種開發上和效能問題,已經不是今天的事。只不過沒有人公開批評,或者說批評者名氣不夠大,沒有將問題浮上水面。Web2.0 Startup享受Ror開發樂趣時,當有問題時,想找外援幫手才是痛苦開始,有經驗Ror開發者少,有空閒時間有經驗Ror開發者更少,收費又是另一問題。所以說,投身Ror的人這幾年應該有不錯收入…

  • 2. winson&hellip  |  April 27th, 2007 at 12:43 pm

    我看好RoR,因為他真的解決不少軟體開發的問題。測試、XML配置、MVC簡單到不行。

    但你寫的看好的原因似乎有點問題:

    1.沒有任何證據顯示JRuby可解決核心的問題,就算有我也不care,不會去用 JRuby。
    2.沒意見。
    3.Apple將RoR列為主要開發語言。

    說主要開發語言太籠統,Web方面Apple以前提供WebObject,所有Mac AP依然是Objective C。

    就RoR而言,Apple只是把RoR納入Leopard,如果這樣就算主要開發語言,那Tiger裡面一拖拉庫都是主要開發語言,什麼php, perl等等。

    就個人使用而言,RoR的確省很多時間,這是我喜歡的原因,至於其他問題,目前到不會特別擔心,畢竟才兩歲多的架構。相信那些問題的配套不久之後都會一一浮現。

  • 3. jeremy&hellip  |  April 28th, 2007 at 12:04 pm

    謝謝你的意見。

    1、你可以看一下 JRuby 的討論區與 mailing list,裏面有列出它可能可以幫助解決的問題,這點我到是滿關心的,因為在我們做的東西裏,scalability 很重要,呃,速度更重要。

    3、根據某長輩報馬,10.5 裏面可以用 ruby 寫 UI的東西,而不只是包個 php, perl, python 之類的app server進去,這比較像之前可以用 java 寫 cocoa 程式一樣,只是現在換成 ruby,這樣作風向球的意義比較重要。

    不過目前要評斷許多事真的都還太早,再過幾個月vm跟ide都穩定後再來看會比較清楚 :)

  • 4. thegiive&hellip  |  May 11th, 2007 at 12:52 am

    http://lightyror.thegiive.net/2007/05/twitter-rails-scalibilitymore.html

    稍微評論一下這個事情,請指教

  • 5. jeremy&hellip  |  May 11th, 2007 at 10:33 am

    Nice job :)

    我們現在是 6-8 個 mongrels 同時跑,但db也只有一個,希望將來有一天也有機會能玩到 160個啊~

留言回應

hidden

您的留言會先經過站長認証後才刊登在網站上。
your comments will be approved by Administrator before appearing on the page.

Trackback this post  |  Subscribe to the comments via RSS Feed

mobile phone