7 层 TCP 路由代理 ProxyMachine

MIT
Ruby
Linux
2015-02-17
小编辑

Proxy Machine 是一个简单的 7 层 TCP 路由代理,基于 EventMachine 构建,可使用 Ruby 语言配置路由规则。如果你需要将不同的请求内容转发到后端不同的服务器上,那么 ProxyMachine 非常适合你。

ProxyMachine 主要为 Github 的集群架构而开发,每天可代理几百万请求,性能和内存占用表现良好。

安装:

$ gem install proxymachine -s http://gemcutter.org

使用方法:

Usage:
  proxymachine -c <config file> [-h <host>] [-p <port>]

Options:
  -c, --config CONFIG              Configuration file
  -h, --host HOST                  Hostname to bind. Default 0.0.0.0
  -p, --port PORT                  Port to listen on. Default 5432

示例配置:

class GitRouter
  # Look at the routing table and return the correct address for +name+
  # Returns "<host>:<port>" e.g. "ae8f31c.example.com:9418"
  def self.lookup(name)
    ...
  end
end

# Perform content-aware routing based on the stream data. Here, the
# header information from the Git protocol is parsed to find the 
# username and a lookup routine is run on the name to find the correct
# backend server. If no match can be made yet, do nothing with the
# connection.
proxy do |data|
  if data =~ %r{^....git-upload-pack /([\w\.\-]+)/[\w\.\-]+\000host=\w+\000}
    name = $1
    { :remote => GitRouter.lookup(name) }
  else
    { :noop => true }
  end
end
加载中

评论(2)

刘亚辉

暂无资讯

暂无问答

[设计模式]Proxy代理模式

1.定义 给某个对象提供一个代理对象,由代理对象控制对原对象的引用。 区别: 1.适配器模式:适配器模式改变对象的接口,代理模式不改变接口。 2.装饰器模式:装饰者模式是为了增加功能,代理...

2018/10/08 18:12
5
0
GitHub的Rails/Git架构

这是一片老文,但是很有参考意义,特转来并更新了其中一些链接。 英文原文更详细些。 GitHub 上个月宣布把所有服务器转移到 Rackspace,他们原先在 Engine Yard 使用的是云计算和虚拟机 10 V...

2013/05/08 18:18
1K
0
OSChina 技术周刊第二十三期 —— 每周技术精粹

每周技术抢先看,总有你想要的! 移动开发 【软件】Android 调试工具 Stetho 前端开发 【翻译】25 个超棒的 HTML5 & JavaScript 游戏引擎开发库 【翻译】什么时候 AngularJS 会超越 jQuery 【...

2015/03/02 06:24
288
0

没有更多内容

加载失败,请刷新页面

没有更多内容

返回顶部
顶部