我正在從頭構建反向代理。要求是:構建反向代理
1)超級可擴展。它必須處理很多併發請求(也是流式傳輸,在我的情況下,1000請求/秒會是一個很好的性能)
2)超快速(非阻塞)。
3)無C/C++或二郎
4)易於十個分量 - 即使是,大會是不是一種選擇:)
經過一番研究,大多數人建議使用node.js
或Scala
- 你是什麼認爲是這種工作的最佳解決方案?您將使用哪些技術來構建這種代理?
感謝
我正在從頭構建反向代理。要求是:構建反向代理
1)超級可擴展。它必須處理很多併發請求(也是流式傳輸,在我的情況下,1000請求/秒會是一個很好的性能)
2)超快速(非阻塞)。
3)無C/C++或二郎
4)易於十個分量 - 即使是,大會是不是一種選擇:)
經過一番研究,大多數人建議使用node.js
或Scala
- 你是什麼認爲是這種工作的最佳解決方案?您將使用哪些技術來構建這種代理?
感謝
我個人會先試用this guy。
只是爲了闡述一下,那些說「嘗試node.js或Scala」的人略微誤導了Scala —就像Java —只是一種編程語言,而node.js是大多數平臺。除了一般性的優勢,主要的事情斯卡拉帶來的表這類項目有:
語法的多汁位,使得它更容易編寫演員系統,圖書館,即PartialFunction「文字」:
trait NeedsAPF { def pf: PartialFunction[Any,Unit] } object PFHaver extends NeedsAPF { def pf = { case i: Int => println("I got an int and it was " + i) } }
當你準備好了,一個continuations plugin,它可以讓你寫的代碼看起來同步,但可以在幕後異步的。
斯卡拉就足夠好了,但你需要使用NIO了很多,這意味着你可能會在與Java的 NIO庫親密接觸。我不知道Scala中有沒有可用的庫可以幫助你,但是,再一次,查找它是你的工作,而不是我的。 :-)
我想看看:https://github.com/nodejitsu/node-http-proxy,因爲它滿足您的所有要求。我不知道爲什麼需要從頭開始構建它,但是我想如果你決定在節點上構建它,你當然可以從中獲得靈感。
超級可擴展和快速並不是一個非常明確的要求。你有更可量化的用例嗎? – Tobu
問題更新 – Mark
node.js可以處理它。我真的不知道node.js和Scala的優點,但我喜歡節點,因此得到了我的投票;) – Raynos