当前位置: 首页 > web >正文

黑马Java面试笔记之 微服务篇(SpringCloud)

一. SpringCloud 5大组件

SpringCloud 5大组件有哪些?

总结

五大件分别有:

  • Eureka:注册中心
  • Ribbon:负载均衡
  • Feign:远程调用
  • Hystrix:服务熔断
  • Zuul/Gateway:网关

如果项目用到了阿里巴巴(SpringCloudAlibba)的组件,也可以说:

随着SpringCloudAlibba在国内兴起,我们项目中使用了一些阿里巴巴的组件

  • 注册中心/配置中心 Nacos
  • 负载均衡 Ribbon
  • 服务调用 Feign
  • 服务保护 sentinel
  • 服务网关 Gateway

二. 服务注册发现

服务注册和发现是什么意思?SpringCloud 如何实现服务注册发现?

        在跟面试官陈述的时候,要说明我做过的哪一个项目使用了哪个注册中心

  • 微服务中必须要使用的组件,考察我们使用微服务的程度
  • 注册中心的核心作用:服务注册和发现
  • 常见的注册中心:eureka、nocas、zookeeper

2.1 Eureka的作用

总结

2.2 nacos

我看你之前也用过nacos、你能说下nacos与eureka的区别?

nacos的工作流程

总结

三. 负载均衡

你们项目负载均衡如何实现的?

  • 负载均衡 Ribbon,发起远程调用feign就会使用Ribbon
  • Ribbon负载均衡策略有哪些?
  • 如果想自定义负载均衡策略如何实现?

3.1 Ribbon负载均衡流程

3.2 Ribbon负载均衡策略

Ribbon负载均衡策略有哪些?

  • RoundRobinRule:简单轮询服务列表来选择服务器
  • WeightedResponseTimeRule:按照权重来选择服务器,响应时间越长,权重越小
  • RandomRule:随机选择一个可用的服务器
  • BestAvailableRule:忽略那些短路的服务器,并选择并发数较低的服务器
  • RetryRule:重试机制的选择逻辑
  • AvailabilityFilteringRule:可用性敏感策略,先过滤非健康的,再选择连接数较小的实例
  • ZoneAvoidanceRule:以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。而后再对Zone内的多个服务做轮询

3.3 自定义负载均衡

如果想自定义负载均衡策略如何实现?

        可以自己创建类实现IRule接口,然后再通过配置类或者配置文件配置即可,通过定义IRule实现可以修改负载均衡规则,有两种方式:

总结

四. 服务雪崩

什么是服务雪崩,怎么解决这个问题?

4.1 什么是服务雪崩

        一个项目中可能存在众多的微服务,各个微服务的调用都可能有Feign的远程调用,如果有一台服务关闭,则就有可能出现服务雪崩(一个服务失败,导致整条链路的服务都失败的情形)

4.2 解决方法(Hystix 服务熔断降级

  • 服务降级

        服务降级是服务自我保护的一种方式,或者保护下游服务的一种方式,用于确保服务不会受请求突增影响变得不可用

  •  服务熔断=

4.3 预防服务雪崩(限流)

        限制访问,控制一部分流量预防服务雪崩

总结

什么是服务雪崩,怎么解决这个问题?

答:

五. 微服务监控

你们的微服务是怎么监控的?

        首先为什么需要监控?

5.1 skywalking

        一个分布式系统的应用程序性能监控工具(Application Performance Managment),提供了完善的链路追赃能力,apache的顶级工具(前华为产品经理主导开源)

 

总结 

面试官:你们的微服务是怎么监控的?

候选人:

http://www.xdnf.cn/news/10583.html

相关文章:

  • centos8修改IP地址和Hostname
  • 双指针题解——反转字符串中的单词【LeetCode】
  • 从 LeetCode 到日志匹配:一行 Swift 实现规则识别
  • 前端自动化测试利器:Playwright 全面介绍
  • NVMe IP现状扫盲
  • STM32 智能小车项目 L298N 电机驱动模块
  • Mininconda3安装使用
  • Java设计模式之观察者模式详解
  • 【Godot引擎】如何使用内置的全局搜索功能提升开发效率
  • FPGA仿真中阻塞赋值(=)和非阻塞赋值(<=)区别
  • 使用pandas实现合并具有共同列的两个EXCEL表
  • React 18新特性介绍
  • leetcode hot100刷题日记——35.子集
  • DrissionPage 数据提取技巧全解析:从入门到实战
  • vulnyx loweb writeup
  • 12.2Swing中JButton简单分析
  • 05-power BI高级筛选器filter与Values人工造表
  • 【烧脑算法】不定长滑动窗口:从动态调整到精准匹配以灵活特性实现高效破题
  • 第2篇:数据库连接池原理与自定义连接池开发实践
  • 01 Ubuntu20.04下编译QEMU8.2.4,交叉编译32位ARM程序,运行ARM程序的方法
  • 基于GPT-SoVITS-v4-TTS的音频文本推理,流式生成
  • 第12次13: 修改登录密码
  • 《 C++ 点滴漫谈: 四十 》文本的艺术:C++ 正则表达式的高效应用之道
  • Linux学习笔记:shell脚本篇(1)
  • 【基于阿里云搭建数据仓库(离线)】IDEA导出Jar包(包括第三方依赖)
  • Perl One-liner 数据处理——基础语法篇【匠心】
  • Go 语言 + Word 文档模板:WordZero 引擎如何让企业文档处理效率提升 300%?
  • 使命召唤16:现代战争 MOD整合包 豪华中文 免安 离线运行版
  • 做好 4个基本动作,拦住性能优化改坏原功能的bug
  • Hadoop学习笔记