Paritition Layer 架构(Architecture)
The Paritition Layer 有三个主要的组件构成, 如下图所示。Partition Manager(PM), Paritition Servers(PS), Lock Service.
Partition Manager(PM): 负责对大的对象的切分跟踪到RangeParition级别,并且将RangePartition分配到具体的Partition Server上。在每个Stamp中PM会将Object Table分割成N个RangePartition,并记录其Parition server的位置。PM会将这些映射assingment关系,存储在Parition Map Table中。PM会保证每次RangePartition赋值给已存在的parition server上,并且两个Parition Server存储的RangePartion的内容不会重叠。PM还会负责RangeParition的load balancing. 每个stamp中有多个同时运行PM,它们通过存储在Lock Service中的Leader Lock进行竞争,并获得租约。带有租约的Partition Manager是当前激活的PM控制着parition layer.
Parition Server (PS): 负责处理由PM发送的RangeParition的请求。PS存储着将所有持久化的状态存储到stream中并且维护一份内存中的cache提高效率。根据Lock Service提供的租约机制整个系统会保证任何时候不存在两个partition server同时处理同一个RangePartition。租约机制同时提供了强一致性以及并发事务的顺序。PS可以同时处理来自多个不同的Partition Server的请求。
Lock Service: 基于Paxos Lock Service用来做PM的领导