成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

使用Go語言來提升Ruby應用的性能

開發 前端 后端
本文著重于闡述能夠引領你在ruby應用程序中使用Go的理由。并且會深入細節,我會提供我的啟動項目Firmapi的源代碼。

近年來,Go語言的表現相當引人注目。它與Ruby的差異明顯,Go的優勢,例如成本低廉且易用的并發性能,使得我們尋找如何使用的方法,應用到處理工作任務中去。本文著重于闡述能夠***你在ruby應用程序中使用Go的理由。并且會深入細節,我會提供我的啟動項目Firmapi的源代碼。

Go可以為ruby開發者帶來什么

更準確的說,Go可以給你的ruby代碼帶來什么

1.低成本且易用的并發

按照Go的設計,幾十個(甚至上千個)并發操作能夠輕而易舉的實現。它能夠充分利用所有CPU的優勢。

盡管使用ruby早就可以處理線程操作了,但是其處理結果遠比不上Go:Ruby使用的是綠色線程,(即只有一個CPU得到利用),這與Go的channels方式相去甚遠。

2. 低內存開銷

一個 Go 程序編譯出來也就幾 M 大小。他們能在***化“榨取”機器性能的同時高效的利用內存。在 資源密集型任務中獨立的獲取輸入并返回計算結果 這類情況中,Golang 的表現堪稱***。你能輕松的啟動的多個程序,他們只有在需要時才被喚醒,同時還能得到非常不錯的性能。

3. 易于部署

Go 程序能在數秒內被編譯成一個小的二進制文件。 無需任何依賴,他們就能被輕松部署到您的生產服務器上。稍后,我將在 Firmapi 上向您展示我們是如何將 Go 代碼部署到我們的服務器上的。

連通 Go 和 Ruby

已經有 一個 gem 被發布出來,使之成為可能。但我還是決定不用它,因為我覺得(這個 gem)讓 Go 程序作為服務端在后臺運行,然后通過 Unix 域套接字來與前端的 Ruby 程序通信有點太麻煩了,***我嘗試了一個直截了當的方法:

其實非常簡單: 讓 Go 程序返回一個 JSON 格式的數據,然后在 Ruby 程序里解析它。 這樣一來,我們就能用 Go 程序加速所有資源密集型任務了。他們將會在服務器上被編譯進二進制文件。這些 Go 程序在每次被調用之后都會返回一個 JSON 格式的數據給 Ruby 程序使用。

1.  Go 方面

我們期望Go程序能返回一個JSON,用Ruby解析標準化輸出,這有個例子。

雖然有很多復雜的好用的程序用的是自有變量,但是中心思想不會變了。

2.  Ruby 方面

Ruby 代碼則可精簡到一行 :

為了保持井井有條,Go程序會被放在自己的文件夾里。這樣部署起來容易點。然后寫一個執行對應的Go程序的類,來解析和響應JSON。在生產環境中則會用二進制包來增加執行效率。下面是一則類的可能:

用method_missing這個類,在不改變Ruby代碼的情況下,讓新的Go程序跑起來。開發者只需按照這個規則,添加新程序就可以了。

怎么組織代碼?

筆者贊成直接把Go代碼包含到你的主資源庫內。如果要添加的程序的大小和范圍所剩無幾,你可以使用源控制來多獲取一些。主要是Ruby程序和Go程序之間的版本要不一致。例子中,我把代碼保存到: my_app/go/program1/

部署

用Go構建程序,Go生成的二進制包既可以在本地環境運行,也可以在產品上運行。唯一的問題是怎樣部署這些文件:即可以上傳到云存儲上(如Amazon S3),然后在部署環境上依次下載,也可以直接上傳到部署環境。在我們的例子中,我們添加定制任務到 Capistrano (戳這里看腳本 用的是上傳到S3的方法) :

結論

學習Go可能會帶給你在當前Ruby中解決問題的思路,而不會帶來另外的設置上的麻煩。我特別推薦看一下那些比較好的Go例程和專欄。

英文原文:Using Go to improve your Ruby application's performance

責任編輯:林師授 來源: 開源中國社區編譯
相關推薦

2013-05-22 09:38:03

GoGo語言Go性能

2023-12-26 00:58:53

Web應用Go語言

2023-11-06 08:01:09

Go同步異步

2014-07-04 09:58:15

gemsRails

2023-11-07 11:11:42

Go性能

2022-08-30 10:58:45

ViteEsbuild前端

2023-01-16 00:12:20

Go語言Web

2024-08-19 00:00:05

2010-03-03 15:46:40

Android應用程序

2024-11-14 11:29:38

2023-05-12 13:21:12

JMHJava程序

2012-11-07 09:41:30

2009-10-05 09:46:12

編程語言排行榜Ruby

2023-12-30 18:35:37

Go識別應用程序

2025-03-27 00:45:00

2021-09-27 09:52:41

FacebookBOLTLinux

2016-09-26 13:50:52

Linux系統性能

2020-12-28 12:06:42

Ruby 3編程語言優化

2014-11-05 20:05:46

dockerJenkins

2020-12-03 08:00:00

SQL數據庫MySQL
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 91观看 | 久久国产精品视频免费看 | 精品欧美乱码久久久久久 | 中文字幕在线不卡 | 中文字幕一区二区三区不卡 | 欧美操操操 | 日韩精品久久久 | 日本 欧美 国产 | 亚洲精久久 | 男女污网站 | av永久免费| 久久久久久国产精品免费免费 | 精品无码久久久久久国产 | 欧美中文字幕在线 | 亚洲欧美日韩国产 | 午夜日韩 | 欧美区日韩区 | 久久久久久久久国产成人免费 | 操人网站 | 亚洲大片在线观看 | 欧美日韩在线一区二区三区 | 中文字幕亚洲精品 | 91成人影院 | 国产欧美综合在线 | 激情久久网 | 欧美一级黄带 | 免费一级网站 | 色欧美日韩 | 国产成人精品久久二区二区 | 国产一级片 | 欧美在线观看免费观看视频 | 91看片网 | 男人的天堂视频网站 | 久久久91精品国产一区二区三区 | 亚洲伊人久久综合 | 免费在线观看黄网站 | 成人日韩| 欧美videosex性极品hd | 欧美国产一区二区 | 国产乱码精品一区二区三区中文 | 成人黄色三级毛片 |