Nacos&ES&Mybatis-plus

Nacos

Nacos 核心能力

  1. 两大核心功能:注册中心(服务注册发现)、配置中心(动态配置下发)
  2. 使用价值:不用修改代码重启服务即可更新配置;微服务自动感知上下线,负载均衡调用

注册中心

微服务启动时把自己的实例信息注册到 Nacos,服务之间调用时,从 Nacos 获取健康可用的服务节点,实现服务自动发现、负载均衡。

项目场景:短信推送服务、运营后台、定时任务全部注册,互相远程调用不用写死 IP 地址。

配置中心

统一存放项目所有配置,集中管理,支持在线修改配置。

项目场景:短信渠道地址、第三方接口超时时间、活动开关、限流阈值全部放在 Nacos 配置中心。

记忆技巧:配置热更新免重启,微服务自动感知实例状态

Nacos 动态配置刷新原理

底层核心机制:长轮询

流程分步拆解: ① 客户端启动后,持续向 Nacos 服务端发送请求; ② 服务端不会立刻返回响应,会阻塞这条连接; ③ 如果配置一直没改动,连接超时断开,客户端重新发起请求; ④ 一旦配置被修改,服务端马上唤醒阻塞的连接,把最新配置推送给客户端; ⑤ 客户端收到变更数据,触发配置刷新。

@RefreshScope 注解作用

只有打上这个注解的 Bean,配置更新后里面的属性才会自动刷新; 普通 Bean 只在项目启动时读取一次配置,后续改 Nacos 配置不会生效,必须重启服务

记忆技巧:长轮询监听变更,RefreshScope 实现热更新

Nacos 项目落地踩坑点

  1. 配置修改后不刷新 原因:缺少@RefreshScope注解;dataId、分组、命名空间和项目不匹配。
  2. 微服务调用报错 原因:服务未完成注册;实例心跳超时被 Nacos 剔除;服务分组未统一。
  3. 多环境配置互相覆盖 解决方案:使用 namespace 区分开发、测试、生产三套环境,隔离配置。

Nacos 注册中心基础流程

记忆技巧:注册 + 心跳保活 + 订阅缓存 + 故障剔除推送

  1. 服务启动阶段:微服务启动后,主动向 Nacos 服务端注册自身实例 IP、端口等信息。
  2. 心跳保活阶段:客户端定时发送心跳包,告诉 Nacos 当前服务正常运行。
  3. 服务订阅缓存:调用方服务会订阅目标服务,本地缓存所有健康实例,本地完成负载均衡。
  4. 故障剔除推送:实例长时间没心跳,Nacos 判定服务宕机,自动剔除该节点,并把变更推送所有订阅的客户端。

Elasticsearch ES

ES 适配海量日志检索

底层索引差异

  • MySQL:主流是正向索引,擅长事务、增删改查;面对海量数据做模糊查询、多条件检索,效率极低,全表扫描消耗大量资源。
  • ES:基于倒排索引,天然适配文本、日志类数据,支持分词、全文检索,海量数据下查询速度远快于 MySQL。

场景定位不同

  • MySQL:优先存储核心业务数据,强调数据一致性、事务能力。
  • ES:专为大数据检索、日志分析设计,不侧重强事务,主打快速检索、多维筛选。

业务落地(短信日志)

短信日志数据量大、以查询检索为主、很少修改删除,契合 ES 的使用场景;如果用 MySQL 检索海量日志,会出现查询慢、数据库压力大的问题。

MyBatis-Plus

MyBatis-Plus 分页 total 为 0

出现分页后总条数total始终为 0,核心原因 :项目中没有配置 MP 分页拦截器 MybatisPlusInterceptor。

  • MP 分页功能依赖该拦截器自动执行统计总记录数的 SQL;
  • 缺少拦截器时,只能实现分页截断,无法计算总数,最终total=0。
相关推荐
小毛驴8502 分钟前
mvn help:effective-settings 与 mvn help:effective-pom
java·linux·前端
silvamux_15 分钟前
OpenAI Python SDK v1 迁移实战
开发语言·python
silvamux_15 分钟前
MiniMax API 调用教程:兼容 OpenAI 写法
java·数据库·elasticsearch
旋生万物16 分钟前
螺旋数不是玄学:Python 实现广义复数与等角螺线
开发语言·人工智能·python·云原生·aigc·软件工程·后端开发
半杯咖啡半行码16 分钟前
Linux字符设备驱动实战:ioctl接口与GPIO操作指南
linux·开发语言
ZoeLandia17 分钟前
TypeScript 07:工程化——import type、声明文件与 tsconfig
开发语言·前端·typescript
染指111019 分钟前
145.Agent-LangGraph基础概念和安装和简单代码示例
java·服务器·数据库·langchain·agents
Doker 多克22 分钟前
ForkJoinPool 详解
java·多线程
小小程序猴127 分钟前
用工程视角建模企业AI培训周期:三段账本估算器(Python实现)
开发语言·人工智能·python
Wang's Blog33 分钟前
Java 项目实战: 交友项目 - Dubbo 启动检查
java·dubbo·交友