- 博客(53)
- 收藏
- 关注
原创 【SpringCloud从入门到架构师】第12章 全链路追踪SkyWalking
链路追踪不仅是技术工具,更是分布式系统的导航系统。从黑盒到白盒 :让复杂的微服务调用变得透明可视从被动到主动 :提前发现潜在问题,而非事后救火从局部到全局 :建立系统级的整体认知,而非单点优化真正的价值在于 :当系统出现问题时,你不再需要问“发生了什么”,而是可以直接问“为什么发生,如何解决”。这种从现象到本质的能力提升,是微服务架构可持续发展的关键保障。建议从OpenTelemetry标准开始,建立统一的观测体系,让链路追踪成为团队的基础设施,而非临时调试工具。// 手动埋点示例。
2026-05-20 08:00:00
586
原创 【SpringCloud从入门到架构师】第13章 服务监控与告警体系
Component时序数据库,专门存储监控指标拉取模式(Pull)收集数据支持服务发现内置告警规则引擎@Component.description("API请求耗时").description("API错误次数")try {throw e;});
2026-05-20 08:00:00
195
原创 【SpringCloud从入门到架构师】第11章 消息总线与异步解耦(SpringCloud Stream)
表格 还在加载中,请等待加载完成后再尝试复制核心链路口径 :关键路径使用同步(如支付验证)非关键操作 :通知、日志、统计等使用异步混合模式 :同步返回业务ID,异步处理后续流程逐步迁移 :从最易出问题的服务开始异步化改造消息持久化 :设置(RabbitMQ)或使用事务消息(RocketMQ)确认机制 :根据业务需求选择自动/手动确认错误处理 :配置死信队列和重试策略性能优化 :合理设置批量、并发和预取参数监控运维 :启用健康检查和指标收集。
2026-05-20 00:10:16
387
原创 【SpringCloud从入门到架构师】第10章 分布式事务解决方案Seata
表格 还在加载中,请等待加载完成后再尝试复制默认优先考虑最终一致性(BASE) :这是微服务架构下平衡复杂度、性能和一致性的最佳实践。可靠事件模式和SAGA是首选。能异步则异步 :多使用消息队列进行解耦,实现最终一致。设计幂等性 :在最终一致性方案中,消息可能重复投递,服务接口必须支持幂等。明确一致性边界 :仔细分析业务,哪些场景必须强一致(如支付密码验证),哪些可以最终一致(如库存扣减、积分增加)。非核心链路尽量异步化。
2026-05-19 22:29:20
395
原创 【SpringCloud从入门到架构师】第9章 服务容错高阶优化
Bean// 通过代码配置@Component@Override// 使用Redis实现滑动窗口限流if (current > 100) { // QPS限制。
2026-05-19 22:28:08
373
原创 【SpringCloud从入门到架构师】第8章 Sentinel熔断限流实战
限流 是预防措施,控制流量入口熔断 是保护措施,防止故障扩散降级 是补救措施,保证核心功能隔离 是基础措施,避免相互影响实际应用中需要根据业务特点选择合适的策略组合,并通过持续监控和调优来构建健壮的微服务系统。@Component@Override// 1. 流控规则// 2. 监听规则变化,同步到数据库@Override// 将规则保存到数据库@Override// 规则加载});// 实现数据库保存逻辑。
2026-05-19 22:26:30
492
原创 【SpringCloud从入门到架构师】第7章 Gateway网关核心实战(企业统一入口)
spring:cloud:gateway:routes:filters:args:filters:@Component@Data@Overridetry {// 角色验证= null) {if (!// 将用户信息添加到请求头.build();// 使用示例// args:路径匹配 :支持精确、通配符、正则表达式匹配权重路由 :用于A/B测试和流量分配灰度路由 :支持基于Header、用户ID、百分比的灰度发布。
2026-05-18 23:29:02
664
原创 【SpringCloud从入门到架构师】第6章 远程调用实战:OpenFeign极简通信
维度OPENFEIGN传统HTTP调用代码量减少60%以上冗余可读性接口即文档需要查看实现维护性修改接口即可需修改所有调用点测试可Mock接口需要模拟HTTP监控统一埋点分散实现扩展性拦截器链难以扩展Spring Cloud 微服务架构需要快速开发的HTTP客户端强类型安全要求的场景需要统一配置管理的多服务调用不适合文件上传等复杂场景(需特殊处理)性能略低于直接使用HTTP客户端(增加代理层开销)学习注解系统成本> clazz) {
2026-05-18 23:27:42
528
原创 【SpringCloud从入门到架构师】第5章 负载均衡核心:Ribbon + Nacos权重负载
Spring Cloud负载均衡 的核心是客户端负载均衡 ,它与服务发现 是孪生兄弟,共同实现了去中心化、高性能的微服务间通信。客户端负载均衡 更适合微服务内部的东西向流量 ,强调性能和去中心化。服务端负载均衡 更适合入口的南北向流量 或需要集中管控的场景,强调统一管理和功能丰富。
2026-05-17 20:27:33
244
原创 【SpringCloud从入门到架构师】第4章 Nacos配置中心实战(动态配置管理)
就近原则 :离应用越近的配置源优先级越高精确匹配 :Data ID越精确优先级越高动态覆盖 :运行时配置可覆盖静态配置监听机制 :长轮询为主,UDP推送为辅缓存策略 :客户端本地缓存提高可用性@Bean// 数据源配置动态刷新.url(url).build();Nacos 自动记录配置的变更历史,支持查看历史版本和快速回滚。将配置推送给特定实例进行测试,验证通过后再全量发布。-- Nacos 内置角色- ROLE_ADMIN: 超级管理员。
2026-05-17 20:25:28
288
原创 【SpringCloud从入门到架构师】第3章 Nacos注册中心实战(服务注册与发现)
开发环境 :单机模式 + 内置 Derby测试环境 :单机模式 + 外部 MySQL生产环境 :集群模式(至少3节点)+ 外部 MySQL + 负载均衡环境隔离 :使用不同的 Nacos 集群或命名空间命名空间 :按业务线或团队划分服务分组 :按功能模块或版本划分配置分离 :环境配置、应用配置、共享配置分开管理标签化治理 :通过元数据标签实现精细化路由这样的分层隔离策略可以确保各环境互不干扰,同时方便进行蓝绿发布、灰度发布等高级部署策略。
2026-05-17 20:22:36
355
原创 【SpringCloud从入门到架构师】第2章 微服务环境与工程搭建
生产环境 : 使用 Spring Boot 2.7.x + SpringCloud Alibaba 2021.0.x (稳定)新项目 : 使用 Spring Boot 3.2.x + SpringCloud Alibaba 2023.0.x (前瞻)升级策略 : 小版本逐步升级,充分测试版本锁定 : 使用 dependencyManagement 精确控制版本监控 : 升级后密切监控应用性能和稳定性。
2026-05-17 14:34:23
687
原创 【SpringCloud从入门到架构师】第1章 SpringBoot高阶夯实(微服务前置必备)
创建自动配置类:@Bean@Bean配置属性类:注册到 spring.factories:@EnableAutoConfiguration 通过启用spring.factories 作为 SPI 扩展点,定义自动配置类@Conditional 系列注解实现条件化配置SpringFactoriesLoader 提供增强的 SPI 实现开箱即用 :默认配置满足大部分场景按需加载 :条件注解控制配置生效易于扩展 :SPI 机制支持第三方集成。
2026-05-17 00:41:11
293
原创 【SpringBoot 从入门到架构师】第20章:SpringBoot核心源码解析
├─ 创建 BootstrapContext├─ 发布 ApplicationStartingEvent├─ 准备 Environment(加载配置)├─ 发布 ApplicationEnvironmentPreparedEvent├─ 创建 ApplicationContext├─ 准备 Context(加载 Bean 定义)├─ 发布 ApplicationPreparedEvent├─ refreshContext() // Spring 容器核心初始化。
2026-05-16 19:08:33
547
1
原创 【SpringBoot 从入门到架构师】第19章:SpringBoot监控与运维
/ 实现健康检查逻辑@Service// 创建计数器// 创建计时器// 处理订单逻辑try {});@Component统一的 Web UI 管理界面实时监控应用状态详细的健康检查日志查看和管理JMX beans 管理线程和内存监控环境属性查看@Component@Override。
2026-05-16 19:07:24
452
原创 【SpringBoot 从入门到架构师】第18章:Elasticsearch全文检索整合
Setting(shards = 3, replicas = 2) // 分片和副本设置@Id// 嵌套类型// 嵌套对象@Data@Id@Data@Autowired@Override// 动态构建查询条件= null &&!= null) {= null) {= null) {// 添加排序.build();
2026-05-16 19:06:12
429
原创 【SpringBoot 从入门到架构师】第17章:消息队列RabbitMQ整合
这个配置提供了完整的RabbitMQ集成方案,包括多种交换机类型、消息确认机制、延迟队列、死信队列等高级功能。RabbitMQ 提供了多种消息模型,以下是五种核心模型的 Java 实现示例。这样你就有了一个完整的RabbitMQ环境,可以开始进行消息队列的开发了!一个生产者发送消息到交换机,交换机将消息广播到所有绑定的队列。接收生产者发送的消息,并根据路由规则将消息分发到队列。最简单的模型,一个生产者对应一个消费者。一个生产者,多个消费者,消息被轮询分发。基于模式匹配的路由,使用通配符。
2026-05-15 23:18:22
463
原创 【SpringBoot 从入门到架构师】第16章:常用工具功能实战
Hutool和Guava是两个非常实用的Java工具库,它们提供了大量简化开发、提高效率的工具类。在Spring Boot项目中整合这两个工具库可以显著提升开发效率。@Component@Autowired/*** 结合Hutool和Guava的字符串工具*/// 使用Hutool格式化// 使用Guava处理空值/*** 带缓存的HTTP请求*/try {// 缓存未命中时执行HTTP请求});
2026-05-15 20:32:17
609
2
原创 【SpringBoot 从入门到架构师】第15章:异步调用与定时任务
Override// 核心线程数// 最大线程数// 队列容量// 线程名前缀// 线程空闲时间// 拒绝策略@Override启用异步 :使用配置线程池 :推荐自定义线程池参数标记方法 :在需要异步执行的方法上添加@Async异常处理 :实现注意事项 :避免同类内部调用,方法必须是 public耗时操作(IO、网络请求)不需要立即返回结果的操作批量数据处理发送通知、日志记录等后台任务// 核心配置参数// 核心线程数// 最大线程数。
2026-05-15 19:45:50
482
原创 【SpringBoot 从入门到架构师】第13章:Redis缓存整合与实战
Override@Override// 配置使用@Bean// 使用FastJson序列化@Bean.build();@Bean// 配置序列化// 启用事务支持// 设置是否暴露连接Key一定要用String序列化 :保证可读性和性能Value根据场景选择 :简单值:StringRedisSerializer。
2026-05-14 21:44:58
568
1
原创 【SpringBoot 从入门到架构师】第12章:事务管理与多数据源配置
事务原理 :基于AOP和动态代理实现声明式事务管理@Transactional :通过注解配置事务属性,简化事务管理传播行为 :控制事务边界和嵌套关系隔离级别 :解决并发事务问题回滚规则 :灵活控制异常处理逻辑注意事项 :避免事务失效场景,遵循最佳实践掌握这些原理和配置,可以更有效地使用Spring事务管理,确保数据一致性和系统稳定性。动态数据源切换允许应用在运行时根据条件切换不同的数据库连接,常用于多租户、读写分离、分库分表等场景。
2026-05-13 23:51:12
408
原创 【SpringBoot 从入门到架构师】第11章:SpringBoot整合MyBatis-Plus(企业主流)
Component@Override// 添加批量插入方法// 查询总记录数// 执行查询@Component@Override// 自定义ID生成逻辑@Override// 自定义UUID生成逻辑@Component@Override// 获取当前用户(从ThreadLocal或Request中)// 使用setFieldValByName方法(兼容性更好)@Override/**
2026-05-13 23:16:30
458
原创 【SpringBoot 从入门到架构师】第10章:SpringBoot整合MyBatis
选择策略 :简单CRUD:使用注解开发复杂SQL/动态SQL:使用XML混合使用:简单方法用注解,复杂方法用XML性能优化 :批量操作使用foreach合理使用一级/二级缓存避免N+1查询问题维护建议 :SQL统一管理,便于DBA审核使用<sql>片段避免重复参数使用@Param明确指定名称安全注意 :使用#{}防止SQL注入动态排序使用${}时要过滤参数敏感数据脱敏处理@Override// 自定义日志格式@Override。
2026-05-13 22:40:25
552
原创 【SpringBoot 从入门到架构师】第9章:Web原生组件与文件上传下载
在 Spring Boot 中,虽然推荐使用 Spring MVC 的 和 Servlet :处理 HTTP 请求Filter :拦截请求和响应Listener :监听 Web 应用事件String message() default "无效的文件";Class<?Class<?// 允许的文件类型// 最大文件大小(字节)// 10MB@Override@Override// 检查文件类型if (!// 检查文件大小。
2026-05-13 00:05:20
186
原创 【SpringBoot 从入门到架构师】第8章:全局异常处理与参数校验
使用 统一异常处理 :所有异常通过统一的方式处理,返回格式一致的响应异常分类 :根据异常类型返回合适的 HTTP 状态码错误信息友好 :生产环境隐藏敏感信息,开发环境提供详细错误日志记录 :记录异常信息便于排查问题国际化支持 :根据客户端语言返回对应的错误信息参数校验 :统一处理参数校验异常,提供清晰的错误信息业务异常分离 :业务异常和系统异常分开处理这样设计的全局异常处理器能够提高代码的可维护性,提供更好的用户体验,并方便问题排查。
2026-05-12 23:29:57
259
原创 【SpringBoot 从入门到架构师】第7章:拦截器、过滤器、跨域处理
Component@Override// 初始化逻辑@Override// 请求处理前逻辑// 执行下一个过滤器或目标资源// 响应处理后逻辑@Override// 销毁逻辑全局性处理 :认证、日志、跨域等性能监控 :请求耗时统计数据预处理 :请求/响应数据包装安全控制 :XSS 防护、SQL 注入防护合理使用过滤器可以提升代码的复用性和可维护性,但要注意避免在过滤器中实现复杂的业务逻辑,保持职责单一。
2026-05-12 23:06:33
276
原创 【SpringBoot 从入门到架构师】第6章:Web请求与响应处理
注解用途示例通用请求映射GET请求映射POST请求映射PUT请求映射DELETE请求映射PATCH请求映射获取路径变量获取查询参数获取请求体获取请求头这些配置方式可以帮助你构建符合RESTful风格的API,并充分利用Spring Boot的强大功能。// 自定义注解// 自定义解析器@Component@Override@Override// 从Session或Token中获取当前用户// 使用自定义解析器。
2026-05-12 22:43:11
337
原创 【SpringBoot 从入门到架构师】第5章:SpringBoot自动装配原理(核心重点)
│ ├── MyService.java # 业务接口│ ├── MyServiceImpl.java # 默认实现│ └── MyAutoConfiguration.java # 自动配置类│ ├── spring.factories # SPI 配置│ └── spring-configuration-metadata.json # 配置元数据启动阶段 触发自动装配 组合了配置加载 扫描所有加载对应的配置类列表条件过滤通过注解过滤不满足条件的配置类执行。
2026-05-12 08:03:33
516
原创 【SpringBoot 从入门到架构师】第4章:SpringBoot配置文件全解
Properties 胜在简单、快速、兼容性好YAML 胜在可读性、结构化、表达能力配置的复杂度团队熟悉度框架支持情况性能要求在现代Java生态中,特别是Spring Boot项目,YAML已经成为主流选择,但Properties仍然在简单场景和资源文件中占有一席之地。配置文件优先级 :命令行参数 > 环境变量 > 配置文件环境激活 :优先使用外部方式(命令行、环境变量)敏感信息 :永远不要提交到代码仓库配置分离 :不同环境配置完全分离验证配置 :启动时验证必要配置项。
2026-05-12 00:38:31
477
原创 【SpringBoot 从入门到架构师】第3章:SpringBoot核心注解详解
/ 条件:当类路径存在 MyService 时// 条件:当容器中不存在 MyService Bean 时// 启用配置属性绑定// 在 WebMvcAutoConfiguration 之后加载@Bean@Bean// 配置属性类// 方法1:通过注解排除})// 方法2:通过配置属性排除@Indexed// Bean 名称(可选)@Component // ← 继承 @Component// 继承自 @Component 的 value 属性。
2026-05-11 07:31:11
652
原创 【SpringBoot 从入门到架构师】第2章:SpringBoot项目快速创建与运行
这就是一个完整的Spring Boot Hello World项目!你可以在此基础上继续添加更多功能。内嵌Tomcat/Jetty。内嵌Tomcat/Jetty。java -jar直接运行。java -jar直接运行。放入webapps目录。需要外部Tomcat。
2026-05-10 22:37:00
378
原创 【SpringBoot 从入门到架构师】第1章:SpringBoot初识与开发环境准备
Spring 是基础框架 ,提供了核心的容器和编程模型Spring MVC 是 Spring 的Web扩展 ,专门处理HTTP请求和响应Spring Boot 是加速器 ,通过默认配置和约定简化Spring应用开发现代开发模式 :通常使用 Spring Boot + Spring MVC + Spring 的组合,其中 Spring Boot 作为入口和配置中心,Spring MVC 处理 Web 层,Spring Framework 提供核心功能。
2026-05-10 16:09:01
519
原创 一文搞懂 Java 并发编程【附示例代码】
AQS(AbstractQueuedSynchronizer) 是 Java 并发包中构建锁和同步器的核心框架,、、 等都是基于它实现的。理解 AQS 的用法对于深入掌握 Java 并发编程至关重要。一、AQS 核心思想AQS 内部维护了一个 volatile int state(同步状态) 和一个 FIFO 线程等待队列。通过原子操作 state 和队列管理,实现了同步机制。二、AQS 的使用方式继承 AQS 并实现模板方法。
2026-05-08 23:38:16
604
2
原创 Java创建线程的 6 种常用方式
Callable 与 Runnable 类似,但有返回值,并且可以抛出异常。通过 Executor 框架创建线程池,这是企业级应用中最推荐的方式。更常用的方式,实现 Runnable 接口,将任务逻辑与线程分离。这是最基本的方式,通过继承 Thread 类并重写 。Java 8 引入的异步编程方式,功能更强大。用于定时任务,但功能有限,不推荐用于复杂场景。不能继承其他类,任务与线程耦合。解耦任务与线程,可继承其他类。异步编程,链式调用,功能强大。资源复用,性能好,管理方便。有返回值,可抛出异常。
2026-05-08 23:24:17
168
原创 一次搞懂各种锁:显式锁&隐式锁 悲观锁&乐观锁 公平锁&非公平锁 可中断锁&不可中断锁 共享锁&独占锁
考虑因素选择悲观锁选择乐观锁冲突频率高 (>30%)低 (<30%)数据一致性要求强一致性最终一致性可接受读/写比例写多读少读多写少重试成本重试成本高重试成本低系统响应时间要求一般要求高响应。
2026-05-08 22:05:40
646
原创 CompletableFuture 核心功能使用场景详解
这些示例展示了 CompletableFuture 的核心功能,可以根据具体需求组合使用。默认线程池(ForkJoinPool)
2026-05-07 20:59:29
22
原创 CountDownLatch、CyclicBarrier、Semaphore 的区别详解
重置计数,抛出BrokenBarrierException。一次性使用,计数到0后失效。递减(countDown)多个线程互相等待到达屏障。等待多个线程完成任务。可循环使用,自动重置。
2026-05-07 20:57:41
309
原创 Java中的JUC容器类详解
2. 写入:复制原数组 → 修改新数组 → 替换引用。1. 读取:直接读取当前数组(无锁)有界、FIFO、公平/非公平锁。3. 删除:同样需要复制新数组。高并发生产者-消费者。有界/无界、线程安全。
2026-05-07 20:56:55
215
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅