什么是微服务架构?10个必须了解的知识点!

前言

随着分布式技术栈逐渐成熟,近几年业界采用微服务架构设计的系统和领域愈来愈多,包括金融、电商、直播、物流、营销、采购、制造等,有互联网领域,也有传统领域。
近段时间正值找工做的最佳时间,本人将一些各大厂商的面试题和今年(2020)最新资料的收集,如下是部分资料截图(全部资料均已整合成文档,pdf压缩打包处理)。
若有有须要的朋友能够点击这里来获取资料,暗号:qf
在这里插入图片描述前端

正题

咱们如何在测试中消除非决定论?web

非肯定性测试(NDT)基本上是不可靠的测试。因此,有时可能会发生它们经过,显然有时它们也可能会失败。当它们失败时,它们会从新运行经过。面试

从测试中删除非肯定性的一些方法以下:数据库

一、 隔离浏览器

二、 异步架构

三、 远程服务异步

四、 隔离前端性能

五、 时间分布式

六、 资源泄漏svg

Mock 或 Stub 有什么区别?

存根

· 一个有助于运行测试的虚拟对象。

· 在某些能够硬编码的条件下提供固定行为。

· 永远不会测试存根的任何其余行为。

例如,对于空堆栈,您能够建立一个只为 empty()方法 返回 true 的存根。所以,这并不关心堆栈中是否存在元素。

嘲笑

· 一个虚拟对象,其中最初设置了某些属性。

· 此对象的行为取决于 set 属性。

· 也能够测试对象的行为。

例如,对于 Customer 对象,您能够经过设置名称和年龄来模拟它。您能够将 age设置为 12,而后测试 isAdult()方法,该方法将在年龄大于 18 时返回 true。所以,您的 Mock Customer 对象适用于指定的条件。

您对 Mike Cohn 的测试金字塔了解多少?

Mike Cohn 提供了一个名为 Test Pyramid 的模型。这描述了软件开发所需的自动化测试类型。

在这里插入图片描述

Mike Cohn 的测试金字塔 – 微服务面试问题

根据金字塔,第一层的测试数量应该最高。在服务层,测试次数应小于单元测试级别,但应大于端到端级别。

Docker 的目的是什么?

Docker 提供了一个可用于托管任何应用程序的容器环境。在此,软件应用程序和支持它的依赖项紧密打包在一块儿。

所以,这个打包的产品被称为 Container,由于它是由 Docker 完成的,因此它被称为 Docker 容器!

什么是金丝雀释放?

Canary Releasing 是一种下降在生产中引入新软件版本的风险的技术。这是经过将变动缓慢地推广到一小部分用户,而后将其发布到整个基础架构,即将其提供给每一个人来完成的。

什么是持续集成(CI)?

持续集成(CI)是每次团队成员提交版本控制更改时自动构建和测试代码的过程。这鼓励开发人员经过在每一个小任务完成后将更改合并到共享版本控制存储库来共享代码和单元测试。

什么是持续监测?

持续监控深刻监控覆盖范围,从浏览器内前端性能指标,到应用程序性能,再到主机虚拟化基础架构指标。

架构师在微服务架构中的角色是什么?

微服务架构中的架构师扮演如下角色:

· 决定整个软件系统的布局。

· 帮助肯定组件的分区。所以,他们确保组件相互粘合,但不紧密耦合。

· 与开发人员共同编写代码,了解平常生活中面临的挑战。

· 为开发微服务的团队提供某些工具和技术的建议。

· 提供技术治理,以便技术开发团队遵循微服务原则。

咱们能够用微服务建立状态机吗?

咱们知道拥有本身的数据库的每一个微服务都是一个可独立部署的程序单元,这反过来又让咱们能够建立一个状态机。所以,咱们能够为特定的微服务指定不一样的状态和事件。

例如,咱们能够定义 Order 微服务。订单能够具备不一样的状态。Order 状态的转换能够是 Order 微服务中的独立事件。

什么是微服务中的反应性扩展?

Reactive Extensions 也称为 Rx。这是一种设计方法,咱们经过调用多个服务来收集结果,而后编译组合响应。这些调用能够是同步或异步,阻塞或非阻塞。Rx是分布式系统中很是流行的工具,与传统流程相反。

2020祝你们心想事成!

在这里插入图片描述