1。你对微服务了解多少?微服务,也称为微服务架构,是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务的集合。通俗地说,您必须了解蜜蜂如何通过对齐六角形蜡细胞来构建蜂巢。他们最初从使用各种材料的小部分开始,然后用它们建造了一个大蜂巢。这些细胞形成图案,形成坚固的结构,将蜂窝的特定部分固定在一起。在这里,每个细胞彼此独立,但又与其他细胞相关。这意味着对一个细胞的损害不会损害其他细胞,因此蜜蜂可以在不影响整个蜂巢的情况下重建这些细胞。图1:微服务的蜂窝表示——微服务面试问题请参考上图。在这里,每个六边形代表一个单独的服务组件。与蜜蜂的工作类似,每个敏捷团队使用可用的框架和选择的技术堆栈构建单独的服务组件。就像在蜂巢中一样,每个服务组件形成一个强大的微服务架构,以提供更好的可扩展性。此外,敏捷团队可以单独解决每个服务组件的问题,而对整个应用程序没有影响或影响很小。2、谈谈微服务架构的优势。优势说明自主开发。所有微服务都可以根据各自的功能轻松独立开发和部署。根据它们提供的服务,它们可以独立部署在任何应用程序中。故障隔离即使应用程序中的某个服务不工作,系统仍然以混合技术栈继续运行。可以使用不同的语言和技术来构建同一个应用程序的不同服务。微服务的特点是什么?解耦——系统内的服务在很大程度上是解耦的。因此,可以轻松构建、更改和扩展整个应用程序组件化-微服务被视为可以轻松替换和升级的独立组件业务能力-微服务很简单,专注于单一功能自治-开发人员和团队可以彼此独立工作,从而提高速度持续交付——通过自动化软件创建、测试和批准系统,允许频繁发布软件职责——微服务不将应用程序作为项目来关注。相反,他们将应用程序视为他们负责的产品的去中心化治理-强调使用正确的工具来完成正确的工作。这意味着没有标准化模式或任何技术模式。开发人员可以自由选择最有用的工具来解决他们的问题敏捷——微服务支持敏捷开发。任何新功能都可以快速开发并再次丢弃4.设计微服务的最佳实践是什么?以下是设计微服务的最佳实践:图6:设计微服务的最佳实践——微服务面试问题5.微服务架构如何工作?微服务架构具有以下组件:客户端——来自不同设备的不同用户发送请求。身份提供者–对用户或客户端进行身份验证并颁发安全令牌。API网关——处理客户端请求。StaticContent——保存系统的所有内容。管理——平衡节点上的服务并识别故障。服务发现-寻找微服务之间通信路径的指南。内容交付网络——代理服务器及其数据中心的分布式网络。远程服务——允许远程访问驻留在IT设备网络上的信息。6.微服务架构的优缺点是什么?微服务架构的优点微服务架构的缺点可以自由使用不同的技术增加故障排除的挑战每个微服务专注于单一功能远程调用导致延迟增加支持单个可部署单元配置和其他操作的工作量导致软件频繁发布难以发布保持交易安全确保每个服务的安全难以跨各种便利设施跟踪数据并行开发和部署多个服务难以在服务之间编码7.单体、SOA和微服务架构之间有什么区别?单体架构类似于大容器,其中应用程序的所有软件组件都组装在一起并紧密封装。面向服务的体系结构是相互通信的服务的集合。通信可以涉及简单的数据传递,也可以涉及两个或多个服务协调某些活动。微服务架构是一种架构风格,它将应用程序构建为以业务领域为模型的小型自治服务的集合。8.使用微服务架构时,您面临哪些挑战?开发一些更小的微服务听起来很容易,但是在开发的过程中经常遇到的挑战如下。自动化组件:难以自动化,因为有许多较小的组件。因此,对于每个组件,我们必须遵循构建、部署和监控阶段。易感性:将大量组件一起维护会导致部署、维护、监控和识别问题变得困难。它需要对所有组件都有很好的了解。配置管理:有时在各种环境中维护组件的配置变得困难。调试:很难找到每一个有问题的服务。维护用于调试问题的集中式日志记录和仪表板至关重要。9.SOA和微服务架构之间的主要区别是什么?SOA微服务遵循“尽可能共享”架构方法他们有共同的治理和标准他们关注人们的协作和其他选择的自由他们使用企业服务总线(ESB)进行通信简单的消息传递系统他们支持多种消息传递协议他们使用HTTP等轻量级协议/REST等多线程处理I/O的开销较大,单线程处理,通常使用EventLoop功能进行非锁I/O处理最大化应用服务复用性重点解耦传统关系型数据库更常用现代关系数据库更常用的系统变更需要修改整体系统变更是创建新服务DevOps/ContinuousDelivery正在流行,但还不是主流关注DevOps/ContinuousDelivery10.微服务有哪些特点?您可以列出微服务的特征,如下所示:图7:微服务的特征-微服务面试问题11.什么是领域驱动设计?图8:DDD原理——微服务面试题12.为什么我们需要领域驱动设计(DDD)?图9:我们需要DDD的因素-微服务面试问题13。什么是无处不在的语言?如果您必须定义一种无处不在的语言(UL),它是特定领域的开发人员和用户使用的一种通用语言,可以轻松解释该领域。无处不在的语言必须清晰明了,这样才能让所有团队成员达成共识,并以机器可以理解的方式进行翻译。14.什么是凝聚力?模块内元素所属的程度被认为是内聚性。15.什么是耦合?组件之间依赖性强度的度量被认为是耦合。一个好的设计总是被认为是高内聚低耦合的。16.什么是REST/RESTful,它有什么用?RepresentationalStateTransfer(REST)/RESTfulWeb服务是一种架构风格,可帮助计算机系统通过Internet进行通信。这使得微服务更容易理解和实施。微服务可以使用或不使用RESTfulAPI来实现,但使用RESTfulAPI构建松散耦合的微服务总是更容易。17.微服务测试有哪些不同类型?使用微服务时,由于多个微服务协同工作,测试变得非常复杂。因此,考试分为不同的级别。在底部,我们有面向技术的测试,例如单元测试和性能测试。这些都是完全自动化的。在中层,我们做了压力测试、可用性测试等探索性测试。在顶层,我们有少量的验收测试。这些验收测试帮助利益相关者理解和验证软件功能。
