Java面试题微服务

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

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

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

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

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

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

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

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

  独立开发 

  独立部署 

   

故障隔离 

混合技术栈 

粒度缩放 

3、微服务有哪些特点? 

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

6、什么是 Spring Boot 

多年来,随着新功能的增加,spring 变得来越复杂。访spring官网页面,我们就会看到可以在我们的应用程序中使用的所有 Spring 项目的不同功能如果必须启动一个新的 Spring 项目,我们须添加构建路径或添 Maven 依赖关系,置应用程序服务器,添 spring 配置。因此开始一个新的 spring 项目需要很多努力,因为我们现在必须从头开始做所有事情。 

Spring Boot 是解决个问题的方法 

Spring Boot 已经建在现 spring 框架上。使用 spring ,我们避免了之前我们必须做的所有样板代码和配置。因此,Spring Boot 可以帮助我们最少的工作量,更加健壮地使用现有的 Spring功能。 

7Spring Boot 有哪些优点 

Spring Boot 的优点 

  减少开发,测试时间和努力。 

  使用 JavaConfig 于避免使用 XML 

  避免大量的 Maven 入和各种版本冲突。 

  提供意见发展方法。 

  通过提供默认值快速开始开发。 

  没有单独的 Web 器需要。这意味着你不再需要启动 TomcatGlassfish或其他任何 东西。 

  需要更少的配置 因为没有 web.xml 文件只需添加用@ Configuration 注释的类,然后 添加用@Bean 注释方法,Spring 将自加载对象并像以前一样对其进行管理。您甚至 可以将@Autowired 添加到 bean 方法中使 Spring 自动装需要的依赖关系中。 

  基于环境的配置 使用这些属性,您可以将您正在使用的环境传递到应用程序-
Dspring.profiles.active = {enviornment}。在加载主应用程序属性文件后Spring 将在 application{environment} .properties中加载后续的应用程序属性文件。 

8、什么是 JavaConfig 

Spring JavaConfig  Spring 社区的产品它提供了配置 Spring IoC 容器的Java 方法。因此它有助于避免使用 XML 配置。使 JavaConfig 的优点于: 

  面向对象的配置。由于配置被定义为 JavaConfig 中的类,因此用户可以充分利 Java 中的面向对象功能。一个配置类可以继承另一个,重写它@Bean 方法等。 

  减少或消除 XML 。基于依赖注入原则的外化配置的好处已被证明。但是,许多开发 人员不希望在 XML  Java 之间来回切换。JavaConfig 为开发人提供了一种 Java 方法来配置与 XML 置概念相似的 Spring 容器。从技术角度来讲,只使用 JavaConfig 

配置类来配置容器是可行的,但实际上很多人认为JavaConfig  XML 混合匹配是理想的。 

  类型安全和重构友好。JavaConfig 提供了种类型安全的方法来配 Spring容器。由  Java 5.0 对泛型的支,现在可以按类型而不是按名称检 bean不需要任何强制转换 或基于字符串的查找。 

9、什么是 Spring Cloud 

Spring cloud 流应程序启动器是基 Spring Boot  Spring 成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。 

10、使用 Spring Boot 开发分布式微服务时,我们需要关注哪些问题? 

  与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题。 

  服务发现-服务发现工具管理群集中的流程和服务如何查找和互相交谈。它涉及一个服务 目录,在该目录中注册服务,然后能够查找并连接到该目录中的服务 

  冗余-分布式系统中的冗余问题 

  负载平衡 --负载平衡改善跨多个计算资源的工作负荷,诸如计算机,计算机集群,网络链 路,中央处理单元,或磁盘驱动器的分布。 

  性能-问题 由于各种运营开销导致的性能问题 

  部署复杂性-Devops 技能的要求。  

11、服务注册和发现什么意思Spring Cloud 如何实现? 

当我们开始一个项目时,我们通常在属性文件中进行所有的配置。随着越来越多的服务开发和部署,添加和修改这些属性变得更加复杂。有些服务可能会下降,而某些位置可能会发生变化。手动更改属性可能会产生问题。  

Eureka 服务注册和发现可以在这种情况下提供帮助。由于所有服务都 Eureka 服务器上注册并通过调用 Eureka 服务器完成查找,因此无需处理服务地点的任何更改和处理  

12、负载平衡的意义么? 

在计算中,负载平衡可以改善跨计算机,计算机集群,网络链接,中央处理单元或磁盘驱动器等多种计算资源的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间并避免任何单一资源的过载。使用多个组件进行负载平衡而不是单个组件可能会通过冗余来提高可靠性和可用性。负载平衡通常涉及专用软件或硬件,例如多层交换机或域名系统服务器进程。 

13、什么是 Hystrix 

Hystrix 是一个延迟和容错库,旨在隔离远程系统,服务和第三方库的访问点,当出现故障是不可避免的故障时,停止级联故障并在复杂的分布式系统中实现弹性 

14、什么是 Netflix Feign?它的优点是什么? 

Feign 是受 RetrofitJAXRS-2.0  WebSocket 启发的 java 户端联编程序。  优点:Feign 的第一目标是将约束分母的复杂性统一 http apis,而不考虑其稳定性。 

15Spring Cloud 路器的作用 

当一个服务调用另一个服务由于网络原因或自身原因出现问题,调用者就会等待被调用者的响应 当更多的服务请求到这些资源导致更多的请求等待,发生连锁效应(雪崩效应)  断路器有完全打开状态:一段时间内达到一定的次数无法调用,并且多次监测没有恢复的迹象,断路器完全打开,那么下次请求就不会请求到该服务。 

半开:短时间内有恢复迹象,断路器会将部分请求发给该服务,正常调用 断路器关闭。 关闭:当服务一直处于正常状态,能正常调用。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

老歪不歪

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值