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

Java面试-微服务篇-SpringCloud

Java面试-微服务篇-SpringCloud

  • SpringCloud 常见组件
  • 注册中心Eureka, Nacos
  • 负载均衡Ribbon
  • 服务雪崩, 熔断降级
  • 微服务的监控
  • 来源

SpringCloud 常见组件

通常情况下

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

SpringCloudAlibaba

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

在这里插入图片描述

注册中心Eureka, Nacos

  • 服务注册和发现(eureka为例)

    • 服务注册: 服务提供者需要把自己的信息注册到eureka, 由eureka来保存这些信息, 比如服务名称, ip, 端口等
    • 服务发现: 消费者向eureka拉取服务列表信息, 如果服务提供者有集群, 则消费者会利用负载均衡算法, 选择一个发起调用
    • 服务监控: 服务提供者每隔30秒向eureka发送心跳, 报告健康状态, 如果eureka90秒没接收到心跳, 就从eureka中剔除

    在这里插入图片描述

  • nacos和eureka的区别

    • nacos和eureka的共同点(注册中心)
      • 都支持服务注册和服务拉取
      • 都支持服务提供者心跳方式做健康检测
    • nacos和eureka的区别(注册中心)
      • nacos支持服务端主动检测提供者状态: 临时实例使用心跳模式, 非临时实例使用主动检测模式
      • 临时实例心跳不正常会被剔除, 非临时实例不会被剔除
      • nacos支持服务列表变更的消息推送模式, 服务列表更新更及时
      • nacos集群默认采用AP方式(高可用模式), 当集群中操作非临时实例时, 采用CP模式(强一致模式); eureka采用AP方式(高可用模式)
    • nacos支持配置中心, eureka只有注册中心

    在这里插入图片描述

负载均衡Ribbon

  • 实现Ribbon负载均衡
    在Feign远程调用过程中, 底层的负载均衡就是使用Ribbon
    在这里插入图片描述
  • Ribbon负载均衡策略
    • RoundRobinRule: 简单轮询服务列表来选择服务器
    • WeightedResponseTimeRule: 按照权重来选择服务器,响应时间越长,权重越小
    • RandomRule: 随机选择一个可用的服务器
    • BestAvailableRule:忽略那些短路的服务器,并选择并发数较低的服务器
    • RetryRule:重试机制的选择逻辑, 轮询服务器, 对于失效的服务进行不断地重试获取服务器
    • AvailabilityFilteringRule: 可用性敏感策略,先过滤非健康的,再选择连接数较小的实例
    • ZoneAvoidanceRule(默认策略): 区域敏感策略, 以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。首先根据调用方的区域按照区域就近原则选择服务器, 而后再对Zone内的多个服务做轮询(没有区域就是轮询)
  • 自定义负载均衡策略
    • 创建类实现IRule接口, 可以指定负载均衡策略(全局)
    • 在客户端的配置文件中, 可以配置某一个服务调用的负载均衡策略(具备)
      在这里插入图片描述

服务雪崩, 熔断降级

  • 什么是服务雪崩, 如何解决
    • 服务雪崩: 一个服务失败, 导致整条链路的服务都失败的情形
    • 服务降级: 服务自我保护的一种方式, 或者保护下游服务的一种方式, 用于确保服务不会受请求突增影响变得不可用, 确保服务不会崩溃, 一般在实际开发中与feign接口整合, 编写降级逻辑
      在这里插入图片描述
    • 服务熔断(Hystrix): 默认关闭, 需要手动打开(在引导类上添加注解@EnableCircuitBreaker). 如果检测到10秒内请求的失败率超过50%, 就触发熔断机制. 之后每隔5秒重新尝试请求微服务, 如果微服务不能响应, 继续走熔断机制. 如果微服务可达, 则关闭熔断机制, 恢复正常请求.

微服务的监控

SkyWalking为例

  • SkyWalking主要可解监控接口, 服务, 物理实例的一些状态.在压测的时候可以看到众多服务中哪些服务和接口比较慢, 可以针对性的分析和优化
  • SkyWalking还可以设置告警规则, 项目上线后, 如果报错, 可以设置给相关负责人发短信和发邮件, 第一时间知道项目的bug情况, 第一时间修复

来源

黑马程序员. 新版Java面试专题视频教程

相关文章:

  • Python语言学习笔记之三(字符编码)
  • 独乐乐不如众乐乐(二)-某汽车零部件厂商IC EMC企业规范
  • 【leetcode】62. 不同路径
  • Flask Session 登录认证模块
  • 打印菱形-第11届蓝桥杯选拔赛Python真题精选
  • 图片转换成pdf格式的软件ABBYY16
  • elasticsearch Connection reset by peer如何处理
  • python爬虫中 HTTP 到 HTTPS 的自动转换
  • colab notebook导出为PDF
  • 利用企业被执行人信息查询API保障商业交易安全
  • 5、Qt:项目中包含多个子项目(.pro)/子模块(.pri)
  • Linux:docker容器操作(4)
  • [网络] 5. TCP 链接的建立与释放~汇总
  • 怎样解决微信上传头像失败的问题?照片尺寸修改方法分享
  • 王者荣耀小游戏
  • 【跃迁之路】【477天】刻意练习系列236(2018.05.28)
  • android图片蒙层
  • ES6核心特性
  • es6要点
  • fetch 从初识到应用
  • Js基础知识(一) - 变量
  • Laravel 实践之路: 数据库迁移与数据填充
  • Mysql5.6主从复制
  • 测试如何在敏捷团队中工作?
  • 记录:CentOS7.2配置LNMP环境记录
  • 如何使用 OAuth 2.0 将 LinkedIn 集成入 iOS 应用
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • 用Canvas画一棵二叉树
  • ionic异常记录
  • ​人工智能书单(数学基础篇)
  • # 执行时间 统计mysql_一文说尽 MySQL 优化原理
  • #100天计划# 2013年9月29日
  • #HarmonyOS:软件安装window和mac预览Hello World
  • (JS基础)String 类型
  • (pojstep1.3.1)1017(构造法模拟)
  • (安卓)跳转应用市场APP详情页的方式
  • (二)构建dubbo分布式平台-平台功能导图
  • (二十四)Flask之flask-session组件
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (一) springboot详细介绍
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (原)本想说脏话,奈何已放下
  • (转)http-server应用
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • .NET 5.0正式发布,有什么功能特性(翻译)
  • .NET Compact Framework 3.5 支持 WCF 的子集
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET Core 和 .NET Framework 中的 MEF2
  • .NET Core 通过 Ef Core 操作 Mysql
  • .NET Core实战项目之CMS 第十二章 开发篇-Dapper封装CURD及仓储代码生成器实现
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .NET Standard / dotnet-core / net472 —— .NET 究竟应该如何大小写?
  • .NET 中的轻量级线程安全
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • .NET/C# 推荐一个我设计的缓存类型(适合缓存反射等耗性能的操作,附用法)