servicegroup的mc实现
来源:互联网 发布:什么是软件质量 编辑:程序博客网 时间:2024/05/22 04:38
前面的博文分析过servicegroup的实现分为db和mc两种,前面已经说过db了,下来看看mc的实现,这里的mc全称应该是memcached_client的缩写class MemcachedDriver(base.Driver): def __init__(self, *args, **kwargs):#首先在init函数中为mc赋值 self.mc = cache_utils.get_memcached_client( expiration_time=CONF.service_down_time) def join(self, member_id, group_id, service=None): """Join the given service with its group.""" LOG.debug('Memcached_Driver: join new ServiceGroup member ' '%(member_id)s to the %(group_id)s group, ' 'service = %(service)s', {'member_id': member_id, 'group_id': group_id, 'service': service}) if service is None: raise RuntimeError(_('service is a mandatory argument for ' 'Memcached based ServiceGroup driver')) report_interval = service.report_interval#在join函数中和db的实现一样,都是在要监视的servie中创建一个time,且timer的回调函数为_report_state#这个join函数是否可以放到#基类base.Driver 中去实现呢? if report_interval: service.tg.add_timer(report_interval, self._report_state, api.INITIAL_REPORTING_DELAY, service) def is_up(self, service_ref): """Moved from nova.utils Check whether a service is up based on last heartbeat. """#按存入mc的规则组装key key = "%(topic)s:%(host)s" % service_ref#判断这个service是否还活着的方法就是判断mc.ge中是否包含key is_up = self.mc.get(str(key)) is not None if not is_up: LOG.debug('Seems service %s is down', key) return is_up def _report_state(self, service): """Update the state of this service in the datastore.""" try: key = "%(topic)s:%(host)s" % service.service_ref#和is_up函数中相同的规则来组装key,通过mc.set函数保存key和当前的ut时间 self.mc.set(str(key), timeutils.utcnow())mc机制和db机制实现基本是一样的,不同在写入的存储介质不一样,db是写入到数据库中.而mc是写入到mem cache中.
阅读全文
0 0
- servicegroup的mc实现
- servicegroup的db实现
- mc/dc实现方法
- MC
- mc
- sendmail.mc配置文件的解释
- HPUX的MC经典攻略
- MC的一些常用属性
- sendmail.mc配置文件的解释
- MC嵌套访问的问题
- AS3改变mc的颜色。
- 蒙特卡洛(MC)方法的原理
- BZOJ3439: Kpm的MC密码
- BZOJ3439 KPM的MC密码
- MC和redis的区别
- BZOJ3439: Kpm的MC密码
- bzoj3439: Kpm的MC密码
- 使用mc-tool实现empathy的自动登录与处理密钥环问题
- 又快又稳地安装mxnet-cu8.0
- 了解目前火热的AI行业
- 设置:查看历史记录的时间
- jquery查找父元素、子元素(个人经验总结)--zsl代修改
- matlab自带的分类器的测试和分类
- servicegroup的mc实现
- RxJava1.0+Retrofit结合使用
- 欢迎使用CSDN-markdown编辑器
- java日期工具类2
- 软件调试笔记42
- 利用用户的行为数据
- 词频分析
- centos6.5卸载自带jdk
- QT QAbstractSocket SocketError和 一些网络编程 用到的值