热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

真的跪了!微服务架构27连问面试题配答案

微服务面试题与答案

根据 Gartner 的说法,微服务是云开发的新应用平台。微服务是独立部署和管理的,一旦应用实现在容器内,它们与底层操作系统的交互很少。因此,如果你希望把微服务添加到自己的技术栈中,并想要了解与之相关的技能,那么现在正是潜心研究的时候。

在本文中,我收集了面试官最常问到的问题。

微服务面试题与答案

真的跪了!微服务架构27连问面试题配答案

  说说微服务架构的优势

独立开发  :所有微服务都可以根据各自的功能轻松开发 

独立部署 :根据他们所提供的服务,可以在任何应用中单独部署 

故障隔离 :即使应用中的一个服务不起作用,系统仍然继续运行 

混合技术栈: 可以用不同的语言和技术来构建同一应用程序的不同服务

粒度缩放 :各个组件可根据需要进行扩展,无需将所有组件融合到一起 

你对微服务是怎么理解的?

  • 微服务 ,又名 微服务架构 ,是一种架构风格,它将应用构建为一个小型自治服务的集合,以 业务领域为模型。

  • 通俗地说,就像蜜蜂通过对蜡制的等边六角形单元来构建它们的蜂巢。

  • 他们最初从使用各种材料的小单元开始,一点点的搭建出一个大型蜂巢。

  • 这些小单元组成坚固的结构,将蜂窝的特定部分固定在一起。

  • 这里,每个小单元都独立于另一个,但它也与其他小单元相关。

  • 这意味着对一个小单元的损害不会损害其他的单元,因此,蜜蜂可以在不影响完整蜂巢的情况下重建这些单元。

真的跪了!微服务架构27连问面试题配答案

请参考上图。这里,每个六边形都代表单独的服务组件。与蜜蜂的工作类似,每个敏捷团队都使用可用的框架和所选的技术栈构建单独的服务组件。就像在蜂巢中一样,这些服务组件形成一个强大的微服务架构,以提供更好的可扩展性。此外敏捷团队可以单独处理每个服务组件的问题,而不会对整个应用程序产生影响或使影响最小。

微服务有哪些特点?

  • 解耦(Decoupling) - 系统内的服务很大程度上是分离的。因此整个应用可以被轻松构建、修改和扩展

  • 组件化(Componentization) - 微服务被视为可以被轻松替换和升级的独立组件

  • 业务能力(Business Capabilities) - 微服务非常简单,专注于单一功能

  • 自治(Autonomy) - 开发人员和团队可以相互独立工作,从而提高效率

  • 持续交付(ContinousDelivery) - 允许频繁发版,通过系统自动化完成对软件的创建、测试和审核,

  • 责任(Responsibility) - 微服务不把程序作为项目去关注。相反,他们将程序视为自己负责的产品

  • 分散治理(Decentralized Governance) - 重点是用正确的 工具 去做正确的事。这意味着没有任何标准化模式或技术模式。开发人员可以自由选择最合适的工具来解决自己的问题

  • 敏捷性(Agility) - 微服务支持敏捷开发。任何新功能都可以快速开发并被再次丢弃

设计微服务的最佳实践是什么?

  1. 为每个微服务分开数据存储

  2. 将代码保持在类似的成熟度等级上

  3. 为每个微服务进行单独的构建

  4. 部署到容器中

  5. 将服务器视为无状态的

微服务架构的优点和缺点是什么?

微服务架构的优点  ,  微服务架构的缺点, 可以自由使用不同的技术,增加故障排除的难度|,每个微服务都专注于单一功能|由于远程调用而导致延迟增加,支持单个可部署单元,增加配置和其他操作的工作量,允许软件的持续发布,难以维持处理的安全性,可确保每项服务的安全性,很难跟踪各种边界的数据,并行开发和部署多个服务,服务之间难以编码

单体应用 SOA 和微服务架构有什么区别?

  • 单体应用 类似于一个大容器,其中程序的所有组件都被组装在一起并紧密包装。

  • SOA 是一组相互通信的服务。通信可以涉及简单的数据传送,也可以涉及两个或多个协调某些活动的服务。

  • 微服务架构 是一种架构风格,它将应用程序构建为以业务域为模型的小型自治服务集合。

在使用微服务架构,你面临的挑战是什么

开发较小的微服务听起来很容易,但在开发时会经常遇到一些挑战。

  • 自动化组件 :难以自动化,因为有许多较小的组件。对于每个组件,都必须采取构建、发布和监控的步骤。

  • 可感知性 :将大量组件维持在一起会带来难以部署、维护、监控和识别的问题。它需要在所有组件周围具有很好的感知能力。

  • 配置管理 :有时在各种环境中维护组件的配置会很困难。

  • 调试 :很难找到与产生的错误相关的每一项服务。维护一个集中式的日志和控制面板对调试问题至关重要。

什么是通用语言(UL)?

如果你必须定义 通用语言(UL) ,那么它是特定域的开发人员和用户使用的通用语言,通过该语言可以轻松解释领域。

通用语言必须非常清晰,以便将所有团队成员处于同一水平线上,并以机器可以理解的方式进行翻译。

什么是内聚?

内聚 是一个模块内部各元素之间相关联程度的度量

什么是耦合?

组件之间依赖关系强度的度量被称为 耦合 。好的设计总是 高内聚 低耦合 的。

什么是REST/RESTful ?它的用途是?

Representational State Transfer(REST)/ RESTful (表述性状态转移)是一种帮助计算机系统通过 Internet 进行通信的架构风格。这使得微服务更容易理解和实现。

微服务可以用 RESTful API 来实现,当然也可以不用,但是用 RESTful API 去构建松散耦合的微服务总是更容易些。

你怎么理解 Spring Boot?

随着新功能的增加,spring 变得越来越复杂。如果必须启动新的 spring 项目,必须添加构建路径或添加 maven 依赖项,配置服务器,添加 spring 配置。所以一切都必须从头开始。

Spring Boot 是解决这个问题的方法。使用 spring boot 可以避免所有样板代码和配置。因此,基本上认为自己就好像在烤蛋糕一样,spring 就像做蛋糕所需的原料一样, spring boot 就是完整的蛋糕。

Spring boot 的执行器是什么?

Spring Boot 执行器提供 restful 服务,以访问在生产环境中运行程序的当前状态。在执行器的帮助下,你可以检查各种指标并监控自己的程序。

什么是 Spring Cloud?

根据 Spring Cloud 的官方网站,Spring Cloud 为开发人员提供了一些快速构建分布式系统常见模式的工具(例如配置管理、服务发现、断路器、智能路由、领导选举、分布式会话、集群状态)。

我们如何进行跨功能测试?

跨功能测试是对非功能性需求的验证,即那些不能像普通功能那样实现的要求。

如何在测试中消除不确定性?

不确定性测试 (NDT)基本上是不可靠的测试。因此,它们有时可能会通过,显然有时也可能会失败。当它们失败时,会重新运行以通过。

从测试中排除不确定性的一些方法如下:

  1. 隔离

  2. 异步

  3. 远程服务

  4. 分离

  5. 时间

  6. 资源泄漏

Mock 与 Stub 有什么区别?

Stub

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

  • 在某些可以硬编码的条件下提供固定的行为。

  • 从未测试stub的所有其他行为。

例如,对于空栈,你可以创建一个对于 empty() 方法只返回 true 的 stub。因此这并不关心栈中是否存在元素。

模拟

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

  • 此对象的行为取决于设置的属性。

  • 也可以测试对象的行为。

例如,对于 Customer 对象,你可以通过设置姓名和年龄来模拟它。你可以将年龄设置为 12,然后测试isAdult()方法,该方法将在大于 18 岁时返回 true。因此你的 Mock Customer 对象适用于指定的条件

微服务之间是如何通讯的?

第一种:远程过程调用(Remote Procedure Invocation)

直接通过远程过程调用来访问别的service。

示例:REST、gRPC、Apache、Thrift

优点:简单,常见。因为没有中间件代理,系统更简单

缺点:只支持请求/响应的模式,不支持别的,比如通知、请求/异步响应、发布/订阅、发布/异步响应

降低了可用性,因为客户端和服务端在请求过程中必须都是可用的

第二种 :消息

使用异步消息来做服务间通信。服务间通过消息管道来交换消息,从而通信。

示例:Apache Kafka、RabbitMQ

优点:

  • 把客户端和服务端解耦,更松耦合 提高可用性,因为消息中间件缓存了消息,直到消费者可以消费

  • 支持很多通信机制比如通知、请求/异步响应、发布/订阅、发布/异步响应

缺点:消息中间件有额外的复杂性

springcloud 与dubbo有哪些区别?

相同点:SpringCloud 和Dubbo可以实现RPC远程调用框架,可以实现服务治理。

不同点:SpringCloud是一套目前比较网站微服务框架了,整合了分布式常用解决方案遇到了问题注册中心Eureka、负载均衡器Ribbon ,客户端调用工具Rest和Feign,分布式配置中心Config,服务保护Hystrix,网关Zuul Gateway ,服务链路Zipkin,消息总线Bus等。

Dubbo内部实现功能没有SpringCloud强大(全家桶),只是实现服务治理,缺少分布式配置中心、网关、链路、总线等,如果需要用到这些组件,需要整合其他框架。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 我们


推荐阅读
  • 微服务之总体架构篇
    一、单体架构存在的问题缺点:1、难以维护:当单体应用业务不断迭代后代码量非常臃肿,模整个项目非常复杂,每次更改代码都可能带来新的bug;2、部署项目麻烦:庞大之后项目部署效率 ... [详细]
  • 云原生边缘计算之KubeEdge简介及功能特点
    本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ... [详细]
  • 如果说以比特币为代表的货币区块链技术为1.0,以以太坊为代表的合同区块链技术为2.0,那么实现了完备的权限控制和安全保障的Hyperledger项目毫无疑问代表着区块链技术3.0 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • 开发笔记:计网局域网:NAT 是如何工作的?
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了计网-局域网:NAT是如何工作的?相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 一句话解决高并发的核心原则
    本文介绍了解决高并发的核心原则,即将用户访问请求尽量往前推,避免访问CDN、静态服务器、动态服务器、数据库和存储,从而实现高性能、高并发、高可扩展的网站架构。同时提到了Google的成功案例,以及适用于千万级别PV站和亿级PV网站的架构层次。 ... [详细]
  • Spring框架《一》简介
    Spring框架《一》1.Spring概述1.1简介1.2Spring模板二、IOC容器和Bean1.IOC和DI简介2.三种通过类型获取bean3.给bean的属性赋值3.1依赖 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
  • 服务网关与流量网关
    一、为什么需要服务网关1、什么是服务网关传统的单体架构中只需要开放一个服务给客户端调用,但是微服务架构中是将一个系统拆分成多个微服务,如果没有网关& ... [详细]
  • k8s+springboot+Eureka如何平滑上下线服务
    k8s+springboot+Eureka如何平滑上下线服务目录服务平滑上下线-k8s版本目录“上篇介绍了springboot+Euraka服务平滑上下线的方式,有部分小伙伴反馈k ... [详细]
  • golang反射,golang反射性能
    本文目录一览:1、关于反射2、尝试用golan ... [详细]
  • 服务注册中心到底应该选AP模型还是CP模型?
    当下,分布式系统正变得越来越重要,大型网站几乎都是分布式的。分布式系统的最大难点,就是各个节点的状态 ... [详细]
author-avatar
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有