日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

移动后端支持平台Parse将API由Ruby迁移到Go

發布時間:2023/12/19 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 移动后端支持平台Parse将API由Ruby迁移到Go 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Charity Majors是移動后端支持平臺Parse的工程師。近日,他撰文介紹了他們將API從Ruby遷移到Go的過程。

\\

2011年,Parse借助Ruby on Rails快速推出了第一個版本。他們用Unicorn作為HTTP服務器,用Capistrano部署代碼,用RVM管理環境,并用許多開源gems處理YAML解析、oAuth、JSON解析、MongoDB及MySQL等方面的工作。此外,他們還用Chef管理他們的基礎設施。

\\

起初,平臺運行良好。但隨著代碼庫的增長,部署時間越來越長,Unicorn服務器無法很平穩地重啟。到2012年底,他們有200個API服務器運行在m1.xlarge類型的實例上,每個實例24個Unicorn工作進程。該平臺每秒需要為來自60000個移動應用的3000個請求提供服務。一次完整部署或回滾需要20分鐘。另外,在通常的Ruby on Rails設置中,工作進程池大小固定,每個工作進程一次只能處理一個請求。隨著API流量和應用數量的增加,“一個請求一個進程”的Rails模型開始無法滿足平臺的擴展需求,而增加數據庫和工作進程也增加了故障點和性能退化的可能。

\\

于是,他們認為,他們需要遷移到一個完全不同于Rails的異步工作模型。他們對比了如下選項:

\\
  • EventMachine:絕大多數Ruby gems都不是異步的,而且許多不是線程安全的,所以經常很難找到一個庫可以異步地處理一些常見任務。\\t
  • JRuby:JRuby從根本上說還是Ruby,同樣缺少異步庫支持。而對于Java,他們的后端或Ops團隊不愿意部署和調優JVM。\\t
  • C++:他們現有的C++代碼已經難以調試和維護。與其它現代編程語言相比,C++開發的效率不是很高。C++也缺少一些他們需要的庫,比如HTTP請求處理。C++可以處理異步操作,但并不好用。\\t
  • C#:C#有最好的并發模型,并且支持Async和Await。但真正的問題在于,Linux對C#開發的支持不夠好,缺少一些與常用開源工具互操作的庫。如果選擇C#,那么他們就需要對工具鏈做重大調整。\\t
  • Go:同C#一樣,Go也在底層內置了異步操作。MongoDB Go驅動程序可能是現有最好的MongoDB驅動程序,而與MongoDB的復雜交互是Parse的核心所在。Goroutines比線程更輕量級。\

最終,他們選擇了Go,用它重寫了EventMachine推送后端、核心API服務器,實現了Rails中間件的處理功能,結果:Parse平臺的可靠性提高了一個數量級;API不再因為數據庫和后端服務的增加而日益變得脆弱;由于去掉了大量的gems和隱含假設,代碼庫變得更干凈;Ops團隊不用每周處理多次Ruby API故障了;預分配的API服務器池縮減了約90%;移除了孤立的Rails API服務器筒倉,簡化了架構;完整集成測試的時間由25分鐘縮減至2分鐘;完整API服務器部署(包含滾動重啟)的時間由30分鐘縮減至3分鐘;Go API服務器啟動更平穩。

\\

雖然Parse成功地實現了遷移,但是許多網友都認為Majors給出的選擇理由并不充分。網友pron指出,JVM易于監控、控制、調試和性能分析。在大多數情況下,JVM調優只需要設置GC方式、最大堆大小和新生代比率三個值。對此,Majors的答復是,“我們討厭有關Java和JVM的一切”。網友headius則為Parse團隊沒有試用JRuby感到可惜,因為單個JRuby實例就可以處理成百上千的并發請求,而且不需要采用異步方式。他認為,JRuby團隊不需要重寫就可以解決Parse的問題。網友Zazi Bazuka則這樣評論道:

\\\

我討厭這篇博文,攻擊Ruby成了現在的一種趨勢。但攻擊總是來自不了解Ruby生態系統的人。為什么不使用Puma或其它多線程服務器?!為什么使用EventMachine?互聯網上到處都是不應該使用它的文章,你們應該使用celluloid.io代替它。

\\\

Majors的文章在Hacker News上也引發了激烈的討論,其中許多網友同樣對Parse的選擇過程存在疑問。網友aikah就表示:

\\\

當了解業務域和性能問題時,Go是一個不錯的遷移目標。但是,我不推薦初學者用它構建安全的Web應用程序,因為……Go確實不適合用于傳統Web站點的快速開發。讓我吃驚的是,Parse用Rails編碼,我原以為他們以Node.js為基礎構建,因為Cloud Code用了JS。

\\\

對此,lacker答復說:

\\\

我們考慮過它。那時,一個很大的Node代碼庫看上去很難維護。不過,工具比那時好了。如果我們現在重新討論,我認為,采用Node的理由會更令人信服,如果我們等到ES6成為標準后再討論,理由還會更充分。

\\\

感謝郭蕾對本文的審校。

\\

給InfoQ中文站投稿或者參與內容翻譯工作,請郵件至editors@cn.infoq.com。也歡迎大家通過新浪微博(@InfoQ,@丁曉昀),微信(微信號:InfoQChina)關注我們,并與我們的編輯和其他讀者朋友交流(歡迎加入InfoQ讀者交流群)。

總結

以上是生活随笔為你收集整理的移动后端支持平台Parse将API由Ruby迁移到Go的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 亚洲天天看 | 欧美在线性爱视频 | 中国av一级片| 伦理欧美 | 欧美高清一区 | 国产免费999 | 欧美一级淫片 | 国产午夜电影 | 国产日韩欧美日韩大片 | 国产网红在线 | 色老头综合 | 香蕉视频首页 | 精品国产一区二区三区在线观看 | 一区二区国产精品精华液 | 成人公开免费视频 | 亚洲精品国产精品国自产观看 | 丝袜五月天 | 高清性爱视频 | 日本一区二区三区视频在线播放 | 久久亚洲AV成人无码国产野外 | 人人av在线 | 四色在线 | 五月婷中文字幕 | 男女涩涩视频 | 国产精品美乳在线观看 | 成人国产精品入口 | 久久精品久久精品久久精品 | av天堂永久资源网 | 欧美精品欧美极品欧美激情 | 亚洲青青草 | 爱视频福利网 | 国产美女在线免费 | 手机在线看永久av片免费 | 亚洲av无码一区二区三区在线观看 | 999久久久免费精品国产 | 国产做受麻豆动漫 | 国产黄色片免费看 | 右手影院亚洲欧美 | 国产毛片99 | 国产精品日韩欧美一区二区三区 | 国产一级二级 | 免费在线小视频 | 久久人妻无码aⅴ毛片a片app | 91超碰免费| 人妻91麻豆一区二区三区 | 蜜桃成熟时李丽珍在线观看 | 高清av网 | 欧美日韩中文字幕一区二区三区 | 欧美xxxxxx片免费播放软件 | 欧美无遮挡高潮床戏 | 色猫咪av | 激烈娇喘叫1v1高h糙汉 | 日韩中文字幕影院 | 扒下小娇妻的内裤打屁股 | 日韩精品一区在线视频 | 最新日韩三级 | 日韩人妻无码精品久久久不卡 | 成人aaaaa| 国产青青草视频 | 极品国产在线 | 精品福利一区二区 | 日韩五月天 | 日本大乳奶做爰 | 尤物视频在线观看视频 | 欧美一级片在线观看 | 日本在线| 日韩精品一二三四区 | 亚洲精品综合久久 | 欧美区一区 | 黄色三级视屏 | 黄色av网站免费 | 好吊视频一区二区三区四区 | 日韩黄色片网站 | 一本一本久久a久久精品综合麻豆 | 亚洲第一成年网 | 亚洲高清在线看 | 天天看天天爽 | 亚洲国产精一区二区三区性色 | 精品无码一级毛片免费 | 国产精品久久久久久久久久久久久久久 | 欧美另类日韩 | 91黄色国产| 久久久久国色av免费观看性色 | 国内自拍在线 | 黄av在线播放 | 葵司有码中文字幕二三区 | 狠狠干天天射 | 97在线视频观看 | 91久久人澡人人添人人爽欧美 | 性爽爽| 亚洲成av人片一区二区梦乃 | 娇妻之欲海泛舟无弹窗笔趣阁 | 99久久婷婷国产综合精品青牛牛 | 一边摸一边抽搐一进一出视频 | 成年人性生活视频 | 黄色片免费| 国产精品久久久久久久久久久新郎 | 香蕉国产在线视频 | 黄页网址大全免费观看 |