一、场景&问题
1.1、问题1
云原生代表应用软件从一开始就是基于云环境、专门为云端特性而设计,可充分利用和发挥云平台的 (1) +分布式优势,最大化释放云计算生产力。
关于云原生的定义有众多版本,云原生架构的理解也不尽相同,根据云原生技术、产品和上云实践,从技术的角度云原生架构是基于云原生技术的一组 (2) 和设计模式的集合,旨在将云应用中的 (3) 代码部分进行最大化的剥离,从而让云设施接管应用中原有的大量非功能特性,使业务不再有非功能性业务中断困扰的同时,具备轻量、 (4) 、 (5) 的特点。由于云原生是面向"云"而设计的应用,因此,技术部分依赖于传统云计算的3层概念,即 (6) 、 (7) 、 (8) 。
1.2、问题2
为了战略性构建容器云平台。通过平台实现对某云行App、二手车、在线支付、优惠券等核心互联网应用承载。并深度融合微服务治理体系,实现架构的革新和能力的沉淀,逐步形成支撑数字化应用的内容中台,设计的云平台架构如下图所示。请从下面给出的 (a) ~ (j) 中进行选择,补充完善空 (1) ~ (4) 处的内容(多选)。

1.3、问题3
云原生架构本身作为一种架构,也有若干架构原则作为应用架构的核心架构控制面,通过遵循这些架构原则可以让技术主管和架构师在做技术选择时不会出现大的偏差。一共有包括了7个原则,请说出其中的任意5个原则。
二、解析
2.1、问题1
① 最大化释放什么优势?
通俗理解:云计算和传统机房最大的区别是什么?是随时扩容。流量高峰时,可以瞬间拉起100台机器,流量高峰一过又可以释放机器。这就是弹性。
② 云原生解决了什么痛点?
通俗理解:程序员写代码最烦的是写和业务无关的底座功能。云原生的终极目标就是让程序员只写业务相关的代码,比如下单,出货等等。类似限流、api网关、服务注册和发现等等非业务的脏活累活,全靠云原生平台的能力。这就是都是云原生的架构原则集合。
③ 云原生的特点是什么?
丢掉了非业务代码,系统本身就轻了,可以实现代码提交之后自动测试,打包,发布的一个流程的自动化。这就是体现了敏捷和高度自动化的特点。
④ 传统云计算的3层概念
1)IaaS:基础设施即服务,提供一个裸服务器,比如ECS或者一个VPC网络。
2)PaaS:平台即服务,在服务器上装好数据库、中间件的运行环境。
3)SaaS:软件即服务,直接给出一个可以使用的软件。
2.2、问题2
① 业务组件层
最贴近用户的这一层,里面放的都是具体的业务域。需要找业务名词。根据需求找到用户(d)、订单(f)。
② 微服务治理组件层
这一层是系统的交通警察和居委会。当微服务太多的时候,互相之间怎么找到,怎么统一改配置。根据需求找到消息中心(c)、配置中心(e)。
③ 中间件服务层
这一层是"标准化的公共设施",无论什么业务,都要用到的一些通用软件,第三方中间件。根据需求找到RabbitMQ(b)、Kafka(i)、Redis(j)。
④ 容器云平台层
这一层是最底层的运维管家。不关心具体的业务,只关心机器跑的稳不稳。根据需求找到监控告警(g)、日志(k)、安全(m)。
2.3、问题3
云原生架构的7个原则,可以用一个"系统演进的故事"把它们串起来。
① 系统太大的不好维护怎么办?拆成一个个微服务。这就是服务化原则。
② 拆分成微服务之后,单个服务遭遇到大流量了怎么办?利用弹性的云特性,自动扩缩容。这就是弹性原则。
③ 微服务使用了自动扩缩容之后,服务一会多,一会少,出了问题或者BUG要怎么排查?要有完善的日志、链路追踪、就像是装了监控探头一样。这就是可观测原则。
④ 服务被拆分了,如果有一个服务挂掉了怎么办?系统要能熔断或者降级,不能一个挂了影响其他服务一起挂了。这就是韧性原则。
⑤ 服务这么多,如果靠人工手动一个个部署,成本太大了怎么办?必须通过CI/CD流水线实现全自动化部署。这就是所有过程自动化原则。
⑥ 云上环境复杂,内网一定安全吗?信任不了一点,所有服务间的调用都要身份认证。这就是零信任原则。
⑦ 云上的架构一定最完美的状态了吗?肯定不是的,不可能有完美的架构,所以需要不停的修修补补和升级。这就是架构持续演进原则。
三、答案
【问题1】
(1) 弹性
(2) 架构原则
(3) 非业务
(4) 敏捷 (5) 高度自动化 注意 (4) (5) 答案的顺序可颠倒。
(6) 基础设施即服务或者IaaS
(7) 平台即服务或者PaaS
(8) 软件即服务或者SaaS 注意 (6) (7) (8) 答案的顺序可颠倒。
【问题2】
(1) d、f
(2) c、e
(3) b、i、j
(4) g、k、m
【问题3】
(1) 服务化原则
(2) 弹性原则
(3) 可观测原则
(4) 韧性原则
(5) 所有过程自动化原则
(6) 零信任原则
(7) 架构持续演进原则