NATS

NATS是一个轻量级的基于pub-sub机制的分布式消息队列系统,它负责衔接各组件。所有组件的配置项里都有nats的配置。官方安装文档在这里

但看完官方文档仍然有点不太直观,举几个典型的例子来说明一下:

向router注册

不管是外部用户对平台上的应用发起的请求,还是内部组件提供对外的api(uaa和cloud controller),都是通过router转发的request,要能让router转发则首先需要向router注册。 以下是实现逻辑:

  • router启动时,会订阅 router.register 这个channel,同时也会定时的向 router.start 这个channel发送消息,
  • 其他需要向router注册的组件,启动时会订阅router.start这个channel。一旦接收到消息,会立刻收集需要注册的信息(如ip,port等)然后向router.register频道发送消息。
  • router接收到router.register消息后立即更新路由信息。
  • 以上过程不停循环,使router的状态时刻保持最新。

cloud controller指挥dea进行打包和运行。

  • 所有组件,包括dea启动时,会生成一个唯一的UUID,来标识组件。dea会定时的将自身情况和ID发送到stager.advertise 和 dea.advertise这两个channel,同时会订阅 staging.<uuid>.start 和dea.<uuid>.start这两个channel
  • cloud controller 订阅这两个channel 并根据channel的信息构造并时刻更新dea_pool和stager_pool,
  • 当有打包或者运行应用的请求时,cloud controller会去查询这两个pool,如果有合适的dea,就会向对应的[dea|stager].<uuid>.start发送消息
  • 对应uuid的dea收到消息,根据消息执行打包或运行任务。

还有很多类似的衔接各组件的逻辑,都可以在源码中发现。

这里有一个非官方且不完整的cloudfoundry 1.0的消息说明文档,http://apidocs.cloudfoundry.com/ ,仅供参考。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值