想做一个高可用的系统,单从架构做好也是不够的,还涉及到设计、编码、测试、运维,甚至包括一些流程制度,这是一个体系化的事情。
横向单元化——构建平行的多单元可以联合提供服务我们传统的模式是单一集群,里面有很多的实例。当把单一集群拆分成很多的单元,一些实例会去共享一个单元,也有一些实例会独占一个单元,就是根据产品设计去决定的。那这样就形成一个多单元的集群,它又有什么优点呢?
1. 隔离就像水密舱,它能有效地控制爆炸的半径,避免级联的故障,所以在这种情况下能有效的非常有效地隔离故障
2. 可扩展它可以满足百亿的规模,物联网很多场景,设备之间是不可以交互的,这就决定了很多产品是可以很好的去做Partition的,有些企业想做一个百亿的规模,我们可以用100个1亿的单元构成。设计1个支持1亿设备的单元,相对来讲难度更容易,系统也更容易做到可靠。
3. 有效的去应用一个灰度的策略变更最容易出问题的地方,但通过单元化这种技术,把一个集群拆成十几二十几个,甚至百个单元,就是以单元级别做灰度的,能够更有效的管控变更的风险。
4. 亲和因为相对来讲根据我们一定的分区来说,单元列的数据相关性会更高,所以缓存的命中率也会更高,基本上的热点数据,数据都被相对集中起来,所以它对性能上也是有很大的帮助。
纵向单元化——从公有云到智能站点构建多单元既然有横向单元化,那也有纵向的单元化。我们在公有云上有物联网平台,混合云上有华为云Stack,它是部署在客户的现场,一般是几个机柜、几十台物理机这样的规模。想要轻量一点就可以使用华为云的智能站点,只需要一个机柜,三台物理机起,可以部署在客户的机房,甚至部署在办公区域,这是构建了一个纵向的单元。像工厂这种场景,数据量比较大,会希望就近处理数据,因为这样比较快,而且更可靠,减少了公网的依赖,还能有效地减少数据上云,可以在本地做处理。像这三种形态有不同的应用场景,它们可以独立的部署,完全自制,就是说我们的业务场景可以选一个单元去做这样的事情,选一个形态,也可以实现单元联合,可以协同。
IoT单元的定义前面介绍了这么多单元,那么华为云IoT的单元是怎么定义的?华为云IoT单元职责的定义是一个独立完整的业务处理闭环,它是可以独立部署、独立去做业务的。那又有什么特征呢?
它存储是独立的,不会出现两个单元共用一份存储的情况。
计算是独特的。
网络也是独立的,公有云上我们每个单元都是一个独立的网络。
流量尽可能的去封闭,避免流量外溢。
公有云一个单元属于一个Region。
公有云一个单元至少3AZ部署。
IoT单元间的协同单元很大的一个优势就是在单元之间的协同,有几种典型的协同:
第一种就是联合。联合是通过合理的Partition做分区,通过多个单元构建一个更大的业务,例如用10个1000万的单元构建1个1亿的业务或者是用10个亿的单元构建10亿的业务。
第二种是容灾。容灾就是单元和单元之间通过数据的转发,两个单元可以做多活,这是一种高可用的场景。