我在从头开始做反向代理。这些要求是:1)超级可扩展。它必须处理大量的并发请求(也是流,在我的情况下,1000请求/秒将是一个很好的性能)2)超快(无阻塞)。3)没有C/C++或Erlang4)容易维护-即使是,组装不是一个选择:)经过一些研究,大多数人建议使用node.js或Scala-你认为这类工作的最佳解决方案是什么?您会使用哪些技术来构建这种代理?谢谢
node.js
Scala
wljmcqd81#
我个人会先尝试Scala Finagle库。简单地说,那些说“试试Node.js或Scala”的人有点被误导了,因为Scala就像Java一样只是一种编程语言,而Node.js更像是一个平台。除了它的一般优势外,Scala为这类项目带来的主要好处是:1.这是一个有趣的语法,可以更容易地将actor系统编写为库,即PartialFunction“literals”:
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) } }
1.当您准备好使用continuations plugin时,它可以让您编写看起来是同步的代码,但实际上可以是异步的。
thigvfpy2#
我想看看node-http-proxy,因为它满足您的所有要求。我不知道为什么需要从头开始构建它,但我想如果你决定在node中构建它,你至少可以从中获得灵感。
wmomyfyw3#
Scala应该已经足够好了,但是您需要经常使用NIO,这意味着您可能会密切接触 *Java的 * NIO库。我不知道Scala中是否有任何可用的库可以帮助你。
3条答案
按热度按时间wljmcqd81#
我个人会先尝试Scala Finagle库。
简单地说,那些说“试试Node.js或Scala”的人有点被误导了,因为Scala就像Java一样只是一种编程语言,而Node.js更像是一个平台。除了它的一般优势外,Scala为这类项目带来的主要好处是:
1.这是一个有趣的语法,可以更容易地将actor系统编写为库,即PartialFunction“literals”:
1.当您准备好使用continuations plugin时,它可以让您编写看起来是同步的代码,但实际上可以是异步的。
thigvfpy2#
我想看看node-http-proxy,因为它满足您的所有要求。我不知道为什么需要从头开始构建它,但我想如果你决定在node中构建它,你至少可以从中获得灵感。
wmomyfyw3#
Scala应该已经足够好了,但是您需要经常使用NIO,这意味着您可能会密切接触 *Java的 * NIO库。我不知道Scala中是否有任何可用的库可以帮助你。