service group

在nova service启动时,还有一个小地方,需要提一下,那就是service group,听起来可能有些不太好理解,初始化阶段主要有三个动作和其相关:

self.servicegroup_api = servicegroup.API()

self.service_ref = objects.Service.get_by_host_and_binary(ctxt, self.host, self.binary)

self.servicegroup_api.join(self.host, self.topic, self)

关键是第三个动作join, 我们trace一下:在nova/servicegroup/api.py中的join方法:

return self._driver.join(member, group, service)

这self._driver类型有三种:

_driver_name_class_mapping = {
    'db': 'nova.servicegroup.drivers.db.DbDriver',
    'zk': 'nova.servicegroup.drivers.zk.ZooKeeperDriver',
    'mc': 'nova.servicegroup.drivers.mc.MemcachedDriver'
}

默认为db,还有zookeeper与memcached两种,一看到zookeeper,就大概知道servicegroup的主要功能应该是统一系统状态,

hadoop中zookeeper也发挥了重要的作用,zookeeper本身的思想还是很有意思的,在marklink中有一篇不错的文章。

再看DbDriver的join方法,注册了一个period任务,定时调用_report_state方法,报告service的状态,即host上对topic进行处理的

service是否是connect状态。

三个driver都有自己的is_up函数,配置Driver之后,在openstack中需要判断service时候仍处于connected状态时候便到了其发挥作用之时:

例如在live_migration时候判断compute service时候仍在工作状态,

scheduler中调度compute node时候也判断了service的情况,等等。


mark link:

zookeeper: http://cailin.iteye.com/blog/2014486/

memcached: http://blog.sina.com.cn/s/blog_493a845501013ei0.html



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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值