当前位置:   article > 正文

Java微服务 面试题_java微服务面试

java微服务面试

Java面试题大全免费下载地址:

Java面试题大全.pdf-其它文档类资源-CSDN下载

  1. Nginx是一个轻量级、高性能、稳定性高、并发性强的HTTP和反向代理服务器。
  2. Vue

V-cloak:防止页面加载时出现闪烁问题

v-text:将数据填充到标签中。

v-html:在v-text的基础上,还可以讲html片段填充到标签中。不能用在用户提交上

v-pre:显示原始信息,跳过编译过程(这个元素和它的子元素)

v-once:执行一次性的插值(当数据改变时,插值处的内容不会继续更新)

v-model:一个指令,限制在<input><select><textatea>components中使用

双向数据绑定:当数据发生改变时,视图也就发生变化;

              当视图发生变化时,数据也会跟着同步变化。

  1. 单体应用架构

项目所有功能模块放在一个工程中编码、编译、打包部署在一个tomcat容器中。

简单实用、便于维护、成本低。

优点:高效开发、架构简单、易于测试、易于部署。

缺点:可靠性差、复杂性高、扩展能力受限。

  1. 垂直应用架构

为了业务之间互不影响,提高效率、减少组件之间的依赖。

优点:流量分担解决并发问题;

      可以针对不同模块进行优化;

      方便水平扩展、负载均衡、容错率高;

      系统间相互独立,互不影响,业务迭代更高效。

缺点:服务之间相互调用,端口发生改变得手动改变;

      搭建集群之后,实现负载均衡比较复杂;

      服务之间调用方式不统一;

      服务监控不到位。

  1. SOA应用架构

Dubbo 高性能、轻量级的开源java RPC框架,可以和Spring框架无缝集成。

核心功能:面向接口的远程方法调用;

          智能容错和负载均衡;

          服务自动注册和发现。

优点:分布式、松耦合、扩展灵活、可重用。

缺点:服务抽取力度较大,服务调用方和提供耦合度较高。

  1. 微服务应用架构

拆分粒度更小,服务更独立。微小、独立、轻量级通信。

重点:业务需要彻底组件化服务化。

优点:

     微小,便于特定服务的聚焦,解耦、便于实施敏捷开发。

     便于重用和模块之间的组装

     独立,松耦合,不同的微服务可以使用不同的语言开发。

     更容易引进新的技术。

缺点:

     分布式复杂难以管理。

     分布式链路跟踪难。

  1. 服务注册与服务发现。

服务注册:提供者将所提供服务的信息(服务器IP和端口、访问协议)

服务发现:消费者从中获取到服务列表。

  1. 负载均衡

将请求压力分配到多个服务器,以提高服务的性能、可靠性。

  1. 熔断

短路保护。牺牲局部,保全整体。

断路器负责监控服务之间的调用情况,连续多次失败进行熔断保护。

  1. 链路追踪

对一次请求涉及的多个服务链路进行日志记录、性能监控。

  1. API网关

负责转发所有外来请求

  1. 配置中心

提供了统一的配置信息管理服务,可以实时通知各个服务获取最新的配置信息。

16、SpringCloud

Spring Cloud并没有重复制造轮子,它只是将目前各家公司开发的比较成熟、经得起实际考验的服务框架组合起来,通过Spring Boot风格进行再封装屏蔽掉了复杂的配置和实现原理,最终给开发者留出了一套简单易懂、易部署和易维护的分布式系统开发工具包

解决的问题:微服务架构中的服务注册发现问题、网络问题(比如熔断场景)、统一认证安全授权问题、负载均衡问题、链路追踪等问题。

16、核心组件:

注册中心:Eureka

客户端负载均衡:Ribbon

熔断器:Hystrix

网关:Zuul

配置中心:Config

服务调用:Feign

消息驱动:Stream

链路追踪:Sleuth

  1. SpringCloud和SpringBoot的关系

SpringCloud只是利用了SpringBoot的特点,让我们能够快速的实现微服务组件开发。

  1. Eureka工作原理

Eureka:服务注册中心(可以是一个集群),对外暴露自己的地址。

提供者:启动后向Eureka注册自己信息(地址,提供的服务)

消费者:向Eureka订阅服务,Eureka会将对应服务的读物列表发送给消费者,定        期更更新。

心跳(续约):提供者定期通过http方式向Eureka定期通过http方式向Eureka刷新自己的状态。

  1. 服务注册

服务提供者在启动时,会向Eureka Server 发起一次请求,将自己注册到Eureka注册中心去。

  1. 服务续约

注册服务之后,服务提供者维持一个心跳(30s定时向Eureka Server 发送请求)

  1. 失效剔除

服务提供者不一定正常下线,可能内存溢出、网络故障等,Eureka Server 将是小的服务剔除服务列表,开启定时任务,每60s对失效服务进行一次剔除。

  1. 自我保护

服务未按时心跳,因为网络原因,Eureka 将当前实例的注册信息保护起来,不允许剔除。有效的保证了大多数服务依然可用。

  1. 负载均衡分类

服务器:(Nginx、F5)请求到服务器,由负载均衡根据一定的算法,将请求路由到目标服务器处理。

客户端:(Ribbon)消费者客户端会有一个服务器列表,调用方法在请求前通过一定的负载均衡算法选择一个服务器访问,负载均衡算法是在请求客户端进行的。

  1. Ribbon支持的负载均衡算法
  1. 轮询策略
  2. 随机策略
  3. 重试策略
  4. 最小连接数策略
  5. 可用过略策略
  6. 区域权衡策略

25、服务器雪崩

一种因“服务提供者不可用”导致“服务调用这不可用”,并将不可用逐渐扩大的现象。

形成原因:

  1. 服务提供者不可用(硬件故障、程序bug、缓存击穿、用户大量请求)
  2. 重试加大请求流量(用户重试、代码逻辑重试)
  3. 服务调者不可用(同步等待造成的资源耗尽)

解决方案:

  1. 服务器熔断
  2. 服务降级
  3. 服务限流
  1. Hystrix熔断器

一个延迟和容错库,用于隔离访问远程系统、服务或者第三方库,防止级联失败,提升系统的可用性与容错性。

  1. 包裹请求
  2. 跳闸机制
  3. 资源隔离
  4. 监控
  5. 回退机制
  6. 自我修复
  1. Feign

轻量级HTTP服务客户端(发送请求、远程调用)。

本质:封装了Http调用流程,更符合面向接口化的编程习惯,类似于Dubbo的服务调用。

对熔断的支持:

客户端工程配置文件中开启支持,超时时长设置。

  1. 开启Hystrix后,Feign中的方法进行一个管理,一旦出问题就进入对应的回退逻辑处理。
  2. 当有两个超时时间设置,熔断的时候根据两个时间的最小值进行。
  1. Gateway的作用

网关:建权、路由、导航

  1. Gateway的工作流程

 30、Gateway的路由规则

 31、Gateway的过滤使用、

GlobalFilter全局过滤器是程序员使用比较多的过滤器,可以在过滤器中完成鉴权、流量控制、IP黑白名单、权限控制、日志监控等。 

SCA阿里开源组件

32、Nacos:更易于构建原生应用的动态服务发现、配置管理和服务管理平台

33、Sentinel:把流量作为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务器稳定

34、RocketMQ:分布式消息系统,基于高可用分布式集群技术,提供低延时的、高可靠的消息分布与订阅服务。

使用场景/好处:

  1. 异步处理:注册后,发送注册短信。注册完成时,提交任务到MQ,发送模块并行获取MQ中的任务。
  2. 系统解耦:完成注册,再加一个发送邮件,只需要新增邮件模块,从MQ中读取任务即可,无修改注册的模块。
  3. 流量肖锋:秒杀、抢购等。用户的请求写入MQ,超过MQ最大长度丢弃请求。
  4. 日志处理:日志采集方收集日志写入kafka消息队列中,处理方订阅并消费kafka队列中的日志数据。
  5. 消息通讯:点对点或者订阅发布模式,通过消息进行通讯。

特点:(1)可靠性

  1. 灵活的路由:通过交换器来路由消息,针对复杂的路由功能,可以将多个交换器绑定在一起。
  2. 扩展性:多个RocketMQ节点可以组成一个集群。
  3. 高可用性:队列可以在机器上设置镜像,使得部分节点出问题的时候下队列仍然可以使用。
  4. 多种协议:除了支持原生AMQP协议,还支持STOMP、MQTT等多种中间件协议。
  5. 多种语言:客户端,几乎支持所有常用语言
  6. 管理界面:提供了一个易用的用户界面,可监控和管理消息、集、群中的节点。
  7. 令插件机制:提功了许多插件,已实现多方面进行扩展吗,也可自己编写插件。
  1. RabbitMQ基本概念

Broker:消息队列服务器实体。

Exchange:消息交换机,指定消息什么规则,路由到哪个队列。

Queue:消息队列载体。

  1. 常用的MQ
  1. ActiveMQ:支持万级的吞吐量,较成熟完善;
  2. RabbitMQ:延时低,微妙级延时,
  3. RocketMQ:阿里维护的消息中间件,可以达到十万级的吞吐量,支持分布式事务。
  4. Kafka:阿里维护的消息中间件,可以达到十万级的吞吐量,支持分布式事务。
  1. AMQP三层协议

  1. ElasticSearch

简称ES,一个开源的高扩展的分布式全文检索引擎,可以近乎实时存储数据、检索数据。

概述:面向文档,可以存储整个对象或文档。还可以检索每个文档的内容,对文档进行索引、搜索、排序、过滤。

  1. 应用案例:GitHub、维基百科、百度、新浪、阿里
  2. 核心概念
  1. index索引:一个拥有相似特征的文档集合。--相当于MySQL数据库
  2. Type类型:索引的一个逻辑上的分类/分区。--相当于MySQL表
  3. Filed字段:--相当于MySQL表的字段
  4. Mapping映射:处理数据的方式和规则方面的限制。--相当于数据库中创建表的过程,给表设置主外键
  5. Document文档:一个可以被索引到的基础单元。--数据库中的一条数据
  6. Cluster集群:一个或多个集群组织在一起,共同持有整个的数据。
  7. Node节点:一个节点是集群中的服务器。
  8. Shards&Replicas分片和复制:

分片:将索引划分成多份,可以放置在集群任何节点上。1、允许水平分割/扩展内容数量;2、允许在分片上进行分布式、并行。

复制:创建分片的一份或多份拷贝。1、在分片/节点失败的情况下,提高了高可用性;2、搜索可以在所有复制上运行;3、分片和复制的数量可以在索引创建的时候指定。4、复制数量可以在之后动态改变,分片数量事后不能再改变。

  1. 分库分表

作用:缓解单机和单库带来的性能瓶颈和压力,突破网络IO、硬件资源、连接数的瓶颈。

方式:垂直分库、水平分库、垂直分表、水平分表。

垂直拆分原则:(1)不常用的字段单独放一张表。

             (2)text、blob等大字段拆分放在附表。

             (3)经常组合查询的列放在同一张表中。

  1. 垂直分库

按照业务进行分类,分不到不同的数据库上,每个库可以放在不同的数据库上(专库专用)。

好处:(1)业务层面解耦

     (2)对不同的业务数据进行分级管理、维护、监控、扩展。

     (3)高并发场景下,提升IO、数据库连接数、降低单机硬件资源的瓶颈。

  1. 水平分库

把同一张表的数据按一定规则拆到不同的数据库中,每个库可以放在不同的服务器上。

好处:解决了单库大数据,高并发的性能瓶颈,提高了系统的稳定性和可用性。

  1. 垂直分表

将一个表按照字段分成多表,每个表存储一部分字段。

好处:(1)避免IO争抢,减少锁表的几率。

     (2)充分发挥热门数据的操作效率。

  1. 水平分表

在同一个数据库内,把同一个表的数据按一定规则拆到多个表中。

好处:优化单一表数据量过大而产生的性能问题,避免IO争抢,减少锁表的几率。

  1. Sharing-JDBC

当当网研发的开源分布式数据库中间件。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/795885
推荐阅读
相关标签
  

闽ICP备14008679号