我对服务维活的思考

    近来,在参加面试,面试过程中也遇到各种各样的问题。现将其中的一个问题分享出来,也分享下自己的思考,如有错误,欢迎指正。

    问题:我现在有成千上万台的服务,因为数目巨大,不可能人为的去监控,那么我要如何去监控这些服务的存活或者是否有卡死?

    结果:当时,我直接被这个问题卡住了,原因有二:

         1. 成千上万台服务的话,意味着本身服务比较多,如果设计一个监控中心,那么这种检测就会变的很庞大,尤其是如果不止万台,或者更多呢?

         2. 如果监控中心卡死或者宕机了的话,又该如何去监控呢?

    后续:当时被卡之后,面试官说觉得不适合当前岗位,看是否考虑其他岗位,我回答说可以考虑考虑。之后从公司出来之后,我继续思考这个问题,终于有了一下的思路,但不一定准确,只是讨论讨论:

          1. 针对服务量大的问题,我是否可以将监控中心拆分,我按照分组的方式,将不同组的服务状态使用不同的监控中心进行监控管理,这样就可以分担因为服务量大造成的监控中心监控响应问题。

          2. 对于监控中心同样会死的情况下, 我是否可以从所有的监控中心中选取其中一个监控中心,用于做为管理,管理各个监控中心的状态,管理的选择可以采用一些适当的策略。如果当前管理失效,继续从剩下的监控中心中选出一个新的管理。

         3. 于此问题,监控中心管理还可以将之前已经宕机或者卡死的监控中心的所监控的服务重新分配。

 如图:

  

     现在假设:

      1. 监控中心2宕机了,则可以将服务2-1分配到监控中心1,服务2-2分配到监控中心3,这样的话,所有的监控依旧正常运转。

      2. 监控中心宕机了,假设使用某种策略选举了监控中心1作为监控中心管理,则只需将监控中心1原本监控的服务分配到其他服务上进行监控, 由监控中心接管原监控中心管理业务即可。

 

     总结:上述只属于思路,但实现的过程中,考虑问题比较多,切不可大意。也欢迎各方朋友讨论指正