云分区,简单来说,是对IaaS中的资源进行划分的一种概念。
根据划分区域的大小,云分区可以分为三种级别:Provider level(也是IaaS level), Region level, Zone level 或者 Rack level,这些其实是对应着区域的概念,区域可以分为 region.zone.rack
Partition至少应该定义有“IaaS level”。
有时候为了需要,“分区组”的概念也被理解为“分区”而已
为了“高度可用性”的指标,DevOps可以定义多个分区,用以指示Apache Stratos在多个区域派生出实例。多个区域派生出实例的好处是可以在防止在单个实例的失效的情况下,整个系统依旧是可以使用的。例如,如果你在EC2的zones中派生了多个实例,某时即使一个zone挂了,你的系统依旧可以正常工作。
云分区示意图
Network Partitions
网络式分区,也称为一个“分区组”.
每一个region会划分出独立的地理区域。每一个region都会有多个独立的被称为zone的区域,即region往下可划分为zone这个更小的单位。因此,多个partitions可以成组形成一个network partition.
如果需要,DevOps可以定义多个由多个partition组成的partition groups,来达到high availability的目的。
在一个network partition中的各个partition之间的分区算法,已经定义在了部署的配置文件中。而network partition之间的分区算法,则定义在应用的配置文件中。
Network Partition Algorithms
Partition 算法定义了scaling机制,以用来在network partitions之间派生实例。
在一个network partition中使用的partition算法,与不同的network partition之间的使用的partition算法是不一样的。
比如:两个network partition,分别为NP1,NP2,在PG1中两个独立的partition,分别为P1,P2.那么NP1,NP2之间使用的算法和P1和P2之间的算法是不一样的。
Network-partitions示意图
Partition算法分类
1.one After another
释义:只有当一个partition中的实例达到最大量时,才会在另外一个partition中派生实例。
例子:两个partitions名为P1和P2,实例首先在P1中派生,直到partition1中的实例达到上限,才会在P2中派生新的实例
适用范围:普通的partitions之间以及network partitions之间
2.Round Robin
释义:每个partitons依次派生实例
例子: 两个partitions名为P1和P2,当这次实例是派生在P1时,下次则是派生在P2中
适用范围:只是在普通的partition之间
3. at all once
释义:在应用程序中的全部partiton中派生实例
例子:一个应用程序有两个partitions名为P1和P2,则派生时同时在P1和P2中派生实例。
适用范围:普通的partitions之间以及network partitions之间
适用场景举例
在一个典型的cloud bursting场景中,一般可以使用one after another算法,比如,一个企业在一个partition中拥有它自己的私有云,全部的实例将会被分配该partition中,当私有云的容量被耗尽的时候,可以启用公有云中的下一个partition。
而Round Robin算法使用需要高度可用性的场景。高度可用性的场景指的是实例被派生到了多个IaaS中。
补充:
AutoScaler会依据在network partitions中定义好的partitions来做出scale的决定。Network partitions在Apache Stratos中被定义为用来管理实例的数量。network partition被定义在network partition JSON文件中,部署策略可以被定义为group level级别或则cartridge level级别,并且其中定义了在一个组或则cartridge中的实例的最大数量。