美文网首页
民主集中制原则

民主集中制原则

作者: zizon | 来源:发表于2018-07-21 00:09 被阅读0次

    考虑一个场景.

    一个节点initiator,通过yarn提交一个appmaster.
    然后appmaster去启动其他另外的cluster,比如prestor的coordinator和worker.

    那么这时候就有这么一个从属关系.
    initiator<-appmaster<-coordinator/worker.

    在最初的方案的时候,appmater是以unmanaged的方式提交的.
    也就是实际上是
    initoator(appmaster)<-coordinator/worker的形式.

    这个结构主要有两个问题.
    一个是实现上,局限了只能有一个presto cluster.
    虽然这点也不是架构决定的,可以重新实现.

    主要是第二点的.
    在initiator挂掉之后,虽然presto cluster可以继续存在.
    但是没有一个比较好的方式把presto cluster的信息找回来.

    因为即使在yarn cluster层面得不到实际container的各个service端口.
    自然也就没办法做进一步的事情.

    而managed appmaster的结构在于,至少还有appmaster这个可寻址的入口可以找到presto cluster的信息.
    因为存在一个appmaster的register信息在yarn cluster层面.

    所以,当initiator挂掉重启之后是有办法join回去的.
    而appmaster本身在yarn上面存在一个自动拉起的机制,所以问题也不大.
    至于coordinator和worker的拉起则可以交由appmaster去维护.

    或者给initiator.
    虽然不太和逻辑就是了.

    所以问题在于怎么实际地让各个部分join回去.

    这里里面的airlift framework有几个比较有意思的设计点或者说概念.

    一个是discovery.
    一个是inventor.
    还有一个是announcer.

    discovery就是所谓的微服务架构当中常见的name service了.
    announcer对应的就是这个service的register/announcer了.

    而inventory是个比较有趣的实现.
    有时候跟discovery是interchangeable的.
    但也并不完全是一回事.

    区别主要在bootstrap的过程.

    逻辑上来说,discovery的bootstrap uri是根据inventory拿到的.
    而inventory的获得,一个途径是通过discovery的uri对应的service获得的.

    所以这里有一个循环依赖的问题.

    不过从实现上来说,inventory是dominated的.
    所以如果它没设置,discovery还是可以自己起来的.
    然后通过其他一些手段让两者一致.

    还有一个比较重要的机制是airlift的discovery的replicate.
    它会定义的将自身的nameservice同步到这个nameservice里的其他discovery中去.

    也就是逻辑上来说,所以的discovery service都是eventually consistent的.

    因此,利用这一点的话,可以让initiator/appmaster/coordinator这些discovery host共同export一个服务.
    并互相announce这个服务.
    这样的话,任何一个挂掉都可以从其他两个那里获得需要的service列表.

    而且这里有个比较关键的点就是.
    除了coordinator的地址是随机的之外,initiator和appmaster都是可确定寻址的.

    但是这个服务不能是discovery服务.

    因为如果是的话,presto cluster的信息也会出现在initiator上.
    这样带来的问题就是这样事实上做不到多个presto集群.
    毕竟实际上都是announce到同一个discovery/nameservice里.

    事实上,这里存在一个类似union/联邦的制度.
    各个discovery节点实际上是类似于一个联邦州的概念.
    组成一个united states.
    下属的各个presto cluster或者其他whatever cluster则是每个government下的实际组织架构.

    实际上就是一种职责的分层涉及概念.

    一些相同的职责的state作为一个class.

    或者说,每一个具体的异构的function的government可以通一个high level的class label(HLCL)联系起来.

    这个HLCL实际上是一个restricted/limited的responsibility/power representation.
    它是一种有限职责的角色属性.
    履行的是一种相对固定和松散的职责.

    更多的是一种协调和平衡边界的属性/作用.

    因为如果没有这个boundary在的话,下面的每个具体的functional agency都需要自己去独立的识别其他cluster下的东西.

    也就是是leveled tree和fully connected graph的区别.

    所以某种程度上来说,民主集中制也不算是一个特别矛盾的概念.

    相关文章

      网友评论

          本文标题:民主集中制原则

          本文链接:https://www.haomeiwen.com/subject/crycmftx.html