一、十二要素应用

定位:云原生应用的设计纲领与基本原则

核心思想:为构建易于部署、扩展、维护的SaaS应用提供了一套方法论。

十二要素(精炼版)

要素 核心要求 举例与解释
1. 基准代码 一份代码库,多份部署 使用Git等版本控制系统管理一份代码,可部署到开发、测试、生产环境。
2. 依赖 显式声明依赖 使用pom.xml(Maven)、requirements.txt(Python)等文件显式声明,而非隐式依赖系统库。
3. 配置 在环境中存储配置 将数据库URL、API密钥等配置信息通过环境变量注入,与代码分离。
4. 后端服务 把后端服务当作附加资源 将数据库、消息队列、缓存等服务视为通过URL访问的“附加资源”,可轻松切换。
5. 构建,发布,运行 严格分离构建和运行 构建阶段将代码和依赖打包成制品(如Docker镜像);发布阶段将制品与配置结合;运行阶段启动应用进程。
6. 进程 以一个或多个无状态进程运行应用 会话状态等应存储在外部服务(如Redis)中,而非进程内存。这是实现水平扩展的前提。
7. 端口绑定 通过端口绑定提供服务 应用是自包含的,通过指定的端口直接对外提供服务(如Spring Boot内嵌Tomcat)。
8. 并发 通过进程模型进行扩展 通过新增进程(如K8s Pod副本)来应对高并发,而非依赖多线程。
9. 易处置 快速启动和优雅终止 进程应能快速启动,并在收到终止信号时优雅关闭,最大化健壮性。
10. 开发/生产环境等价 保持环境高度相似 利用Docker等容器技术,消除开发、测试、生产环境之间的差异。
11. 日志 把日志当作事件流 应用不关心日志文件的存储和处理,只需将日志事件输出到标准输出(stdout)。
12. 管理进程 管理任务当作一次性进程运行 数据库迁移、脚本执行等管理任务,应使用与正常应用进程相同的环境运行。

软考关联:是设计和评审微服务架构的理论依据。在案例分析和论文中,可用以论证设计的合理性。


二、容器化

定位:云原生应用的打包与交付标准

核心技术Docker

核心概念

  • 镜像:一个轻量级、独立的、可执行的软件,包含运行应用所需的一切。

  • 容器:镜像的运行时实例。它在隔离的进程中运行。

  • Dockerfile:一个文本文件,包含了一系列构建镜像的指令。

价值

  • 环境一致性:彻底解决“在我这儿是好的”问题。

  • 隔离性:资源隔离,应用互不影响。

  • 轻量高效:共享主机OS内核,启动秒级,资源开销远小于虚拟机。

软考关联:容器是实现微服务独立部署弹性伸缩的物理基础。需理解Docker镜像的分层结构。


三、编排

定位:云原生应用的大脑与运维平台

事实标准Kubernetes

核心概念与架构

概念/组件 作用与解释
Master节点 集群的大脑,负责调度和管理。
Node节点 具体运行容器的工作机器。
Pod K8s最小调度单元,包含一个或多个紧密关联的容器。
Deployment 定义Pod的期望状态,控制无状态应用的部署、副本数和滚动更新。
Service 为一组Pod提供稳定的网络访问入口,实现服务发现和负载均衡。
Ingress 管理集群外部访问的API对象,提供HTTP路由、SSL终结等功能。
ConfigMap/Secret 分别用于管理应用配置和敏感信息,实现配置与镜像解耦。
声明式API 用户提交一个YAML/JSON文件(声明期望状态),K8s负责驱动当前状态向期望状态收敛。

软考关联必考重点。需掌握其核心组件、资源对象及工作原理。它是实现应用高可用、自愈、弹性伸缩的核心。


四、服务网格

定位:微服务架构的通信基础设施层

主流实现Istio

核心思想:通过 Sidecar(边车) 模式,将服务间通信的复杂性(如熔断、限流、观测、安全)从业务代码中彻底解耦

核心架构

  1. 数据平面:由一组以Sidecar方式部署的智能代理(Istio默认使用Envoy)组成。它拦截并控制所有进出Pod的网络流量。

  2. 控制平面:管理和配置数据平面中的代理,下发策略和收集遥测数据。

核心功能

  • 流量管理:金丝雀发布、故障注入、动态路由。

  • 可观测性:丰富的指标、日志和分布式追踪。

  • 安全:服务间的mTLS加密通信、细粒度的访问控制。

软考关联:理解服务网格解决的核心问题——将微服务的通用“交叉关切点”下沉到基础设施层。这是微服务治理的高阶形态。


五、无服务器

定位:云原生架构的更高层次抽象,让开发者只关注业务逻辑。

核心模式

  1. FaaS函数即服务。以函数为单元部署和运行代码,由事件(如HTTP请求、文件上传)触发,按执行时间和次数计费。

    • 例子:AWS Lambda, Azure Functions。

  2. BaaS后端即服务。直接使用云厂商提供的后端服务,如数据库、认证、存储等。

特点

  • 无需运维:无需管理服务器。

  • 事件驱动:由特定事件触发执行。

  • 极致弹性:从零扩展到高并发完全自动。

  • 按需计费:函数不运行时成本为零。

软考关联:理解其适用场景(事件处理、API网关后端、数据ETL)和局限性(冷启动、执行时长限制、状态管理复杂)。


软考备考要点与答题技巧

1. 选择题考点
  • 直接考查概念:如“十二要素应用中,配置应存储在何处?”(答案:环境变量)。

  • 考查组件功能:如“Kubernetes中,负责实现滚动更新的资源对象是什么?”(答案:Deployment)。

  • 考查架构理解:如“服务网格的数据平面主要由什么构成?”(答案:Sidecar代理)。

2. 案例分析题考点
  • 场景:传统单体应用迁移到云原生。

  • 问题与答题思路

    1. 如何进行应用改造?

      • :参照十二要素应用原则,如实现无状态、配置外置、日志输出到stdout等。

    2. 如何打包和部署?

      • :使用Docker进行容器化。使用Kubernetes进行编排,通过Deployment部署应用,通过Service暴露服务。

    3. 如何保证稳定性和可观测性?

      • :在微服务复杂度提升后,引入服务网格来实现熔断、限流、链路追踪等治理功能。

    4. 某些特定场景如何优化成本?

      • :对于事件驱动、流量波峰波谷明显的场景,可以考虑使用Serverless架构。

3. 论文题考点
  • 可能的题目:《论云原生架构的演进与实践》、《论基于Kubernetes的微服务治理》。

  • 写作框架

    • 引言:介绍项目背景和挑战。

    • 总体架构:画出以Kubernetes为核心的云原生架构图。

    • 分点论述

      • 应用改造:如何遵循十二要素。

      • 容器化与编排:如何利用Docker和K8s实现敏捷部署和弹性。

      • 服务治理:如何引入Istio解决通信复杂性。

      • 创新实践:如何在部分场景使用Serverless。

    • 总结:对比改造前后的效果,并反思遇到的挑战(如复杂性、学习成本)。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐