【问题标题】:Building a reverse proxy构建反向代理
【发布时间】:2011-09-21 15:20:15
【问题描述】:

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

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

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

谢谢

【问题讨论】:

  • 超级可扩展和快速并不是一个很明确的要求。你有更可量化的用例吗?
  • node.js 可以处理。我真的不知道 node.js 与 Scala 的优势,但我喜欢 node,所以我投票了 ;)
  • 有一些相当不错的高性能反向代理已经准备就绪...... Nginx、HAProxy 等。你需要做什么而他们不需要?

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


【解决方案1】:

我个人会先尝试this guy

稍微解释一下,那些说“尝试 node.js 或 Scala”的人有点被误导了,因为 Scala 就像 Java 一样只是一种编程语言,而 node.js 主要是一个平台。除了一般优势之外,Scala 为此类项目带来的主要优势是:

  1. 一种有趣的语法,可以更轻松地将actor系统编写为库,即PartialFunction“文字”:

    特质需要APF { def pf: PartialFunction[Any,Unit] } 对象 PFHaver 扩展 NeedsAPF { 定义 pf = { case i: Int => println("我得到一个 int 并且它是 " + i) } }
  2. 当您准备好时,continuations plugin 可以让您编写看起来是同步的,但实际上可以是异步的。

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      Scala 应该足够好,但您需要经常使用 NIO,这意味着您可能会密切接触 Java 的 NIO 库。我不知道 Scala 中的任何可用库是否会在这方面对您有所帮助,但话说回来,查找它是您的工作,而不是我的工作。 :-)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-04-28
        • 2016-11-17
        • 2020-04-15
        • 2020-06-20
        • 1970-01-01
        • 2021-12-26
        • 1970-01-01
        相关资源
        最近更新 更多