构建反向代理

时间:2011-06-23 22:55:27

标签: scala programming-languages node.js proxy reverse-proxy

我正在从头开始构建一个反向代理。要求是:

1)超级可扩展。它必须处理大量并发请求(也是流式传输,1000请求/秒在我的情况下将是一个很好的性能)
2)超快(非阻塞)。
3)没有C / C ++或Erlang
4)容易保持 - 即使它是,大会不是一个选项:)

经过一些研究,大多数人建议使用node.jsScala - 您认为这种工作的最佳解决方案是什么?您将使用哪种技术来构建此类代理?

由于

3 个答案:

答案 0 :(得分:4)

我个人先试试this guy

只是为了解释一下,那些说“尝试node.js或Scala”的人在Scala-like 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)
      }
    }
    
  2. 当你准备好它时,continuations plugin,它允许你编写看似同步的代码,但可以是异步的。

答案 1 :(得分:0)

我会看一下:https://github.com/nodejitsu/node-http-proxy,因为它满足您的所有要求。我不确定为什么需要从头开始构建它,但我想如果你决定在节点中构建它,你当然至少可以从中获取灵感。

答案 2 :(得分:-1)

Scala应该足够好,但是你需要经常使用NIO,这意味着你可能会与 Java的 NIO库保持密切联系。我不知道Scala中是否有任何库可以帮助你,但是,再一次,你的工作是查找它,而不是我的。 : - )