2018-07-21

民主集中制原则

考虑一个场景.

一个节点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的区别.

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







没有评论:

发表评论

爽文

去看了好东西. 坦白说,多少是带着点挑刺的味道去的. 毕竟打着爱情神话和女性题材的气质,多多少少是热度为先了. 看完之后倒是有些新的想法. 某种程度上来说,现在的年轻人或者说声音就像小叶. 只要说点贴心的话就能哄好. 也是那种可以不用很努力了. 留在自己的舒适区避难所小圈子抱团就...