- 1、您对微服务有何了解?
- 2、微服务架构有哪些优势?
- 3、微服务有哪些特点?
- 4、设计微服务的最佳实践是什么?
- 5、微服务架构如何运作?
- 6、微服务架构的优缺点是什么?
- 7、单片、SOA 和微服务架构有什么区别?
- 8、在使用微服务架构时,您面临哪些挑战?
- 9、 SOA 和微服务架构之间的主要区别是什么?
- 10、微服务有什么特点?
- 11、什么是领域驱动设计?
- 12、为什么需要域驱动设计(DDD)?
- 13、什么是无所不在的语言?
- 14、什么是凝聚力?
- 15、什么是耦合?
- 16、什么是 REST / RESTful 以及它的用途是什么?
- 17、你对 Spring Boot 有什么了解?
- 18、什么是 Spring 引导的执行器?
- 19、什么是 Spring Cloud?
- 20、 Spring Cloud 解决了哪些问题?
- 21、在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?
- 22、你能否给出关于休息和微服务的要点?
- 23、什么是不同类型的微服务测试?
- 24、您对 Distributed Transaction 有何了解?
- 25、什么是 Idempotence 以及它在哪里使用?
- 26、什么是有界上下文?
- 27、什么是双因素身份验证?
- 28、双因素身份验证的凭据类型有哪些?
- 29、什么是客户证书?
- 30、 PACT 在微服务架构中的用途是什么?
- 31、什么是 OAuth?
- 32、康威定律是什么?
- 33、合同测试你懂什么?
- 34、什么是端到端微服务测试?
- 35、 Container 在微服务中的用途是什么?
- 36、什么是微服务架构中的 DRY?
- 37、什么是消费者驱动的合同(CDC)?
- 38、 Web, RESTful API 在微服务中的作用是什么?
- 39、您对微服务架构中的语义监控有何了解?
- 40、我们如何进行跨功能测试?
- 41、我们如何在测试中消除非决定论?
- 42、 Mock 或 Stub 有什么区别?
- 43、您对 Mike Cohn 的测试金字塔了解多少?
- 44、 Docker 的目的是什么?
- 45、什么是金丝雀释放?
- 46、什么是持续集成(CI)?
- 47、什么是持续监测?
- 48、架构师在微服务架构中的角色是什么?
- 49、我们可以用微服务创建状态机吗?
- 50、什么是微服务中的反应性扩展?
1、您对微服务有何了解?
微服务,又称微服务架构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务集合 。
通俗地说, 你必须看到蜜蜂如何通过对齐六角形蜡细胞来构建它们的蜂窝状物。 他们最初从使用各种材料的小部分开始,并继续从中构建一个大型蜂箱。这些细胞形成图案,产生坚固的结构,将蜂窝的特定部分固定在一起。这里,每个细胞独立于另一个细胞,但它也与其他细胞相关。 这意味着对一个细胞的损害不会损害其他细胞,因此,蜜 蜂可以在不影响完整蜂箱的情况下重建这 些细胞。
图 1: 微服务的蜂窝表示 – 微服务访谈问题
请参考上图。这里,每个六边形形状代表单独的服务组件。与蜜蜂的工作类似, 每个敏捷团队都使用可用的框架和所选的技术堆栈构建单独的服务组件。就像在蜂箱中一样,每个服务组件形成一个强大的微服务架构,以提供更好的可扩展性。 此外, 敏捷团 队可以单独处理每个服务组件的问题, 而对整个应用程序没有影响或影响最小。
2、微服务架构有哪些优势?
图 2: 微服务的优点
- 独立开发 – 所有微服务都可以根据各自的功能轻松开发
- 独立部署 – 基于其服务,可以在任何应用程序中单独部署它们
- 故障隔离 – 即使应用程序的一项服务不起作用,系统仍可继续运行
- 混合技术堆栈 – 可以使用不同的语言和技术来构建同一应用程序的不同服务
- 粒度缩放 – 单个组件可根据需要进行缩放,无需将所有组件缩放在一起
3、微服务有哪些特点?
图 3: 微服务的特点
- 解耦 – 系统内的服务很大程度上是分离的。因此,整个应用程序可以轻 松构建,更改和扩展
- 组件化 – 微服务被视为可以轻松更换和升级的独立组件
- 业务能力 – 微服务非常简单,专注于单一功能
- 自治 – 开发人员和团队可以彼此独立工作,从而提高速度
- 持续交付 – 通过软件创建,测试和批准的系统自动化,允许频繁发布软件
- 责任 – 微服务不关注应用程序作为项目。相反,他们将应用程序视为他 们负责的产品
- 分散治理 – 重点是使用正确的工具来做正确的工作。这意味着没有标准 化模式或任何技术模式。开发人员可以自由选择最有用的工具来解决他们的问题
- 敏捷 – 微服务支持敏捷开发。任何新功能都可以快速开发并再次丢弃
4、设计微服务的最佳实践是什么?
以下是设计微服务的最佳实践:
图 4: 设计微服务的最佳实践
5、微服务架构如何运作?
微服务架构具有以下组件:
图 5: 微服务架构
- 客户端 – 来自不同设备的不同用户发送请求。
- 身份提供商 – 验证用户或客户身份并颁发安全令牌。
- API 网关 – 处理客户端请求。
- 静态内容 – 容纳系统的所有内容。
- 管理 – 在节点上平衡服务并识别故障。
- 服务发现 – 查找微服务之间通信路径的指南。
- 内容交付网络 – 代理服务器及其数据中心的分布式网络。
- 远程服务 – 启用驻留在 IT 设备网络上的远程访问信息。
6、微服务架构的优缺点是什么?
7、单片、SOA 和微服务架构有什么区别?
图 6: 单片 SOA 和微服务之间的比较
单片架构类似于大容器,其中应用程序的所有软件组件组装在一起并紧密 封装。
一个面向服务的架构是一种相互通信服务的集合。通信可以涉及简单的数 据传递,也可以涉及两个或多个协调某些活动的服务。
微服务架构是一种架构风格,它将应用程序构建为以业务域为模型的小型自治服务集合。
8、在使用微服务架构时,您面临哪些挑战?
开发一些较小的微服务听起来很容易,但开发它们时经常遇到的挑战如下 : 自动化组件:难以自动化, 因为有许多较小的组件。因此,对于每个组件,我们必须遵循 Build, Deploy 和 Monitor 的各个阶段。
易感性:将大量组件维护在一起变得难以部署,维护,监控和识别问题。 它需要在所有组件周围具有很好的感知能力。
配置管理:有时在各种环境中维护组件的配置变得困难。
调试:很难找到错误的每一项服务。维护集中式日志记录和仪表板以调试问题至关重要。
9、 SOA 和微服务架构之间的主要区别是什么?
SOA 和微服务之间的主要区别如下:
10、微服务有什么特点?
您可以列出微服务的特征,如下所示:
图 7: 微服务的特征
11、什么是领域驱动设计?
图 8: DDD 原理
12、为什么需要域驱动设计(DDD)?
图 9: 我们需要DDD的因素
13、什么是无所不在的语言?
如果您必须定义泛在语言(UL),那么它是特定域的开发人员和用户使用的通用语言,通过该语言可以轻松解释域。
无处不在的语言必须非常清晰,以便它将所有团队成员放在同一页面上,并以机器可以理解的方式进行翻译 。
14、什么是凝聚力?
模块内部元素所属的程度被认为是凝聚力 。
15、什么是耦合?
组件之间依赖关系强度的度量被认为是耦合 。一个好的设计总是被认为具有高内聚力和低耦合性 。
16、什么是 REST / RESTful 以及它的用途是什么?
Representational State Transfer(REST) / RESTful Web 服务 是一种帮助计算机系统通过Internet进行通信的架构风格。这使得微服务更容易理解和实现。
微服务可以使用或不使用RESTful API 实现, 但使用RESTful API 构建松散耦合的微服务总是更容易。
17、你对 Spring Boot 有什么了解?
事实上,随着新功能的增加,弹簧变得越来越复杂。如果必须启动新的spring项目,则必须添加构建路径或添加maven依赖项,配置应用程序服务器,添加 spring 配置 。所以一切都必须从头开始 。
Spring Boot 是解 决这 个问 题的 方法 。使 用 spring boot 可以 避免 所有 样板 代码 和配 置。 因此, 基 本上 认为 自己 就好 像你 正在 烘烤 蛋糕 一样, 春 天就 像制 作蛋 糕 所需 的成 分一 样, 弹簧 靴就 是你 手中 的完 整蛋 糕。
图 10: Spring Boot 的因 素 – 微服 务面 试问 题
18、什么是 Spring 引导的执行器?
Spring Boot 执行 程序 提供 了 restful Web 服务,以访 问生 产环 境中 运行 应用 程序 的当 前状 态。 在执 行器 的帮 助下, 您 可以 检查 各种 指标 并监 控您 的应 用程 序。
19、什么是 Spring Cloud?
根据 Spring Cloud 的官 方网 站, Spring Cloud 为开 发人 员提 供了 快速 构建 分布 式系 统中 一些 常见 模式 的工 具(例如 配置 管理, 服 务发 现, 断路 器, 智能 路由 , 领导 选举, 分 布式 会话, 集 群状 态) 。
20、 Spring Cloud 解决了哪些问题?
在使 用 Spring Boot 开发 分布 式微 服务 时, 我们 面临 的问 题很 少由 Spring Cloud 解决 。
- 与分布式系统相关的复杂性 – 包括网络问题,延迟开销,带宽问题,安 全问题。
- 处理服务发现的能力 – 服务发现允许集群中的进程和服务找到彼此并进 行通信。
- 解决冗余问题 – 冗余问题经常发生在分布式系统中。
- 负载平衡 – 改进跨多个计算资源(例如计算机集群,网络链接,中央处理单元)的工作负载分布。
- 减少性能问题 – 减少因各种操作开销导致的性能问题。
21、在 Spring MVC 应用程序中使用 WebMvcTest 注释有什么用处?
在测 试目 标只 关注 Spring MVC 组件 的情 况下,WebMvcTest 注释 用于 单元 测 试 Spring MVC 应用 程序 。 在上 面显 示的 快照 中, 我们 只想 启动 ToTestController。
执行 此单 元测 试时, 不 会启 动所 有其 他控 制器 和映 射。
22、你能否给出关于休息和微服务的要点?
虽然 您可 以通 过多 种方 式实 现微 服务, 但 REST over HTTP 是实 现微 服务 的一 种 方式 。 REST 还可 用于 其他 应用 程序, 如 Web 应用 程序, API 设计 和 MVC 应用 程 序, 以提 供业 务数 据。
微服 务是 一种 体系 结构, 其 中系 统的 所有 组件 都被 放入 单独 的组 件中, 这 些组 件 可以 单独 构建, 部 署和 扩展 。微 服务 的某 些原 则和 最佳 实践 有助 于构 建弹 性应 用 程序 。
简而 言之, 您 可以 说 REST 是构 建微 服务 的媒 介。
23、什么是不同类型的微服务测试?
- 在使用微服务时,由于有多 个微 服务 协同 工作, 测 试变 得非 常复 杂。 因此, 测 试 分为 不同 的级 别。
- 在底层, 我们有面向技术的测试, 如单元测试和性能测试。这些是完全自 动化的。
- 在中间层面,我们进行了诸如压力测试和可用性测试之类的探索性测试。
- 在顶层,我们的 验收测试数量很少。这些验收测试有助于利益相关者理解和验证软件功能。
24、您对 Distributed Transaction 有何了解?
分布 式事 务是指 单个 事件 导致 两个 或多 个不 能以 原子 方式 提交 的单 独数 据源 的突 变的 任何 情况 。在 微服 务的 世界 中, 它变 得更 加复 杂, 因为每个 服务 都是 一个 工 作单 元, 并且 大多 数时 候多 个服 务必 须协 同工 作才 能使 业务 成功 。
25、什么是 Idempotence 以及它在哪里使用?
幂等性是 能够 以这 样的 方式 做两 次事 情的 特性, 即 最终 结果 将保 持不 变, 即好 像 它只 做了 一次 。
用法: 在远 程服 务或 数据 源中 使用 Idempotence, 这样 当它 多次 接收 指令 时, 它 只处 理指 令一 次。
26、什么是有界上下文?
有界 上下 文是 域驱 动设 计的 核心 模式 。 DDD 战略 设计 部门 的重 点是 处理 大型 模型 和团 队。 DDD 通过 将大 型模 型划 分为 不同 的有 界上 下文 并明 确其 相互 关系 来处 理 大型 模型 。
27、什么是双因素身份验证?
双因 素身 份验 证为 帐户 登录 过程 启用 第二 级身 份验 证。
图 11: 双因 素认 证的 表示 – 微服 务访 谈问 题
因此, 假 设用 户必 须只 输入 用户 名和 密码, 那 么这 被认 为是 单因 素身 份验 证。
28、双因素身份验证的凭据类型有哪些?
这三 种凭 证是:
图 12: 双因 素认 证的 证书 类型 – 微服 务面 试问 题
29、什么是客户证书?
客户 端系 统用 于向 远程 服务 器发 出经 过身 份验 证的 请求 的一 种数 字证 书称 为客户 端证 书。客 户端 证书 在许 多相 互认 证设 计中 起着 非常 重要 的作 用, 为请 求者 的身 份提 供了 强有 力的 保证 。
30、 PACT 在微服务架构中的用途是什么?
PACT 是一 个开 源工 具, 允许 测试 服务 提供 者和 消费 者之 间的 交互, 与 合同 隔离, 从而 提高 微服 务集 成的 可靠 性。
微服 务中 的用 法
用于在微服务中实现消费者驱动的合同。
测试微服务的消费者和提供者之间的消费者驱动的合同。
查看 即将 到来 的批 次
31、什么是 OAuth?
OAuth 代表 开放 授权 协议 。 这允 许通 过在 HTTP 服务 上启 用客 户端 应用 程序 (例 如第 三方 提供 商 Facebook, GitHub 等) 来访 问资 源所 有者 的资 源。 因此, 您 可 以在 不使 用其 凭据 的情 况下 与另 一个 站点 共享 存储 在一 个站 点上 的资 源。
32、康威定律是什么?
“任何设计系统的组织 (广泛定义) 都将产生一 种设计, 其结构是组织通信结构 的副本。” – Mel Conway
图 13: Conway 定律 的表 示 – 微服 务访 谈问 题
该法 律基 本上 试图 传达 这样 一个 事实: 为 了使 软件 模块 起作 用, 整个 团队 应该 进 行良 好的 沟通 。因 此, 系统 的结 构反 映了 产生 它的 组织 的社 会边 界。
33、合同测试你懂什么?
根据 Martin Flower 的说 法, 合同 测试 是在 外部 服务 边界 进行 的测 试, 用于 验证 其是 否符 合消 费服 务预 期的 合同 。
此外, 合 同测 试不 会深 入测 试服 务的 行为 。更 确切 地说, 它 测试 该服 务调 用的 输 入&输出 包含 所需 的属 性和 所述 响应 延迟, 吞 吐量 是允 许的 限度 内。
34、什么是端到端微服务测试?
端到 端测 试验 证了 工作 流中 的每 个流 程都 正常 运行 。这 可确 保系 统作 为一 个整 体 协同 工作 并满 足所 有要 求。
通俗 地说, 你 可以 说端 到端 测试 是一 种测 试, 在特 定时 期后 测试 所有 东西 。
图 14: 测试 层次 – 微服 务面 试问 题
35、 Container 在微服务中的用途是什么?
容器 是管 理基 于微 服务 的应 用程 序以 便单 独开 发和 部署 它们 的好 方法 。 您可 以将 微服 务封 装在 容器 映像 及其 依赖 项中, 然后 可以 使用 它来 滚动 按需 实例 的微 服务, 而无 需任 何额 外的 工作 。
图 15: 容器 的表 示及 其在 微服 务中 的使 用方 式 – 微服 务访 谈问 题
36、什么是微服务架构中的 DRY?
DRY 代表 不要 重复 自己 。 它基 本上 促进 了重 用代 码的 概念 。这导 致开 发和 共享 库, 这反 过来 导致 紧密 耦合 。
37、什么是消费者驱动的合同(CDC)?
这基 本上 是用 于开 发微 服务 的模 式, 以便 它们 可以 被外 部系 统使 用。 当我 们处 理 微服 务时, 有一 个特 定的 提供 者构 建它, 并且 有一 个或 多个 使用 微服 务的 消费 者 。
通常,提供 程序 在 XML 文档 中指 定接 口 。 但在 消费者驱动的合同中,每个服务消费者都传达了提供商期望的接口 。
38、 Web, RESTful API 在微服务中的作用是什么?
微服 务架 构基 于一 个概 念, 其中 所有 服务 应该 能够 彼此 交互 以构 建业 务功 能。 因 此, 要实 现这 一点, 每个 微服 务必 须具 有接 口 。 这使 得 Web API 成为 微服 务的 一 个非 常重 要的 推动 者。 RESTful API 基于 Web 的开 放网 络原 则, 为构 建微 服务 架 构的 各个 组件 之间 的接 口提 供了 最合 理的 模型 。
39、您对微服务架构中的语义监控有何了解?
语义 监控, 也 称为 综合 监控, 将自 动化 测试 与监 控应 用程 序相 结合, 以 检测 业
务失 败因 素。
40、我们如何进行跨功能测试?
跨功 能测 试是 对非 功能 性需 求的 验证, 即 那些 无法 像普 通功 能那 样实 现的 需求 。
41、我们如何在测试中消除非决定论?
非确 定性 测试 (NDT) 基本 上是 不可 靠的 测试 。 所以, 有时 可能 会发 生它 们通 过, 显然 有时 它们 也可 能会 失败 。当 它们 失败 时, 它们 会重 新运 行通 过。
从测 试中 删除 非确 定性 的一 些方 法如 下:
1 、 隔离
2 、 异步
3 、 远程 服务
4 、 隔离
5 、 时 间
6 、 资 源 泄 漏
42、 Mock 或 Stub 有什么区别?
存根
- 一个有助于运行测试的虚拟对象。
- 在某些可以硬编码的条件下提供固定行为。
- 永远不会测试存根的任何其他行为。
例 如, 对 于 空 堆 栈, 您 可 以 创 建 一 个 只 为 empty () 方 法 返 回 true 的 存 根 。 因 此, 这 并 不 关 心 堆 栈 中 是 否 存 在 元 素 。
嘲笑
- 一个虚拟对象,其中最初设置了某些属性。
- 此对象的行为取决于 set 属性。
- 也可以测试对象的行为。
例 如, 对 于 Customer 对 象, 您 可 以 通 过 设 置 名 称 和 年 龄 来 模 拟 它 。您 可 以 将 age 设 置 为 12, 然 后 测 试 isAdult () 方 法, 该方法将在年 龄大于18 时返 回 true 。 因 此,您 的 Mock Customer 对 象 适 用 于 指 定 的 条 件 。
43、您对 Mike Cohn 的测试金字塔了解多少?
Mike Cohn 提供 了一 个名 为 Test Pyramid 的模 型 。这描 述了 软件 开发 所需 的自 动化 测试 类型 。
图 16: Mike Cohn 的测 试金 字塔 – 微服 务面 试问 题
根据 金字 塔, 第一 层的 测试 数量 应该 最高 。在 服务 层, 测试 次数 应小 于单 元测 试 级别, 但 应大 于端 到端 级别 。
44、 Docker 的目的是什么?
Docker 提供 了一 个可 用于 托管 任何 应用 程序 的容 器环 境 。在此, 软件 应用 程序 和 支持 它的 依赖 项紧 密打 包在 一起 。
因此, 这 个打 包的 产品 被称 为 Container, 因 为它 是由 Docker 完成 的, 所以 它 被称 为 Docker 容 器!
45、什么是金丝雀释放?
Canary Releasing 是一 种降 低在 生产 中引 入新 软件 版本 的风 险的 技术 。这是 通过 将变 更缓 慢地 推广 到一 小部 分用 户, 然后 将其 发布 到整 个基 础架 构, 即将 其提 供 给每 个人 来完 成的 。
46、什么是持续集成(CI)?
持续 集成 (CI) 是每 次团 队成 员提 交版 本控 制更 改时 自动 构建 和测 试代 码的 过程 。 这鼓 励开 发人 员通 过在 每个 小任 务完 成后 将更 改合 并到 共享 版本 控制 存储 库来 共 享代 码和 单元 测试 。
47、什么是持续监测?
持续 监控 深入 监控 覆盖 范围, 从 浏览 器内 前端 性能 指标, 到 应用 程序 性能, 再 到 主机 虚拟 化基 础架 构指 标。
48、架构师在微服务架构中的角色是什么?
微服 务架 构中 的架 构师 扮演 以下 角色:
- 决定整个软件系统的布局。
- 帮助确定组件的分区。因此,他们确保组件相互粘合,但不紧密耦合。
- 与开发人员共同编写代码,了解日常生活中面临的挑战。
- 为开发微服务的团队提供某些工具和技术的建议。
- 提供技术治理,以便技术开发团队遵循微服务原则。
49、我们可以用微服务创建状态机吗?
我们 知道 拥有自己 的数 据库 的每 个微 服务 都是 一个 可独 立部 署的 程序 单元, 这 反 过来 又让 我们 可以 创建 一个 状态 机。 因此, 我 们可 以为 特定 的微 服务 指定 不同 的 状态 和事 件。
例如, 我 们可 以定 义 Order 微服 务。 订单 可以 具有 不同 的状 态。 Order 状态 的转 换可 以是 Order 微服 务中 的独 立事 件。
50、什么是微服务中的反应性扩展?
Reactive Extensions 也称 为 Rx。这 是一 种设 计方 法, 我们 通过 调用 多个 服务 来 收集 结果, 然 后编 译组 合响 应。 这些 调用 可以 是同 步或 异步, 阻 塞或 非阻 塞。 Rx 是分 布式 系统 中非 常流 行的 工具, 与 传统 流程 相反 。
希望这些微服务面试问题可以帮助您进行微服务架构师访谈。