问题描述
|
我正在从头开始构建反向代理。要求是:
1)超级可扩展。它必须处理许多并发请求(对于我来说,每秒1000个请求也是流的,这是一个很好的性能)
2)超快速(无阻塞)。
3)没有C / C ++或Erlang
4)易于维护-即使可以,也不能选择组装:)
经过研究,大多数人建议使用
node.js
或Scala
-您认为这种工作的最佳解决方案是什么?您将使用哪些技术来构建这种代理?
谢谢
解决方法
我个人会先尝试这个家伙。
稍微说明一下,那些说“尝试使用node.js或Scala”的人被误导了,因为Scala(像Java)只是一种编程语言,而node.js则是大多数平台。除了其一般优势之外,Scala为此类项目带来的主要优势还包括:
语法多汁,可以更轻松地将actor系统编写为库,即PartialFunction \“ literals \”:
特质NeedsAPF {
def pf:PartialFunction [Any,Unit]
}
PFHaver对象扩展了NeedsAPF {
def pf = {
情况一:Int => println(\“我有一个int,它是\” + i)
}
}
当您准备好使用它时,可以使用continuations插件,该插件可以让您编写看起来是同步的代码,但在幕后可以是异步的。
, 我来看一下:https://github.com/nodejitsu/node-http-proxy,因为它可以满足您的所有要求。我不确定为什么需要从头开始构建它,但是我想如果您决定在节点中构建它,那么您至少可以从中得到启发。
, Scala应该足够好,但是您将需要大量使用NIO,这意味着您可能会与Java的NIO库保持密切联系。我不知道Scala中提供的任何库是否可以帮助您解决此问题,但是,再次查找它是您的工作,而不是我的。 :-)