gydtep 发表于 2021-3-22 15:50:05
除了 FaaS 的快速发展,Serverless 和容器技术也开始融合,尤其是得到了云厂商的高度关注。通过 Serverless 容器,一方面可以根本性解决 K8s 自身的复杂性,让用户无需受困于 K8s 集群容量规划、安全维护、故障诊断等运维工作;另一方面进一步释放了云计算的能力,将安全、可用性、可伸缩性等需求下沉到基础设施实现,可以帮助云厂商形成差异化竞争力。gydtep 发表于 2021-3-22 18:31:29
借助 ACK@Edge,我们可以将一些需要低延迟处理的应用部署在边缘节点实现就近访问,比如,我们可以把 AI 模型预测和实时数据处理放置到边缘,进行实时智能决策;而将模型训练,大数据处理等需要海量算力应用放到云端。可以极大简化云边端一体应用协同。gydtep 发表于 2021-3-23 07:30:47
在 K8s 容器编排生态中,最基础的是容器或镜像,依托于镜像,用户就相当于实现了不可变的基础设施,其好处是镜像可以到处分发、复制,相当于实现了可移植性,没有了厂商绑定。另外针对不太熟悉镜像或者不想感受复杂性的用户,我们也提供了 War / Jar 层面的部署,极大降低用户享受红利的门槛。gydtep 发表于 2021-3-23 07:43:59
微服务是当下非常热门的一种架构,阿里目前正在从SOA架构体系向微服务架构迁移。同时整个软件应用研发开始进入云原生时代。在这些技术演进背景下讨论如何更好地实现稳定且高可用的架构方案,保证应用持续可用非常有必要。gydtep 发表于 2021-3-23 08:21:54
支fb最开始是一个单体应用。随着业务不断发展,支fb拆分成了多个服务,衍生出了若干代架构。微服务是服务化后的进一步演进,服务的粒度比服务化更细,具有很好的流量管控机制,中间件和编程模型。云原生的发展使Serverless也得到了发展,FAAS是Serverless的一种典型实现,能够以非常小的成本搭建小程序。另外,低代码和无代码现在也非常流行。gydtep 发表于 2021-3-23 10:22:46
应用程序可能有多个机房,如果多个机房间存在数据冗余,那么一个位置的错误就能够由另一个位置的数据来弥补,从而保证系统的持续可用。读写分离也是一种冗余设计,缓存和DB间存在数据冗余,当缓存宕机时,可以从DB回源到缓存。gydtep 发表于 2021-3-23 14:00:35
然而,这并不意味着高可用设计只需依赖数据库,而不需要额外的容灾能力。事实上,这与系统所要求的高可用级别相关。比如,假设系统所要求的高可用能力级别为5个9,那么即使数据库仅发生一次宕机并且数据恢复失败,那么就无法实现所要求的5个9的高可用能力。高可用设计的一个原则是,核心业务的设计不应信任其所依赖的基础设施。这样,为了提高系统高可用能力,就需要实现应用层容灾。应用层的容灾可能会FO到一个数据库中,数据库版本不同,数据存储类型不同,那么二者同时出现故障的概率就会变得更低。因此,应用层的容灾非常重要。gydtep 发表于 2021-3-23 14:07:50
在service mesh场景下,应用层不再需要关注防热点、读写分离等。几年前,应用层还需要对缓存热点做特殊处理以建设高可用能力,比如在一个缓存节点挂掉时对其进行预热操作。而现在,大多数分布式架构本身就提供了缓存热点能力。此外,大多数分布式数据库本身就使用了读写分离架构,只需稍加配置就可以将数据路由到只读节点。这些都是云原生时代带来的红利之一。gydtep 发表于 2021-3-23 15:54:40
总的来说,将业务最顶端跟信息流相关的逻辑抽象出来,并且将这部分逻辑所依赖的数据异构一部分出来,这就能够使所有的业务实现不依赖于实际的处理逻辑,从而保证底层的任意一个节点发生宕机时整个系统的可用性。gydtep 发表于 2021-3-23 19:35:28
未来还可能实现5个9的高可用。首先,假设存在一个和蚂蚁非常类似但又异构的环境,它们之间完全是去中心化的;其次,这两个环境下的数据规则同步应该是可舍弃的,能够实现FO以及全自动的切换;另外,还需要实现监控,监控也应该是异构的,需要有一个外部系统来观测本系统的行为。