簡體   English   中英

使用PHP + Gearman + Node.js

[英]Using php + gearman + node.js

我正在考慮使用php構建站點,但是如果在node.js中進行構建,它的幾個方面的性能會好得多。 同時,該網站的大部分內容都需要保留在PHP中。 這是因為許多功能已經在PHP中開發,並且重新開發,測試等工作量太大,坦率地說,網站的那些部分在PHP中運行得很好。

我正在考慮重建node.js中的部分,這些部分將從在node.js中運行最多的內容中受益,然后讓PHP使用Gearman將請求傳遞給node.js。 這樣,我通過派遣更多工人來掃描橫向擴展,並讓齒輪工來處理負載分配。

我們的網站流量很大,我擔心齒輪箱能否處理此負載。 我不想讓這個問題繼續有效,所以讓我們主要關注以下可解決的問題:

  • 如果我們有足夠的內存,Gearman是否可以處理我們所有的預期負載(一次大約有3000多個排隊的工作,每秒處理數千個工作)?
  • 如果我只是使用CURL將請求傳遞給node.js,這樣做會更好嗎?如果是,node.js是否提供任何方式將負載分配給指定腳本的多個實例?
  • 能否以沒有單點故障的方式配置減速器?
  • 在開發和擴展方面,你們看到了哪些問題?

我正在解決這些廣泛的問題,因此,任何查看此帖子的人都可以在一個地方收集有關彼此之間有重大影響的事項的廣泛信息。

當然,我將測試所有這些,但是我希望在可能進行此類操作之前收集盡可能多的信息。

編輯:我使用Gearman的一個主要原因不是因為它的無阻塞結構,而是因為它的絕對速度。

我只能在Gearman上回答您的問題:

如果我們有足夠的內存,Gearman是否可以處理我們所有的預期負載(一次大約有3000多個排隊的工作,每秒處理數千個工作)?

簡短 :是

:一切都有極限。 如果您的工作負載過大,則可能會遇到問題。 Gearman將其隊列存儲在內存中..因此,如果您的有效負載超過了Gearman可用的內存量,則會遇到問題。

能否以沒有單點故障的方式配置減速器?

Gearman有一個插件/擴展/組件可用於將MySQL用作持久性存儲。 這樣,如果Gearman或機器本身發生故障,您可以將其重新停下來的地方重新帶回去。 如果其他工人倒下,則多個工人服務器可以幫助保持正常運轉。

節點具有一個集群模塊 ,可以對n個進程進行基本的負載平衡。 您可能會發現它很有用。

在nodejs-land中,一種常見的體系結構是讓您的節點使用http,然后使用某種負載平衡方式,例如http代理服務注冊表 我相信其他地方差不多一樣。 我對Gearman的了解還不夠多,很難說它是否“足夠好”,但是如果這是一個普遍的想法,那么我想那會很好。 至少,其他人會對我確信它的發展感興趣!

編輯:記住,數字壓縮將阻止節點的事件循環! 如果您考慮一下,這似乎很明顯,但絕對要記住一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM