学习 HeroKu 的架构设计

| 12 Comments

这几天给我印象比较深的是 HeroKu ,提供 Ruby 快速部署环境并提供托管能力,他们的架构图做得十分漂亮,一幅图胜过千言万语,要是对 Web 架构感兴趣,都别问架构师了,看看 HeroKu 的架构估计就明白个差不多了 :)

概览图

好的架构图是画出来的,好的架构未必是设计出来的,最后架构好不好,还要看持续的改进能力。

HeroKu Overview.jpg


HTTP 反向代理

使用 Nginx , 这一层只进行 HTTP-level 的处理。Nginx 现在是不二选择。

HeroKu Reverse Proxy.jpg


HTTP Cache

对于静态内容,使用 Varnish 进行缓存。如果你在 Squid 和 Varnish 之间作选择,这里已经投了一票。

HeroKu HTTP cache.jpg


路由网(Routing Mesh)

Erlang 实现的架构组件,路由寻址,用以提升可用性和扩展性。

HeroKu Routing Mesh.jpg


动态网格(Dyno Grid)

用户部署的代码运行在这里,可以简单看成是应用服务器集群环境,只是粒度更小一点而已。

HeroKu Dyno Grid.jpg

对于 Dyno Grid 的进一步信息:

HeroKu Dyno Grid Arch.jpg

服务器操作系统是 Debian ;Ruby VM 是 MRI ,开源,C 写的;App Server 用的 Thin,他们说 Thin 比 Mongrel 更精炼;Rack,应用服务器接口;Rack 中间件,可选组件;框架,任何 Rack 兼容的都成;最后是客户托管的代码。

数据库

PostgreSQL,也可以采用远程数据库。

HeroKu Database.jpg


Memory Cache

Memcached ,居家旅行架构必备。

HeroKu Memcached.jpg

这几张图看下来,多少算是对 Ruby 环境有了一些感性认识。可以进一步查看 HeroKu 提供的文档,包含了一些代码实现上的准则。

部署是基于 Git 的。不知道大家有没有注意到 Git 在最近一年来的爆发? 超过 SVN 或许不是不可能的。

国内热炒"云计算"的,跟人家学学吧,与其整天帮着客户开发定制软件,还不如给客户提供一些弹性应用托管环境,起码看起来靠谱一些。

HeroKu ,不读 Hero-Ku, 读作 Her-oh-koo, 挺有趣

--EOF--

图的来源:HeroKu Platform Architecture

12 Comments

"使用 Nginx , 这一层只进行 HTTP-level 的处理。Nginx 现在是不二选择。"
我怎么觉得HAProxy是不二选择呢?

忍不住想纠正一下:
是PostgreSQL,不是PostGreSQL

另外,关于Git,和你有同感。

@laogao

实在忍不住,我修改了 :)

图画的很漂亮,不知道啥工具做出来的。
GIT 有必要整整看你了。咨询的人越来越多了

GIT貌似真要爆发了,SF也提供了。

其实,这些架构没有什么是面向Ruby的,基本上都是通用的。我用了Ruby,你用了Java,他也可以用于ASP.NET。

所谓Ruby/PHP/Java/ASP.NET技术,只是整个架构的一小部分。这些架构的分层往往都是正交的,可以任意组合。

学习了,又有一个人知道Git了,^_^

花了两天时间给一个客户做了个小站。
放到了heroku上
http://fuzhuang.heroku.com/


就如heroku主页上说的那样,真的是非常简单!

其实我也比较关注这画图工具啊,很不错的。

这个蛮不错的。尤其是mesh那层。非常好。当然如果在Dyno Grid层能够支持更多的级别,比如RPC,就更好了。:)

尤其是这句话:"Compiled Slugs
When you push code to Heroku, we compile a slug – a self-contained, read-only version of your app including all its dependencies, that's ready to be launched into the grid. This is part of how we can start new dynos so quickly."
这个概念和实现是分布式应用的基础阿。

关于本文

This page contains a single entry by Fenng published on March 14, 2009 1:14 PM.

有道阅读的技术信息 was the previous entry in this blog.

杭州四年 is the next entry in this blog.

Find recent content on the main index or look in the archives to find all content.