zoukankan      html  css  js  c++  java
  • fleet中service之间的依赖关系

    最近有人在topcoder上提出使用fleet在集群上部署service时有时候会发现,当启动依赖于整个集群服务的service时,只会检查那个service所在机器的依赖关系,这样就会造成一些问题,比如说用多台服务器提供一个paas的时候,只要其中一个服务器坏掉,那个service就不应该启动。

    正好之前用过fleet,于是就深入研究一番。fleet是一个分布式的服务启动管理系统,可以将某个服务自定义的运行在集群之中。fleet检查service依赖的方法有两种,
    一个是unit file自身的属性 Require=... 和After=...例如:

    [Unit]
    Description=Depend on zrpc
    After=zrpc.service
    Requires=zrpc.service
    

    After的意思是说当几个service同时启动的时候,这个会在after指定的service之后启动。
    Require的意思是说如果发现require的service没有启动,就会先启动require的service。这两个属性经常放在一起使用。

    还有一个就是fleet添加的属性,如:

    [X-Fleet] 
    MachineOf=zrpc.service
    

    意思就说这个service只会在运行了zrpc.service的机器中启动。

    那fleet是怎样解决依赖于整个集群service之间的依赖关系的呢?答案是没有,至少在目前的版本中还没有这个功能。虽然在部署的时候可以通过设置[X-Fleet] Global=true让某个服务在整个集群中启动,但是它还是只会检查所在机器的依赖关系。

    具体的例子:
    假如我们有两个service,一个是depend.service, 一个是zrpc.service,depend.service是依赖于zrpc.service的。
    首先启动zrpc.service.

    然后启动dpend.service

    一切正常,因为每台机器上的依赖关系都满足。但是如果我们关掉其中一个机器的zrpc.service:

    会发现只有一个depend.service停掉了,因为它只检查了所在机器的依赖关系。

  • 相关阅读:
    Android内存优化5 了解java GC 垃圾回收机制3
    一起刑事案件法庭辩护 z
    辩护技巧总结——律师在刑事辩护中应注意的几个问题 z
    证据对抗、证据链标准 z
    里德九步审讯法 z
    WCF服务在高并发情况下报目标积极拒绝的异常处理 z
    C#EasyHook例子C# Hook 指定进程C#注入指定进程 z
    玄机论坛Socket类库源码 当前版本 2.6.3 更新日期:10-09/2015 z
    庭审全程文字实录 z
    庭审精彩语录整理 z
  • 原文地址:https://www.cnblogs.com/daizuozhuo/p/4480658.html
Copyright © 2011-2022 走看看