0

8个微服务面试题

 1 year ago
source link: https://www.jdon.com/62102
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

8个微服务面试题

22-08-29 banq


微服务是许多现代应用程序中最重要的组件之一。绝大多数(75%)拥有超过 1,000 名员工的公司使用微服务。因此,作为一名软件开发人员,你为一家提出微服务面试问题的公司面试的机会非常高。

PaypalSquare等公司长期以来一直在使用微服务。如果您想确定每一个微服务面试问题,您需要预测各个方面的问题,包括:

为什么公司越来越多地使用微服务
微服务不是采用单一的方法来设计系统架构,而是寻求加快速度。因此,它们消除了传统软件应用程序构建方式带来的许多相互依赖。通过使用微服务架构,Chris Richardson 声称应用程序交付可以变得更加快速和频繁。随着应用程序变得越来越复杂,微服务越来越重要。
微服务的重要部分在于它们每个都可以独立部署。这意味着如果你想测试某个微服务,你不需要关闭整个系统进行维护。它的效率要高得多。

Q1:请解释微服务架构
答:微服务架构是一种哲学,一种在组织中构建应用程序的方式。为了避免某个部分的错误导致整个应用程序出现问题,从微服务构建应用程序可以隔离任何错误,并使其更快地找到并修复它们。这使得应用程序的不同部分更加独立。
每个微服务都将负责您的应用程序所需的单个功能。随着企业越来越依赖这些应用程序,建议使用微服务。大多数公司如果还没有转向这种架构的话。

Q2:命名用于部署微服务架构的常用工具。
A:我能想到大约 10 种工具可以用来构建和管理微服务架构:

  • Mongo DB
  • Kubernetes
  • KAFKA
  • Elasticsearch
  • Jenkins
  • Jaeger
  • Fluent
  • Docker
  • Prometheus
  • Grafan

MongoDB
MongoDB是一个NoSQL数据库,它使你在创建数据库之初所做的决定受到的限制少得多。换句话说,它比SQL数据库更灵活。它也非常快,特别适合处理非常大量的数据。另一方面,MongoDB在连接表方面很困难,导致数据重复的问题。

Kubernetes
容器是随时可以运行的软件包,包含软件运行所需的一切。Kubernetes就像云中的一个操作系统,它协调所有这些容器,决定它们何时运行以及获得多少资源,以保持一切顺利运行。

Kafka
Kafka让你把你的代码建模为按顺序存储在日志中的事件流,而不是由数据库建模的对象。微服务与这种思考代码的方式是天生一对,每个服务都从Kafka日志中提取数据或将数据放进去。

Q3: 单片式架构、微服务架构和面向服务的架构之间的区别是什么?(SOA)
答:让我们认识到,这些风格中的每一种都是用来达到相同的目标--为应用服务。

单片式架构对程序架构采取了整体的方法。整个应用程序将作为一个整体存在,有各种相互依赖的节点。不过,也有下游的后果。如果应用程序的一个方面的功能出现问题,整个应用程序就会出现问题。这甚至使定期维护等活动成为一种挑战。

相比之下,微服务架构从几个服务中创建应用程序,这些服务以模块化的方式组合。你可以根据需要扩展这些服务,如果你发现它们不再为你的目的服务,你可以很容易地把它们取出来。

面向服务的架构(SOA)意味着跨程序和应用程序的服务可以相互沟通。虽然你可能采用微服务来帮助服务一个单一的应用程序,但面向服务的架构有更广泛的范围。你会在整个企业的背景下考虑SOA

问题4:讨论Spring Boot及其与微服务的关系
Spring Boot是一个平台,允许你在Spring框架中创建独立的应用程序。这些Spring应用程序很有用,因为它们被设计成允许你从小型应用程序开始,并能轻松地扩展它们。这使得它非常适合创建微服务的开发者。

微服务的一个用例涉及流数据。你可以使用Spring Cloud Stream将你所有的微服务与你的实时数据连接起来。如果你有一个事件驱动的应用程序,那么这种类型的连接是至关重要的。

问题5:Spring Cloud解决的问题有哪些?
Spring Cloud解决了很多问题,从延迟和带宽问题到分布式系统的冗余问题。

网络问题
大型应用程序可能会遇到一系列的网络问题。像延迟开销和带宽问题会影响一般性能,从而降低每个人的速度。更不用说,还有安全方面的考虑。

负载平衡
当你使用分布式系统时,会出现大量的冗余,你会浪费大量的资源。你需要在网络链接、CPU等之间进行分配。就其本质而言,Spring Cloud通过允许你在云中管理数据库,消除了许多这些问题。

微服务设计模式面试问题
公司想知道你是否了解可能遇到的各种微服务设计模式。

问题6:什么是微服务的设计模式?
我们可以讨论七种一般类型的微服务设计模式。它们是

分解模式:决定用什么逻辑来把应用分解成各种功能,例如业务领域。
集成模式:如何让不同的微服务进行协作,以实现预期的目标。
数据库模式:如何为微服务设计数据库(每个微服务一个还是共享?)
通信模式:为微服务之间的通信选择最合适的通信类型(例如,同步、异步、事件驱动)。
跨领域关注模式:调用不同的服务,同时避免需要重新配置。
可观察性模式:保持对跨越多个服务的请求的跟踪。
部署模式:你将如何部署服务实例(每个主机一个? 每个主机多个? 每个容器一个?)

Q7: 什么是微服务中的Reactive扩展?
Rx Java设计模式允许你通过一次性调用多个微服务来收集结果。然后,反应式扩展接收所有这些响应并将其编译成一个响应。

这使得你可以很容易地编写纯粹的、不可变的函数。例如,Rx Java观测器允许你订阅一次性发生的事件。这一点很重要,因为今天的许多应用程序必须考虑到同时发生的事件,因为许多用户可能同时与应用程序进行交互。

问题8:说出Java设计模式的一些优点
设计模式的存在是有原因的。作为一个开发者,你不希望重复编写同样的东西。在多个项目中重复使用这些模式是很容易的。此外,你可以创建一个完整的模板,让你勾勒出系统架构。这将为你在以后的工作中节省大量的时间。

这些设计模式在过去几年中经过了相当多的测试,这使得大型企业有信心采用它们。因此,你可以依靠Java设计模式来提供强大的解决方案。更不用说,它们的简单性使得开发人员之间的沟通和处理文档变得更加容易。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK