相信所有的Java工程师大家都知道微服务框架在Java是不可或缺的一部分。目前,最流行的微服务框架为Java开发者提供了一系列构建分布式系统的工具集。目前,各大互联网公司的中微服务框架得到了广泛的应用,既是工具,也是程序员的进步Java架构师必要的技术。以下是面试中可能涉及的一些技术的总结。微服务框架面试题,一起看吧。
1、单体结构的优缺点是什么?
A:单体结构也被称为单体系统或单体应用程序。它是一种将系统中的所有功能和模块耦合到一个应用程序中的架构模式。单体结构特征:包装成一个独立的单元(导成唯一的jar包或war包),会以一种进程的方式运行。
单体架构的优点是:项目管理方便,部署简单;
单体架构的缺点是测试成本高、可伸缩性差、可靠性差、迭代困难、跨语言程度差、团队合作困难。
2、SpringMVC介绍架构?
答:MVC是模型(Model)、视图(View)、控制器(Controller)缩写三个单词。 让我们从这三个方面来解释MVC中的三个要素。
Model是指数据模型,是对客观事物的抽象。Model主要是数据、业务逻辑和业务规则。相对而言,这是MVC中相对稳定的一部分,成品后不会改变。 开发初期最重要的任务主要是实现Model。如果这部分写得好,以后可以少改,快速开发。
View是指视图,即呈现给用户的界面,是model的具体表现形式,也是收集用户输入的地方。 如果你在博客上看到一篇文章,那就是Post的表现形式。 View的目的是提供与用户互动的界面。换句话说,对于用户来说,只有View是可见的和可操作的。 事实上,你不会让用户看到Model,也不会让他直接操作Model。 你只能让用户看到你想让他看到的内容。 这就是View要做的,他往往是MVC变化频繁的部分,也是客户经常要求改变的地方。 你今天可能会以一种形式展示你的博客文章,明天可能会成为其他形式的表达。
Contorler指的是控制器,主要负责与model和view打交道。 换句话说,model和view一般不直接打交道,他们老死不相往来。model不会在view中操作, model不会输出HTML代码等任何用于表达的东西。这两个甩手不干,那就得有人来做吧,只能Controller上。 Contorler是MVC中沟通的桥梁,用于决定使用哪些Model,操作哪些Model,为视图准备哪些数据。
3、MVC架构有哪些优缺点?
答:优点(1)各施其职,互不干涉。在MVC模式下,三层各履行职责,如果需求发生变化,只需更改相应层中的代码,不影响其他层中的代码;(2)有利于开发中的分工。在MVC模式下,由于系统按层分离,开发中的分工可以更好地实现。网页设计师可以在视图层中开发JSP,熟悉业务的开发人员可以开发业务层,其他开发人员可以开发控制层;(3)有利于组件的重用。分层后更有利于组件的重用。如果控制层可以独立成一个可用的组件,视图层也可以成为一个通用的操作界面。
缺点:(1)增加了系统结构和实现的复杂性;(2)视图与控制器之间过于紧密的连接;(3)视图对模型数据的低效访问。
4、面向服务架构(SOA)是什么?
答:面向服务的架构(SOA)它是一个组件模型,通过定义良好的接口和合同,将应用程序分为不同的功能单元(称为服务)。界面以中立的方式定义,应独立于硬件平台、操作系统和实现服务的编程语言。这使得构建在各种系统中的服务能够以统一和通用的方式进行交互。
面向服务架构的特点:系统由多个服务组成;每个服务可以独立部署;每个服务之间的松耦合。服务内部高内聚,外部低耦合。高内聚是指每个服务只注重完成一个功能。
5、服务架构的优缺点是什么?
答:优点是:易于测试;可伸缩性强;可靠性强;跨语言会更灵活;团队合作容易;系统迭代容易。
缺点是:运行维护成本过高,部署数量多;接口与多个版本兼容;分布式系统的复杂性;分布式事务。
6、什么是Spring Cloud?
答:Spring 与Dubo等RPC框架相比,Cloud是一个微服务框架, Spring Cloud提供了一套完整的分布式系统解决方案。
Spring Cloud包装了微服务基础框架Netflix的多个开源组件,同时实现了云平台和Spring 集成Boot开发框架。
Spring Cloud为配置管理、服务管理、熔断机制、智能路由、微代理、控制总线、一次性token、全球一致性锁、leader选举、分布式sesion、集群状态管理等操作提供了简单的开发方法。
Spring Cloud 为开发人员提供快速构建分布式系统的工具,开发人员可以快速启动服务或构建应用程序,同时快速连接云平台资源。
7、Eureka注册中心是什么?
答:Eureka是Netflix开发的服务发现组件,本身就是基于REST的服务。Spring Cloud将其集成在其子项目spring中-cloud-在netflix中实现Spring 在发现中注册了Cloud服务,还提供了负载平衡、故障转移等能力。
8、Ribbon是什么?
答:(1)Ribbon 是基于Netflix的基于HTTP和TCP的客户服务端负载平衡工具 实现了Ribbon。(2)与spring不同 独立部署cloud服务注册中心、配置中心和API网关,但它几乎存在于每个spring中 cloud 微服务中。基于这个Ribon,还实现了包括feign提供的声明式服务调用。(3)Ribbon默认提供多种负载均衡算法,如 轮询、随机 等等。甚至包括自定义的负载平衡算法。
9、在过程中,集中式和负载平衡有什么区别?
答:目前,行业主流负荷平衡方案可分为两类(1)集中负载平衡, 即在consumer和provider之间使用独立的负载平衡设施(可以是硬件,如F5, 也可以是nginx等软件, 该设施负责控制 访问请求 通过某种策略转发到providerprovider;
(2)过程中负载均衡,将负载均衡逻辑集成到consumer中,consumer从服务注册中心了解可以使用一些地址,然后从这些地址中选择合适的provider。
Ribbon属于后者,它只是一个类库,集成在consumer过程中,consumer通过它获取provider的地址。
10、什么是声明,有什么作用,解决什么问题?
答:声明调用就像调用本地方法一样;远程http请求无感知。
(1)Spring 声明式调用Cloud, 可以使用 当HTTP要求远程服务时,它可以像调用本地方法一样体验。开发人员根本感觉不到这是一种远程方法,更不用说HTTP要求了;(2)就像Dubbo一样,consumer直接调用接口方法调用provider,不需要通过传统的HTTP Client结构要求再分析返回数据;(3)它解决了开发者不需要关注与远程交互的细节,更不需要关注分布式环境的开发,就像调用本地方法一样。
上面的10道题是今天为大家整理的Java微服务框架的相关面试题。如果你想学习更多的相关内容,你可以观看Java微服务培训课程,能够更深入地理解今天的话题,更好地提高自己Java专业水平。