理查德切斯特伍德

MicroServices架构正在成为Web应用程序开发的流行架构风格。betwayapp下载安装凭借更多公司实施微服务,具有相关技能的技术专业人员的需求正在增长。为您的下一个软件开发人员或建筑师面试准备以下25个面试问题和与微服务相关的答案。

问题1:什么是微服务?

答:微服务是一种架构风格。微服务体系结构(MSA)是一些小组件或服务的集合。

微服务是独立开发的,这意味着:

微服务并不是什么新东西,但是MSA是将软件看作独立组件的一种新思路。

MSA相当于一个庞然大物,整个系统是一个单独的组件。部署一个庞然大物是有风险的,因为它一次性替代了整个系统。

Kubernetes实践 - 向AWS云部署微服务

2021年4月最后更新

  • 158课
  • 各级
4.7 (4,024)

使用Kubernetes部署微服务体系结构。您将部署,管理和监控Live Kubernetes集群。|由Richard Chesterwood,虚拟对程序员,Prageeth Warnak

探索课程

问题2:微服务必须在同一台物理计算机上运行吗?

他们可以。但是,因为我们解耦了微服务,所以可以跨机器分发微服务体系结构。

msa通常运行在多个物理机器的集群中。即使是大型和复杂的系统也可以部署到廉价、低功耗的计算机上。通常使用来自云提供商的小型虚拟机或实例。

随着项目的增长,添加实例很简单,这就是所谓的水平伸缩。如果只使用一台机器,那么就需要进行垂直扩展。垂直扩展可能需要将单个机器升级为更大的机器,这比水平扩展要昂贵得多。

MSA的一个好处是可以进行水平扩展。对于一个庞然大物,只有垂直缩放是可用的。

问题3:设计微服务时应该考虑什么?

答:微服务应该具有高度的凝聚力,每个服务应该只做一件事。

开发人员希望构建松散耦合的微服务,微服务之间的依赖关系很少。

开发人员希望微服务能够独立运行,这样我们就可以测试微服务,而不需要系统的其他部分就位。

问题4:我们应该在微服务体系结构中使用共享数据库吗?

答:不是,因为共享数据库等同于耦合的微服务。每个业务领域都应该有自己的数据库。理想情况下,一个数据库由一个微服务使用。

问题5:我们应该使用单一语言来实现微服务吗?

答:MSA的好处之一是开发人员可以自由选择相关的编程语言。没有必要在整个项目中使用相同的语言,这被称为多语言编程。

一个微服务可能使用Spring Boot,而用于复杂数学处理的微服务使用Python。

问题6:使用多种语言会导致维护问题吗?

A:不应该。微服务是小而有凝聚力的;它应该易于维护。想象一下,如果一个团队后来意识到为微服务选择的语言是错误的。没问题!抛弃整个微服务,重新实现。因为,根据定义,微服务很小,它不应该成为整个项目的负担。

问题7:什么是API网关?

答:API网关是为你的客户端(web前端,REST客户端等)访问微服务而不需要知道微服务的实现。

网关充当后端的facade,允许我们在不破坏那些客户机的情况下进行更改。

API网关也是单点访问。客户不需要调用一长串的微服务。

问题8:为什么容器在微服务系统中很有用?

答:容器允许我们将每个微服务打包成一种称为图像的标准格式。我们可以在不考虑外部依赖的情况下部署映像。每个微服务都部署到自己的容器中。

问题9:什么是金丝雀释放?

答:当我们向少量用户发布微服务的新版本时,就会出现Canary版本。

问题10:金丝雀释放的优势是什么?

答:我们可以发布一个有风险的新功能,同时确保将风险的影响降到最低。例如,假设Canary发布中有一个错误。如果我们只向10%的用户发布这个功能,我们的支持团队收到的支持票会比所有用户都看到这个有bug的功能时少。

问题11:休息是什么?

答:REST是一种使用标准HTTP构造来构建API的技术。REST对业务数据使用表示。通常,这是一个JSON文件,但也可以是XML。它使用标准的HTTP动词GET、POST、UPDATE、DELETE。它还使用标准的HTTP返回代码,如200和404。

问题12:对于微服务通信,除了使用REST之外,还有其他选择吗?

答:是的,你可以使用消息驱动的行为来代替。

问题13:消息的优点是什么?

答:消息驱动的行为比休息更松散地耦合。微服务可能向主题发送消息说某事发生了。因为微服务不需要知道谁将接收该消息,所以我们可以添加或删除订阅者对那个话题毫无影响。

问题14:信息的缺点是什么?

答:看到原因和效果链更复杂和更难。此外,它仅适用于异步情况。

一个有用的MSA应该同时使用消息和REST。

问题15:什么是断路器,以及他们为什么需要?

答:断路器是一种检测特定微服务是否经常故障的组件。如果断路器激活,那么所有对该微服务的呼叫将在短时间内终止。目的是让微服务时间恢复。断路器的使用防止了级联故障的可能性。

问题16:断路器的一些实施方式是什么?

A:Hystrix.是来自Netflix的一个非常受欢迎的断路器,尽管它不再是积极的开发。betwayapp下载安装现在更常用于使用内置的服务网格中内置的断路器功能。

问题17:什么是服务发现?为什么在微服务架构中需要它?

答:因为微服务分布在物理硬件节点上,开发人员必须能够找到任何微服务的位置。服务发现是一个注册表,包含易于记住的名称和微服务的实际位置。

问题18:我们可以使用什么进行服务发现?

答:都是Docker和Kubernetes具有内置的服务发现特性,这对于大多数项目来说已经足够了。

第三方服务发现框架可用。由Netflix创建和使用的Eureka就是一个例子。

第三方服务发现比Kubernetes服务发现具有更多的特性,例如能够使用任意端口号。

问题19:什么是SPOF?

答:SPOF是Single Point of Failure的缩写,即单个部件失效导致整个系统失效。我们必须不惜一切代价避免出现虚假信息。

问题20:避免SPOFS有什么常见的策略?

答:您应该复制任何SPOFs以提供冗余。例如,Kubernetes允许我们复制任何必要的微服务。

在云中,您可以确保复制品分布在自然地理区域。这确保了系统可以容忍整个数据中心的故障。

问题21:列举一些用于构建微服务体系结构的常用工具。

答:有无数可用的工具,但这里列出了一些最常见的:

问题22:什么是分布式日志记录?

答:我们需要一个单一的位置来收集整个系统的日志。通常,我们需要一个搜索引擎,以便我们可以对日志执行查询。我们还需要一个UI来直观地检查日志。

问题23:什么是通用的分布式日志记录框架?

ELK堆栈是一个流行的框架:

这里有很多选项,Fluentd是Logstash的标准替代品。

问题24:为什么监视微服务架构如此重要?

答:如果您的系统的某个组件出现故障,那么它可能在很长一段时间内无法被检测到。通过监控系统,您可以直观地确保系统平稳运行。

警报系统也很重要,以便在组件出现故障时通知您的团队。典型的警报系统是通过短信或像PagerDuty这样的服务。

问题25:什么是持续部署?

答:连续部署(CD)是每次推送代码存储库都会导致构建的触发。构建运行自动测试。如果测试通过,软件包作为图像。然后,新的MicroService部署到生产环境。

祝你面试好运!微服务体系结构是一个广泛的主题,这些问题和答案是给招聘经理留下深刻印象的一个很好的起点。

页面最后更新:2020年9月

微服务的顶级课程

春靴微服务,CQRS,SAGA,Axon框架。
谢尔盖Kargopolov
4.8 (20)
热&新
微服务架构 - 完整指南
Memi Lavi.
4.5 (1367)
畅销书
。net 5微服务体系结构与实现
穆罕默德Ozkaya
4.4 (1,105)
具有节点JS的微服务并反应
Stephen主梁
4.8 (6514)
畅销书
Spring Boot应用中的OAuth 2.0
谢尔盖Kargopolov
4.7 (604)
畅销书
用。net构建微服务-基础
胡里奥有格的
4.7 (155)
微服务:设计高度可扩展的系统
Sean Campbell.
4.3 (2,391)
使用Spring Data REST休息API
Bharath Thippireddy
4.4 (857)
主机微服务与春靴和春云
in28Minutes官方
4.5 (26481)
畅销书

更多Microservices课程

微服务的学生也在学习

让你的团队。领导行业。

使用Udemy for Business订阅在线课程库和数字学习工具。

请求演示

Richard Chesterwood的课程

Docker -为Java开发人员操作
Richard Chesterwood,虚拟结对程序员
4.7 (1741)
Kubernetes hands -部署微服务到AWS云
Richard Chesterwood,虚拟对程序员,Prageeth Warnak
4.7 (4,024)
面向Java开发人员的Apache Spark
Richard Chesterwood, Matt Greencroft,虚拟结对程序员
4.6 (1,650)
畅销书
这是Kubernetes的亲身体验
Richard Chesterwood,Prageeth Warnak
4.7 (2643)
畅销书

Richard Chesterwood的课程