ivaneeo's blog

自由的力量,自由的生活。

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks

很早之前在Infoq上看到Heroku的介绍,不过当时这个网站并没有推出,今天在整理收藏夹的时候发现,Heroku已经推出一段时间,而且现在作为云计算平台已经有很快的发展了。

Heroku是Rails应用最简单的部署平台。只是简单的把代码放进去,然后启动、运行,没人会做不到这些。Heroku会处理一切,从版本控制到 自动伸缩的协作(基于Amazon的EC2之上)。我们提供一整套工具来开发和管理应用,不管是通过Web接口还是新的扩展API。

HeroKu的架构大部分是采用开源的架构来实现的,:)其实构建云计算平台,开源的世界已经解决一切了,不是吗?下面看看HeroKu的架构图,非常漂亮:

Heroku架构图

一、反向代理服务器采用Nigix

Nigix是一个开源的,高性能的web server和支持IMAP/POP3代理的反向代理服务器,Nigix不采用多线程的方式来支持大并发处理,而是采用了一个可扩展的Event-Driven(信号asynchronous)的网络模型来实现,解决了著名的C10K问题。

Nigix在这里用来解决Http Level的问题,包括SSL的处理,Http请求中转,Gzip的传输压缩等等处理,同时应用了多个前端的Nigix 服务器来解决DNS及负载均衡的问题。

二、Http Cache采用Varnish

Varnish is a state-of-the-art, high-performance HTTP accelerator. It uses the advanced features in Linux 2.6, FreeBSD 6/7 and Solaris 10 to achieve its high performance.

Varnish在这里主要给采用来处理静态资源,包括对页面的静态化处理,图片,CSS等等,这里请求获取不到的再通过下一层的Routing Mess去获取。通常还有另外一个选择Squid,不过近几年来,Varnish 给大型网站应用的更加的多了。

三、动态路由处理层,这里采用了Erlang 实现的,是由该团队自己实现的,Erlang 提供了高可靠性和稳定性的服务端实现能力(其实,我们也可以这样去使用),这个层主要是解决路由寻址的问题,通过合理分配动态过来的请求,跟踪请求的负载能力,并合理的分配可获取的下一层app 服务。这个层实现了对业务app的可扩展性和容错性,可以根据下一层服务的负载容量来合理进行路由的选择。原理上它是一个分布式的动态HTTP请求的路由池子。

四、动态网格层,用户部署的app是部署在这一层,可以看成是一个服务器集群,只是粒度会更加的细小。

五、数据库层,这里不用多说了

六、Memory Cache

也不需要多说,现在大部分互联网公司都在应用,而且基于它开发了很多好的连接器,我们公司其实也有在采用,不过我们还有自己开发的分布式内存系统,如原来的TTC Server,现在好像叫WorkBench。

posted on 2011-02-19 12:14 ivaneeo 阅读(402) 评论(0)  编辑  收藏 所属分类:

只有注册用户登录后才能发表评论。


网站导航: