25微服务在接下来面试前学习的问题和答案
MicroServices架构正在成为Web应用程序开发的流行架构风格。betwayapp下载安装凭借更多公司实施微服务,具有相关技能的技术专业人员的需求正在增长。为您的下一个软件开发人员或建筑师面试准备以下25个面试问题和与微服务相关的答案。
问题1:什么是微服务?
答:微服务是一种架构风格。微服务体系结构(MSA)是一些小组件或服务的集合。
微服务是独立开发的,这意味着:
- 单个开发人员或小团队负责微服务。
- 微服务有自己的代码存储库。
- 我们独立地部署了微服务。
微服务并不是什么新东西,但是MSA是将软件看作独立组件的一种新思路。
MSA相当于一个庞然大物,整个系统是一个单独的组件。部署一个庞然大物是有风险的,因为它一次性替代了整个系统。
2021年4月最后更新
使用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:列举一些用于构建微服务体系结构的常用工具。
答:有无数可用的工具,但这里列出了一些最常见的:
- Docker:用于部署微服务的容器框架
- Kubernetes:用于管理您的Docker容器的编排框架
- 弹簧引导:为微服务提供快速开发框架betwayapp下载安装
- Istio:与Kubernetes一起使用的服务网格,用于提供微服务之间交互的详细监控
- 普罗米修斯:从集群中提取指标的监控系统
- Grafana:以图形形式显示指标的图形工具
- ElasticSearch:集群中用于收集日志的搜索引擎
- Kibana:用于检查日志的UI
问题22:什么是分布式日志记录?
答:我们需要一个单一的位置来收集整个系统的日志。通常,我们需要一个搜索引擎,以便我们可以对日志执行查询。我们还需要一个UI来直观地检查日志。
问题23:什么是通用的分布式日志记录框架?
ELK堆栈是一个流行的框架:
- ElasticSearch提供搜索引擎。
- Logstash作为一个原木收集者。
- Kibana提供用户界面。
这里有很多选项,Fluentd是Logstash的标准替代品。
问题24:为什么监视微服务架构如此重要?
答:如果您的系统的某个组件出现故障,那么它可能在很长一段时间内无法被检测到。通过监控系统,您可以直观地确保系统平稳运行。
警报系统也很重要,以便在组件出现故障时通知您的团队。典型的警报系统是通过短信或像PagerDuty这样的服务。
问题25:什么是持续部署?
答:连续部署(CD)是每次推送代码存储库都会导致构建的触发。构建运行自动测试。如果测试通过,软件包作为图像。然后,新的MicroService部署到生产环境。
祝你面试好运!微服务体系结构是一个广泛的主题,这些问题和答案是给招聘经理留下深刻印象的一个很好的起点。