Web Service Monitor

本文介绍的Web service monitor常常用于管理维护大中型web service。它一般具有以下功能:

  • 周期性地访问web service,实时监控web service状态。
  • 当web service发生异常时,立刻通知管理员。
  • 当web service异常时,自动修复web service。一般重启service就能解决大部分问题。
  • warm up web service,减少web service冷启动所带来的第一次访问响应时间长的问题。

下图是作者实际应用中开发使用的Monitor的结构。最底层是server cluster,各个server都在monitor的监视之下。如果某个server发生异常,monitor首先会试图通过重启来修复service。如果重启也不管用,那么就通知管理员。最后还得通过管理员来人工修复这个service。

我选择了使用状态机来实现这个monitor,service可以的状态大概有三种:

  • 正常, 这状态下monitor只需周期性地检查service状态,捕获异常。我们也称其为Failure Detector状态
  • 异常,这状态下monitor会试图修复service。我们也称其为Service Repairer状态
  • 停止,service 的异常无法修复变进入这个状态。其实也是等待人工修复的状态,在这个状态下monitor依然周期性地检查service,看是否已经被人工修复。因而又称其为Recover Detector状态


下面看具体实现:

首先定义状态的接口,包含一个函数,它对应于状态转移的行为。

 

接下来是一个状态的具体例子。如前所述,这个状态负责检查web service运行情况,如果web service正常,那么它将进入_success状态,如果有异常将进入_failed状态。

看下状态转移函数的具体实现,_calls是用户自定义的检查函数,如果发现web service出问题了,它将抛一个异常处来。

根据前面的介绍,我们实现了剩下的状态类。例如:



 有了这些状态,我们就可以来配置各种不同的状态机了。

例如我们定义一种检测web service,如果发现异常就发邮件通知用户的状态机。

我们也可以在NotifyWhenFailureFound这个状态机中添加修复一个状态,在它发现web service异常时,调用修复功能,例如:

最后,看看我们如果使用这些定义好的状态机吧。

其实就是在while{}中执行这些状态机。

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值