常见面试题16

简介: MyBatis提供一级缓存(SqlSession级)和二级缓存(Mapper级),提升查询效率。Eureka通过注册、续约、发现、下线实现服务治理,Nacos在功能与性能上更优,支持配置管理与实时推送。Spring Cloud LoadBalancer取代Ribbon,提供轮询、随机等负载策略。Hystrix与Sentinel均支持熔断限流,但Sentinel在流量控制和实时性上更强。

缓存机制

MyBatis 提供了两级缓存(Local Cache 和 Second Level Cache)来满足不同的需求。

1、Local Cache(本地缓存、一级缓存)

  • Local Cache 是指在 SqlSession 范围内的缓存,它默认开启并且无法关闭。
  • 在同一个 SqlSession 中,当执行相同的查询语句(包括参数相同)时,如果之前已经查询过相同的结果,那么会直接从本地缓存中获取数据,而不会再发送 SQL 查询到数据库。
  • Local Cache 是基于 HashMap 实现的,它仅在当前 SqlSession 中有效,并且对于不同的 SqlSession 是隔离的。

2、Second Level Cache(二级缓存)

  • Second Level Cache 是指在 Mapper 范围内的缓存,它可以跨 SqlSession 共享数据。
  • 如果开发者需要使用 Second Level Cache,需要在映射文件中进行配置。
  • 当开启了 Second Level Cache 后,同一个 namespace 下的查询结果会被缓存起来,其他 SqlSession 也可以共享这部分数据,从而减少数据库查询次数。
  • Second Level Cache 默认是关闭的,需要手动在映射文件中配置开启。

Eureka服务注册流程

  1. 服务提供者注册
  • 服务提供者启动时,会向 Eureka 服务器发送注册请求,包括自身的实例信息(如 IP 地址、端口、服务名称等)。
  • Eureka 服务器接收到注册请求后,将服务提供者的实例信息注册到服务注册表中。
  1. 服务续约
  • 服务提供者会定时向 Eureka 服务器发送心跳续约请求,以确认自身仍然存活。
  • 如果 Eureka 服务器在一定时间内没有收到服务提供者的续约请求,将会将该实例从服务注册表中剔除。
  1. 服务发现
  • 服务消费者在需要调用服务提供者时,会向 Eureka 服务器发送服务发现请求,获取可用的服务实例列表。
  • Eureka 服务器会返回可用的服务实例信息给服务消费者,服务消费者根据负载均衡策略选择合适的实例进行调用。
  1. 服务下线
  • 当服务提供者需要下线时,会向 Eureka 服务器发送取消注册请求。
  • Eureka 服务器收到取消注册请求后,将该服务实例从服务注册表中移除,不再向其他服务消费者返回该实例信息。

Nacos与Eureka的区别

Eureka和Nacos的相似点有:

  • 都支持服务注册发现功能
  • 都有基于心跳的健康监测功能
  • 都支持集群,集群间数据同步默认是AP模式,即最全高可用性

Eureka和Nacos的区别有:

  • Eureka的心跳是30秒一次,Nacos则是5秒一次
  • Eureka如果90秒未收到心跳,则认为服务疑似故障,可能被剔除。Nacos中则是15秒超时,30秒剔除。
  • Eureka每隔60秒执行一次服务检测和清理任务;Nacos是每隔5秒执行一次。
  • Eureka只能等微服务自己每隔30秒更新一次服务列表;Nacos即有定时更新,也有在服务变更时的广播推送
  • Eureka仅有注册中心功能,而Nacos同时支持注册中心、配置管理
  • Eureka和Nacos都支持集群,而且默认都是AP模式

常见的Ribbon/Spring LoadBalancer的负载均衡策略

自SpringCloud2020版本开始,已经弃用Ribbon,改用Spring自己开源的Spring Cloud LoadBalancer了。

Ribbon 负载均衡策略:

  1. RoundRobinRule(轮询策略):按照顺序依次选择可用的服务实例,逐个进行调用。
  2. RandomRule(随机策略):随机选择一个可用的服务实例进行调用。
  3. WeightedResponseTimeRule(加权响应时间策略):根据服务实例的响应时间和权重来动态计算一个权重值,从而决定调用哪个服务实例。
  4. RetryRule(重试策略):在一定的重试次数内,尝试多次调用不同的服务实例,直到找到一个可用的实例。

Spring Cloud LoadBalancer 负载均衡策略:

Spring Cloud LoadBalancer 是基于 Reactor 实现的负载均衡组件,它提供了以下常用的负载均衡策略:

  1. RoundRobinLoadBalancer:轮询策略,按照顺序依次选择可用的服务实例进行调用。
  2. RandomLoadBalancer:随机策略,随机选择一个可用的服务实例进行调用。
  3. NacosLoadBalancer:根据服务的集群名和权重来动态计算选择服务实例。

Hystrix和Sentinel有什么异同

Hystrix 和 Sentinel 都是流行的服务容错和限流组件,用于提高微服务架构的稳定性和可靠性。

相同点

  • 服务保护:Hystrix 和 Sentinel 都可以实现服务熔断、限流等功能,保护系统在面对异常情况下的稳定性。
  • 监控:两者都提供了监控和统计功能,可以帮助开发人员实时了解服务的运行状况。

区别

  • 实现方式:Hystrix 主要基于线程池和信号量来实现服务隔离和容错。Sentinel 则基于"流量控制、熔断降级、系统负载保护"来实现服务保护和限流。
  • 功能特点:Hystrix 主要提供服务熔断、线程隔离、超时控制等功能。
目录
相关文章
|
1月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
137 6
|
1月前
|
安全 开发工具 git
git添加远程仓库报错To add an exception for this directory解决方案-优雅草卓伊凡
git添加远程仓库报错To add an exception for this directory解决方案-优雅草卓伊凡
181 5
git添加远程仓库报错To add an exception for this directory解决方案-优雅草卓伊凡
|
1月前
|
JSON API 数据安全/隐私保护
Python采集淘宝拍立淘按图搜索API接口及JSON数据返回全流程指南
通过以上流程,可实现淘宝拍立淘按图搜索的完整调用链路,并获取结构化的JSON商品数据,支撑电商比价、智能推荐等业务场景。
|
关系型数据库 数据库 PostgreSQL
mac电脑上docker中安装postgresql
前言: docker真是一个好东西,是码农开发调试的神器,以前还要自己配置开发、测试环境,安装过程繁琐,容易出错,耗时很多,用docker基本能够在5分钟搞定,而且一次配置,每个环境都能够无差别部署,省时省力。
4724 0
|
1月前
|
虚拟化 iOS开发 MacOS
VMware ESXi 9.0 macOS Unlocker & OEM BIOS 2.7 AQC 网卡特殊定制版
VMware ESXi 9.0 macOS Unlocker & OEM BIOS 2.7 AQC 网卡特殊定制版
125 5
|
1月前
|
缓存 运维 监控
vLLM推理加速指南:7个技巧让QPS提升30-60%
GPU资源有限,提升推理效率需多管齐下。本文分享vLLM实战调优七招:请求塑形、KV缓存复用、推测解码、量化、并行策略、准入控制与预热监控。结合代码与数据,助你最大化吞吐、降低延迟,实现高QPS稳定服务。
403 7
vLLM推理加速指南:7个技巧让QPS提升30-60%
|
1月前
|
人工智能 JSON 监控
三步构建AI评估体系:从解决“幻觉”到实现高效监控
AI时代,评估成关键技能。通过错误分析、归类量化与自动化监控,系统化改进AI应用,应对幻觉等问题。Anthropic与OpenAI均强调:评估是产品迭代的核心,数据驱动优于直觉,让AI真正服务于目标。
|
1月前
|
存储 JSON 前端开发
《SaaS应用核心痛点攻坚:租户级动态配置管理的技术实践与落地》
本文针对SaaS应用租户自定义配置混乱痛点,分享动态配置管理实践:摒弃早期硬编码+通用字段方案,以元数据驱动设计配置模型,含预设行业模板与字段关联逻辑简化配置;构建“租户-角色-配置权限”三维模型,细化权限维度并记录操作日志;采用“基础表+动态分表”存储方案,按业务模块与租户哈希分表提升查询性能;开发前端动态渲染框架,依元数据自动生成组件;引入配置版本管理与灰度生效机制,通过版本兼容与回滚保障更新稳定,为租户个性化配置提供系统化解决方案。
|
微服务 设计模式 测试技术
深入理解 DDD(领域驱动设计)思想
领域驱动设计(DDD)是一种以业务为核心的软件开发方法,通过限界上下文、聚合、实体、值对象等模型,分离业务与技术复杂性,提升系统可维护性与扩展性,尤其适用于复杂业务系统的架构设计。
611 0
|
1月前
|
人工智能 监控 数据可视化
智慧工地一体化信息管理平台源码
智慧工地一体化平台融合大数据、AI、物联网等技术,构建覆盖人、机、料、法、环的数字化管理体系,实现施工全过程可视化、智能化管理,提升效率,推动建筑产业信息化升级。
259 4