Cloud Foundry--NATS

  第一次接触CloudFoundry,虽然学校里面专业是分布式计算,但是平时除了做一些应用层的开发,在云计算这块还真没接触过,这两个星期充电看了一些这方面的资料,建立了基本的框架性概念,现在研究Cloud Foundry PaaS平台,粗略写一点自己的学习心得。

  看一个系统首先从总的系统架构图上看,Cloud Foundry 整体架构的核心是基于消息机制的组件互联,组件之间通讯依赖NATS,什么是NATS呢?Google了一下,资料不是很多,总的来说,NATS是一个分布式消息队列系统,用Ruby实现,基于EventMachine,那什么是EventMachine呢?InfoQ上面有这么一篇文章,比较详细的介绍了一下EventMachine,http://www.infoq.com/cn/news/2008/08/eventmachine      当然如果想要获得源码或者完整的文档,可以看EventMachine的官方网站http://rubyeventmachine.com/   上面有Wiki,有源码和API文档。我个人理解是,EventMachine是一个用于网络和并发编程的框架,它接收事件并将其派发给已注册的事件处理。这种模型避免使用多线程编程模型,多线程编程有很多顽疾,尤其是在网络服务器方面,如果想要在线程之间有共享状态的话,要让多线程程序完全运行正确是很困难的事情。而EventMachine是事件驱动,并不是多线程。

回到NATS, https://github.com/derekcollison/nats 这是NATS的Github地址, 上面提供了安装说,安装很简单,只要安装好ruby运行环境以后,执行gem install nats,再执行nats-server 启动,默认监听4222端口。所有组件的config目录下都有“组件名.yml”文件,将其中的"mbus:nats://10.134.226.8:4222/ "中的IP地址调整成启动nats-server的主机地址,如果是部署一个只有一个cloud_controller+health_manager结点,任意多个dea/router结点的集群的话,集群就配置完成了。这样NATS服务就开启了,大部分的Cloud Foundry模块都通过NATS交互,订阅和发布JSON格式的消息。

GitHub上面提供了几个简单的示例:

 

  # Simple Subscriber
  NATS.subscribe('foo') { |msg| puts "Msg received : '#{msg}'" }

  # Simple Publisher
  NATS.publish('foo.bar.baz', 'Hello World!')

  # Unsubscribing 


        本菜鸟对于Ruby不是很熟悉,但是可以看到首先将自己注册到组件中,然后可以获得Component提供的uuid。然后就向NATS订阅了一堆的消息,每个消息都是DEA可以提供的一个功能,其他组件如果需要使用DEA的某个功能,就只需要向NATS发布一个相对应的消息即可。

 

....................................................................

详细请点击:http://www.verydemo.com/demo_c119_i2177.html

你可能感兴趣的:(cloud)