17 道微服务面试题

点击上方“芋道源码”,选择“设为星标

管她前浪,还是后浪?

能浪的浪,才是好浪!

每天 10:33 更新文章,每天掉亿点点头发...

源码精品专栏

 

来源:Go 大神 / 蜗牛

8239601a10184cb2ca906459a945b1c4.jpeg


1、说说你对微服务有何了解

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

通俗地说,你必须看到蜜蜂如何通过对齐六角形蜡细胞来构建它们的蜂窝状物。他们最初从使用各种材料的小部分开始,并继续从中构建一个大型蜂箱。这些细胞形成图案,产生坚固的结构,将蜂窝的特定部分固定在一起。这里,每个细胞独立与另一个细胞,但它也与其他细胞相关。这意味着对一个细胞的损害不会损害其他细胞。因此,蜜蜂可以在不影响完整峰箱的情况下重建这些细胞。

c7b6e319b9d1d667596f2301dceb6fc6.png
微服务的蜂窝表示

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

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro

  • 视频教程:https://doc.iocoder.cn/video/

2、说说微服务架构的优势

d9ea38dcf660c9a54f058ff6e539edc4.png

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud

  • 视频教程:https://doc.iocoder.cn/video/

3、微服务有哪些特点

  • 解耦 :系统内的服务很大程度上是分离的。因此,整个应用程序可以轻松构建,更改和扩展。

  • 组件化 :微服务被视为可以轻松更换和升级的独立组件。

  • 业务能力 :微服务非常简单,专注于单一功能。

  • 自治 :开发人员和团队可以彼此独立工作,从而提高速度。

  • 持续交付 :通过软件创建,测试和批准的系统自动化,允许频繁发布软件。

  • 责任 :微服务不关注应用程序作为项目。相反,他们将应用程序视为他们负责的产品。

  • 分散治理 :重点是使用正确的工具来做正确的工作。这意味着没有标准化模式或任何技术模式。开发人员可以自由选择最有用的工具来解决他们的问题。

  • 敏捷 :微服务支持敏捷开发。任何新功能都可以快速开发并再次丢弃。

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

以下是设计微服务的最佳实践:

330b0cc0afc44eb5536f486618abd456.png
设计微服务的最佳实践

5、微服务架构如何运作

微服务架构具有以下组件:

  • 客户端 :来自不同设备的不同用户发送请求

  • 身份提供商 :验证用户或客户身份并颁发安全令牌

  • API 网关 :处理客户端请求

  • 静态内容 :容纳系统的所有内容

  • 管理 :在节点上平衡服务并识别故障

  • 服务发现 :查找微服务之间通信路径的指南

  • 网络 :代理服务器及其数据中心的分布式网络

  • 远程服务 :启用驻留在 IT 设备网络上的远程访问信息

6、微服务架构的优缺点是什么

a3f30c041ae15bc707962606f01bbdb2.png

7、单片、SOA 和微服务架构有什么区别

7da966d9cb219b1a7273c365f04daf4e.png
单片 SOA 和微服务之间的比较
  • 单片架构类似于大容器,其中应用程序的所有软件组件组装在一起并紧密封装。

  • 一个面向服务的架构师一种相互通信服务器的集合。通信可以涉及简单的数据传递,也可以涉及两个或多个协调某些活动的服务。

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

8、在使用微服务架构时会面临哪些挑战

开发一些较小的微服务听起来很容易,但开发它们时经常遇到的挑战如下:

  • 自动化组件 :难以自动化,因为有许多较小的组件。因此,对于每个组件,我们必须遵循 Build、Deploy 和 Monitor 的各个阶段。

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

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

  • 调试 :很难找到错误的每一项服务。维护集中式日志记录和仪表板以调试问题至关重要。

9、SOA 和微服务架构之间的主要区别是什么

SOA 和微服务之间的主要区别如下:

6ae4ca31fcdb28df7fe225c9fdea2e77.png

10、微服务有什么特点

你可以列出微服务的特征,如下所示:

006dac478b3e67a17e5c73493d2f2367.png
微服务的特征

11、什么是领域驱动设计

39a2c0b1cc0ae6f60cea20b1239da01e.png
DDD 原理

12、为什么需要域驱动设计(DDD)

2d51201ce62d5cc8522dd290ac5c4cfc.png
我们需要DDD的因素

13、什么是无所不在的语言

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

无处不在的语言必须非常清晰,以便它将所有团队成员放在同一页面上,并以机器可以理解的方式进行翻译。

14、什么是凝聚力

模版内部元素所属的程度被认为是凝聚力。

15、什么是耦合

组件之间依赖关系强度的度量被认为是耦合。一个好的设计总是被认为具有高内聚和低耦合性。

16、什么是 REST / RESTful 以及它的用途

Representational State Transfer(REST)/RESTful Web服务是一种帮组计算机系统通过Internet 进行通信的架构风格。这使得微服务更容易理解和实现。微服务可以使用或不使用RESTful API实现,但使用RESTful API构建松散耦合的微服务总是更容易。

17、什么是不同类型的微服务测试

在使用微服务是,由于有多个微服务协同工作,测试变得非常复杂。因此,测试分为不同的级别。

  • 在底层,我们有面向技术的测试,如单元测试和性能测试。这些事完全自动化的。

  • 在中间层面,我们进行了诸如压力测试和可用性测试之类的探索性测试。

  • 在顶层,我们的验收测试数量很少。这些验收测试有助于利益相关这理解和验证软件功能。



欢迎加入我的知识星球,一起探讨架构,交流源码。加入方式,长按下方二维码噢

d44c8b5f5ac9d8c5577f706b4c8d3d6a.png

已在知识星球更新源码解析如下:

456fd6ea5b00755f3fd9e82fcf1fb712.jpeg

25af7ae43527aab997aabb26fd04e1a0.jpeg

4b2a2512f4631227587a935b162ba439.jpeg

00c80db05a9e225c290cd3c24eef09dd.jpeg

最近更新《芋道 SpringBoot 2.X 入门》系列,已经 101 余篇,覆盖了 MyBatis、Redis、MongoDB、ES、分库分表、读写分离、SpringMVC、Webflux、权限、WebSocket、Dubbo、RabbitMQ、RocketMQ、Kafka、性能测试等等内容。

提供近 3W 行代码的 SpringBoot 示例,以及超 4W 行代码的电商微服务项目。

获取方式:点“在看”,关注公众号并回复 666 领取,更多内容陆续奉上。

文章有帮助的话,在看,转发吧。
谢谢支持哟 (*^__^*)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值