前言

软件架构发展至今,经历了从单体架构、垂直架构、SOA 架构到现在的以微服务、服务网格等云原生技术为主的演变过程,云原生技术发展势不可挡,老生常谈的“云原生”将依然会是未来的热门话题。而且随着数字化转型加速,企业对于云的使用将会达到新的水平,云原生架构和云原生应用也将会持续迭代演进。

那么在云原生等技术的加持下,2022 年的架构领域有哪些值得关注的趋势?云原生如何撑起架构的未来?

如果大家尝试去搜索云原生技术,就会看到 Google Cloud 的定义、CNCF 的定义以及其他很多的云厂商以及开源软件的定义,而这些定义看法都各有不同。简单归纳可以分为如下图所示的几类,纵向来看,分为应用架构、生命周期管理、流量管理,以及基础设施及依赖四个维度;横向来看,又分为微服务、12 Factor Apps、容器、BaaS、GitOps/IaC 以及 Service Mesh 几个维度。

今天,大家都会谈到基于微服务架构做云原生,而不是基于巨石应用架构或者简单的 CS 架构。Quarkus 提出了 12 Factor Apps,意思就是说如果在今天想要让应用跑在 Quarkus 等这些应用托管平台上,对于应用具有一定的要求,大概是 12 条原则,比如配置和代码分离等,当然后续还有很多的扩展。这些原则中的很多条目的意思都是说只要你符合这些原则,那么应用托管平台就能够为你提供更多的能力,比如免运维等。容器的核心是使用一种标准的交互方式让平台能够管理应用的生命周期,包括发布、扩容以及自愈等。

BaaS——Backend as a Service,能够尽量使用现有的服务来构建应用程序。Service Mesh 的本质是管理流量,今天的应用程序都在接收流量,提供服务时流量又需要出去,在这个过程中如何管理服务发现、流量路由规则等都需要 Service Mesh 技术。最后需要重点介绍的就是 GitOps 和 IaC(Infrastructure as Code),这些技术如今在行业里面得到了越来越多的关注,尽管还没有事实上的标准,但是很多云计算公司正在不断努力。其含义是说今天在使用基础设施的时候,可以用代码去声明这些基础设施的需求。

作为一名新时代的程序员学会关键技术无疑有助于我们掌握架构背后的设计哲学,为未来打好基础。今天我们就通过一份阿里内部云原生实战文档来与大家聊聊云原生架构!看了就知道差距不止一点点!

  • 目录一览

  • 内容一览

  • 从集中式架构到分布式架构

  • 通信协议

  • 客户端负载均衡

  • APM基本要求

  • Kubernetes 架构

  • Service Mesh详解

  • 分布式事务

  • Sharding-Sidecar

写在最后

未来,云上的资源会越来越丰富,在基础设施之上,云平台提供了更多的 PaaS 能力,就像是操作系统在提供了进程这些能力之上,还有很多的 SDK。但是,这些能力目前在使用上还非常低效和不标准,使用过程也比较麻烦。今天我们在以类似汇编的形式使用云,云原生则在重新定义应用程序与云平台之间的契约,并围绕这个契约来构建更高级的编程语言和工具。这就是云原生时代背景下,应用架构演进非常重要的一个方向。