冰河技术
导读
♻学习路线
  • 面试必问系列

    • 面试必问
  • 架构与模式

    • Java极简设计模式
    • 实战高并发设计模式
  • Java核心技术

    • Java8新特性
    • IOC核心技术
    • JVM调优技术
  • 容器化核心技术

    • Dockek核心技术
  • 分布式存储

    • Mycat核心技术
  • 数据库核心技术

    • MySQL基础篇
  • 服务器核心技术

    • Nginx核心技术
  • 渗透核心技术

    • 渗透实战技术
  • 底层技术
  • 源码分析
  • 基础案例
  • 实战案例
  • 面试
  • 系统架构
  • Spring6核心技术
  • 分布式事务

    • 分布式事务系列视频
  • SpringBoot
  • SpringCloudAlibaba
  • 🔥AI大模型项目

    • 一站式AI智能平台
    • AI智能客服系统
    • AI智能问答系统
    • 实战AI大模型
  • 中间件项目

    • 手写高性能Redis组件
    • 手写高性能脱敏组件
    • 手写线程池项目
    • 手写高性能SQL引擎
    • 手写高性能Polaris网关
    • 手写高性能RPC项目
  • 高并发项目

    • 分布式IM即时通讯系统(新)
    • 分布式Seckill秒杀系统
    • 实战高并发设计模式
  • 微服务项目

    • 简易电商脚手架项目
  • 手撕源码

    • 手撕Spring6源码
🌍知识星球
  • 总览

    • 《书籍汇总》
  • 出版图书

    • 《深入理解高并发编程:核心原理与案例实战》
    • 《深入理解高并发编程:JDK核心技术》
    • 《深入高平行開發:深度原理&專案實戰》
    • 《深入理解分布式事务:原理与实战》
    • 《MySQL技术大全:开发、优化与运维实战》
    • 《海量数据处理与大数据技术实战》
  • 电子书籍

    • 《实战高并发设计模式》
    • 《深入理解高并发编程(第2版)》
    • 《深入理解高并发编程(第1版)》
    • 《从零开始手写RPC框架(基础篇)》
    • 《SpringCloud Alibaba实战》
    • 《冰河的渗透实战笔记》
    • 《MySQL核心知识手册》
    • 《Spring IOC核心技术》
  • 关于自己
  • 关于学习
  • 关于职场
B站
Github
导读
♻学习路线
  • 面试必问系列

    • 面试必问
  • 架构与模式

    • Java极简设计模式
    • 实战高并发设计模式
  • Java核心技术

    • Java8新特性
    • IOC核心技术
    • JVM调优技术
  • 容器化核心技术

    • Dockek核心技术
  • 分布式存储

    • Mycat核心技术
  • 数据库核心技术

    • MySQL基础篇
  • 服务器核心技术

    • Nginx核心技术
  • 渗透核心技术

    • 渗透实战技术
  • 底层技术
  • 源码分析
  • 基础案例
  • 实战案例
  • 面试
  • 系统架构
  • Spring6核心技术
  • 分布式事务

    • 分布式事务系列视频
  • SpringBoot
  • SpringCloudAlibaba
  • 🔥AI大模型项目

    • 一站式AI智能平台
    • AI智能客服系统
    • AI智能问答系统
    • 实战AI大模型
  • 中间件项目

    • 手写高性能Redis组件
    • 手写高性能脱敏组件
    • 手写线程池项目
    • 手写高性能SQL引擎
    • 手写高性能Polaris网关
    • 手写高性能RPC项目
  • 高并发项目

    • 分布式IM即时通讯系统(新)
    • 分布式Seckill秒杀系统
    • 实战高并发设计模式
  • 微服务项目

    • 简易电商脚手架项目
  • 手撕源码

    • 手撕Spring6源码
🌍知识星球
  • 总览

    • 《书籍汇总》
  • 出版图书

    • 《深入理解高并发编程:核心原理与案例实战》
    • 《深入理解高并发编程:JDK核心技术》
    • 《深入高平行開發:深度原理&專案實戰》
    • 《深入理解分布式事务:原理与实战》
    • 《MySQL技术大全:开发、优化与运维实战》
    • 《海量数据处理与大数据技术实战》
  • 电子书籍

    • 《实战高并发设计模式》
    • 《深入理解高并发编程(第2版)》
    • 《深入理解高并发编程(第1版)》
    • 《从零开始手写RPC框架(基础篇)》
    • 《SpringCloud Alibaba实战》
    • 《冰河的渗透实战笔记》
    • 《MySQL核心知识手册》
    • 《Spring IOC核心技术》
  • 关于自己
  • 关于学习
  • 关于职场
B站
Github
  • RPC框架介绍

    • 【置顶】这次我设计了一款TPS百万级别的分布式、高性能、可扩展的RPC框架
  • 第一篇:整体设计

    • 第01章:开篇,从零开始手撸一个能在实际场景使用的高性能RPC框架
    • 第02章:高性能分布式RPC框架整体架构设计
    • 第03章:RPC服务核心注解的设计与实现
    • 第04章:实现RPC服务核心注解的扫描与解析
  • 第二篇:服务提供者

    • 第05章:服务提供者收发消息基础功能实现
    • 第06章:自定义网络传输协议的实现
    • 第07章:自定义网络编解码的实现
    • 第08章:模拟服务消费者与服务提供者之间的数据交互
    • 第09章:服务提供者调用真实方法的实现
    • 第10章:测试服务提供者调用真实方法
    • 第11章:服务提供者扩展支持CGLib调用真实方法
  • 第三篇:服务消费者

    • 第12章:实现服务消费者与服务提供者直接通信
    • 第13章:服务消费者异步转同步直接获取返回结果
    • 第14章:服务消费者异步转同步的自定义Future与AQS实现
    • 第15章:服务消费者同步、异步、单向调用的实现
    • 第16章:服务消费者回调方法的实现
    • 第17章:服务消费者实现动态代理功能屏蔽构建请求协议对象的细节
    • 第18章:服务消费者整合动态代理实现直接调用接口返回结果数据
    • 第19章:服务消费者动态代理实现异步调用
    • 第20章:服务消费者动态代理扩展优化
  • 第四篇:注册中心

    • 第21章:注册中心基础服务功能的实现
    • 第22章:服务提供者整合注册中心实现服务注册
    • 第23章:服务消费者整合注册中心实现服务发现
  • 第五篇:负载均衡

    • 第24章:服务消费者实现基于随机算法的负载均衡策略
  • 第六篇:SPI扩展序列化机制

    • 第25章:对标Dubbo实现SPI扩展机制的基础功能
    • 第26章:基于SPI扩展JDK序列化与反序列化机制
    • 第27章:基于SPI扩展Json序列化与反序列化机制
    • 第28章:基于SPI扩展Hessian2序列化与反序列化机制
    • 第29章:基于SPI扩展FST序列化与反序列化机制
    • 第30章:基于SPI扩展Kryo序列化与反序列化机制
    • 第31章:基于SPI扩展Protostuff序列化与反序列化机制
  • 第七篇:SPI扩展动态代理机制

    • 第32章:基于SPI扩展JDK动态代理机制
    • 第33章:基于SPI扩展CGLib动态代理机制
    • 第34章:基于SPI扩展Javassist动态代理机制
    • 第35章:基于SPI扩展ByteBuddy动态代理机制
    • 第36章:基于SPI扩展ASM动态代理机制
  • 第八篇:SPI扩展反射机制

    • 第37章:基于SPI扩展JDK反射机制调用真实方法
    • 第38章:基于SPI扩展CGLib反射机制调用真实方法
    • 第39章:基于SPI扩展Javassist反射机制调用真实方法
    • 第40章:基于SPI扩展ByteBuddy反射机制调用真实方法
    • 第41章:基于SPI扩展ASM反射机制调用真实方法
  • 第九篇:SPI扩展负载均衡策略

    • 第42章:基于SPI扩展随机算法负载均衡策略
    • 第43章:基于SPI扩展加权随机算法负载均衡策略
    • 第44章:基于SPI扩展轮询算法负载均衡策略
    • 第45章:基于SPI扩展加权轮询算法负载均衡策略
    • 第46章:基于SPI扩展Hash算法负载均衡策略
    • 第47章:基于SPI扩展加权Hash算法负载均衡策略
    • 第48章:基于SPI扩展源IP地址Hash算法负载均衡策略
    • 第49章:基于SPI扩展源IP地址加权Hash算法负载均衡策略
    • 第50章:基于SPI扩展Zookeeper的一致性Hash算法负载均衡策略
  • 第十篇:SPI扩展增强型负载均衡策略

    • 第51章:基于SPI扩展增强型加权随机算法负载均衡策略
    • 第52章:基于SPI扩展增强型加权轮询算法负载均衡策略
    • 第53章:基于SPI扩展增强型加权Hash算法负载均衡策略
    • 第54章:基于SPI扩展增强型加权源IP地址Hash算法负载均衡策略
    • 第55章:基于SPI扩展增强型Zookeeper一致性Hash算法负载均衡策略
    • 第56章:基于SPI扩展最少连接数负载均衡策略
  • 第十一篇:SPI扩展实现注册中心

    • 第57章:基于SPI扩展实现Zookeeper注册中心
    • 第57-X章:注册中心阶段性作业
  • 第十二篇:心跳机制

    • 第58章:心跳机制交互数据模型设计
    • 第59章:心跳机制增强数据模型与协议解析设计
    • 第60章:服务消费者向服务提供者发送心跳信息并接收心跳响应
    • 第61章:服务消费者心跳间隔时间配置化
    • 第62章:服务提供者向服务消费者发送心跳消息并接收心跳响应
    • 第63章:服务提供者心跳间隔时间配置化
    • 第63-X章:心跳机制阶段性作业
  • 第十三篇:增强型心跳机制

    • 第64章:服务提供者增强型心跳检测机制
    • 第65章:服务消费者增强型心跳检测机制
  • 第十四篇:重试机制

    • 第66章:服务消费者实现服务订阅的重试机制
    • 第67章:服务消费者连接服务提供者的重试机制
  • 第十五篇:整合Spring

    • 第68章:服务提供者整合Spring
    • 第69章:基于Spring XML接入服务提供者
    • 第70章:基于Spring注解接入服务提供者
    • 第71章:服务消费者整合Spring
    • 第72章:基于Spring XML接入服务消费者
    • 第73章:基于Spring注解接入服务消费者
    • 第73章-X:整合Spring阶段作业
  • 第十六篇:整合SpringBoot

    • 第74章:服务提供者整合SpringBoot
    • 第75章:基于SpringBoot接入服务提供者
    • 第76章:服务消费者整合SpringBoot
    • 第77章:基于SpringBoot接入服务消费者
    • 第77章-X:整合SpringBoot阶段作业
  • 第十七篇:整合Docker

    • 第78章:基于Docker接入服务提供者
    • 第79章:基于Docker接入服务消费者
    • 第79章-X:整合Docker阶段作业
  • 第十八篇:整合SpringCloud Alibaba

    • 第80章:整合SpringCloud Alibaba实际项目
    • 第80章-X:整合SpringCloud Alibaba阶段作业
  • 第十九篇:结果缓存

    • 第81章:结果缓存通用模型设计
    • 第82章:服务提供者支持结果缓存
    • 第83章:服务消费者支持结果缓存
    • 第83章-X:结果缓存阶段作业
  • 第二十篇:路由控制

    • 第84章:服务消费者直连某个服务提供者
    • 第85章:服务消费者直连多个服务提供者
    • 第85章-X:路由控制阶段作业
  • 第二十一篇:延迟连接

    • 第86章:服务消费者支持延迟连接服务提供者
    • 第87章:服务消费者支持非延迟连接服务提供者
    • 第87章-X:延迟连接阶段作业
  • 第二十二篇:并发控制

    • 第88章:并发控制基础模型设计
    • 第89章:服务提供者支持并发控制
    • 第90章:服务消费者支持并发控制
    • 第90章-X:并发控制阶段作业
  • 第二十三篇:流控分析

    • 第91章:流控分析后置处理器模型设计
    • 第92章:服务提供者整合流控分析
    • 第93章:服务消费者整合流控分析
    • 第93章-X:流控分析阶段作业
  • 第二十四篇:连接控制

    • 第94章:连接控制基础模型设计
    • 第95章:服务提供者整合连接控制
    • 第95章-X:连接控制阶段作业
  • 第二十五篇:SPI扩展连接淘汰策略

    • 第96章:基于SPI扩展最早连接淘汰策略
    • 第97章:基于SPI扩展最晚连接淘汰策略
    • 第98章:基于SPI扩展先进先出连接淘汰策略
    • 第99章:基于SPI扩展使用次数最少连接淘汰策略
    • 第100章:基于SPI扩展最近未被使用连接淘汰策略
    • 第101章:基于SPI扩展随机连接淘汰策略
    • 第102章:基于SPI扩展拒绝连接淘汰策略
    • 第102章-X:SPI扩展连接拒绝策略阶段作业
  • 第二十六篇:数据缓冲

    • 第103章:数据缓冲基础模型设计
    • 第104章:服务提供者整合数据缓冲
    • 第105章:服务消费者整合数据缓冲
    • 第105章-X:数据缓冲阶段作业
  • 第二十七篇:服务容错(降级)

    • 第106章:服务容错设计与研发
    • 第107章:服务容错效果测试
    • 第108章:服务容错失效问题修复
    • 第108章-X:服务容错阶段作业
  • 第二十八篇:服务限流

    • 第109章:服务限流基础模型设计
    • 第110章:服务提供者整合服务限流
    • 第111章:服务消费者整合服务限流
    • 第111章-X:服务限流阶段作业
  • 第二十九篇:基于SPI扩展限流策略

    • 第112章:基于SPI扩展Semaphore限流策略
    • 第113章:基于SPI扩展Guava限流策略
    • 第113章-X:基于SPI扩展限流策略阶段作业
  • 第三十篇:超出限流规则

    • 第114章:服务提供者超出限流上限触发的规则
    • 第115章:服务消费者超出限流上限触发的规则
    • 第115章-X:超出限流规则阶段作业
  • 第三十一篇:服务熔断

    • 第116章:服务熔断基础模型设计
    • 第117章:服务提供者整合服务熔断
    • 第118章:服务消费者整合服务熔断
    • 第118章-X:服务熔断阶段作业
  • 第三十二篇:基于SPI扩展熔断策略

    • 第119章:基于SPI扩展错误率熔断策略
    • 第119章-X:基于SPI扩展熔断策略阶段作业
  • 第三十三篇:异常监控

    • 第120章:异常监控后置处理器基础模型设计
    • 第121章:服务提供者整合异常监控
    • 第122章:服务消费者整合异常监控
    • 第122章-X:异常监控阶段作业
  • 维护篇:持续维护篇

    • 第fix-01章:修复服务消费者读取配置优先级的问题
    • 第fix-02章:修复Zookeeper一致性Hash负载均衡泛型类型不匹配的问题
    • 第fix-03章:修复自定义扫描器递归扫描文件标识不起作用的问题
    • 第fix-04章:修复基于SpringBoot启动服务消费者Netty Group多次连接的问题
    • 第fix-05章:修复基于计数器的限流策略不起作用的问题
    • 第fix-06章:修复基于SpringBoot启动服务消费者无法同时连接多个服务提供者的问题
    • 第fix-07章:更新基于Semaphore的限流策略
    • 第fix-08章:优化服务熔断半开启状态的执行逻辑
  • 番外篇

    • 《从零开始手写RPC框架》电子书重磅发布

《RPC手撸专栏》第122章:服务消费者整合异常监控

作者:冰河
星球:http://m6z.cn/6aeFbs
博客1:https://binghe001.github.io
博客2:https://binghe.site
文章汇总:https://binghe.site/md/all/all.html

沉淀,成长,突破,帮助他人,成就自我。

大家好,我是冰河~~

目前,我们自己手写的RPC框架已经完成了整体设计、服务提供者的实现、服务消费者的实现、注册中心的实现、负载均衡的实现、SPI扩展序列化机制、SPI扩展动态代理机制、SPI扩展反射机制、SPI扩展负载均衡策略、SPI扩展增强型负载均衡策略、SPI扩展实现注册中心、心跳机制、增强型心跳机制、重试机制、整合Spring、整合SpringBoot、整合Docker、整合SpringCloud Alibaba、结果缓存、路由控制、延迟连接、并发控制、流控分析、连接控制、SPI扩展连接淘汰策略、数据缓冲、服务容错、服务限流、基于SPI扩展服务限流、超出限流规则、服务熔断和基于SPI扩展熔断策略等篇章。

一、前言

服务消费者如何整合异常监控呢?

在前面的文章中,实现了服务提供者整合异常监控,接下来,就是要实现服务消费者整合异常监控了。

二、目标

目标很明确:服务消费者整合异常监控!

服务提供者整合了异常监控,当服务提供者抛出异常时,就能够通过异常监控模块输出异常信息,对异常信息进行全方位的监控和处理。作为RPC框架最核心的模块之一的服务消费者,同样需要整合异常监控来实时收集、监控并处理异常。

本章,我们就一起实现服务消费者整合异常监控。

三、设计

如果让你实现服务消费者整合异常监控,你会怎么设计呢?

服务消费者整合异常监控的流程如图122-1所示。

图122-1

由图122-1可以看出如下信息:

(1)服务提供者会通过自定义类扫描器整合注册中心,将服务注册到注册中心。

(2)服务注册到注册中心的元数据,例如服务的名称、服务的版本号、服务地址、服务端口和服务分组等信息,元数据会贯穿整个服务的注册与发现流程。

(3)服务注册与发现SPI接口对外提供服务注册与发现的方法,服务提供者通过自定义扫描器会调用服务注册与发现SPI接口的方法实现服务注册功能。

(4)基于服务注册与发现的SPI接口,服务提供者会基于SPI接口实现多个服务注册与发现的实现类,每个实现类对应着一种注册中心服务。

(5)服务消费者会通过服务注册与发现的SPI接口订阅注册中心的服务,会从注册中心获取到服务提供者发布的服务信息,实现服务发现的功能。

(6)服务消费者从注册中心获取到服务提供者发布的服务信息后,会基于SPI机制动态加载普通算法(我们将第42章~第50章实现的负载均衡算法统称为普通算法)、基于增强型加权随机算法、基于增强型加权轮询算法、基于增强型加权Hash算法、基于增强型加权源IP地址Hash算法、基于增强型Zookeeper一致性Hash算法和最少连接数算法的负载均衡策略,从多个服务中选择一个进行远程网络连接。

(7)服务消费者会直接与根据基于SPI机制动态加载的负载均衡策略选择出的服务提供者建立连接,实现数据交互。也就是说,后续服务消费者会与服务提供者直接实现数据交互。

(8)服务消费者向服务提供者发送心跳ping消息,服务提供者响应服务消费者pong消息。服务提供者向服务消费者发送心跳ping消息,服务消费者向服务提供者响应pong消息。

(9)服务消费者发送心跳和服务提供者发送心跳,定时任务的时间间隔都是配置化的。

(10)服务提供者与服务消费者除了手动实现定时任务来实现心跳检测外,还基于Netty的IdleStateHandler实现了心跳检测机制。

(11)服务消费者支持服务订阅的重试机制、服务消费者连接服务提供者支持重试机制。

(12)服务提供者支持以Java原生程序方式和整合Spring的方式提供服务,并且实现了基于Spring XML和Spring注解的方式接入RPC框架的服务提供者。

(13)服务消费者支持以Java原生程序方式和整合Spring的方式提供服务。并且实现了基于Spring XML和Spring注解的方式接入RPC框架的服务消费者。

(14)服务提供者支持整合SpringBoot的功能,并支持基于SpringBoot接入服务提供者。服务消费者支持整合SpringBoot的功能,并支持基于SpringBoot接入服务消费者。

(15)RPC框架支持基于Docker接入服务提供者和服务消费者。

(16)结果缓存通用模型中包含:结果缓存的Key和结果缓存管理器。

(17)服务提供者和服务消费者支持结果缓存。

(18)服务消费者支持基于负载均衡延迟/非延迟连接多个服务提供者(这里的多个服务提供者包括从注册中心获取到的服务提供者列表,也包括配置的服务消费者直连的多个服务提供者),或直接延迟/非延迟连接某个服务提供者,调用服务方法(重试机制)

(19)在并发控制基础模型中,会对外暴露核心线程数和最大线程数,对这两个参数进行配置优化,达到并发控制的目的。并且服务提供者和服务消费者支持并发控制。

(20)服务消费者与服务提供者之间的数据交互会异步通过流控分析后置处理器接口的处理。

(21)连接控制基础模型包含两部分:连接管理和淘汰策略,并且连接管理内部会对淘汰策略进行进一步的封装,对外统一提供连接管理的方法。并且,服务提供者整合了连接控制。

(22)连接淘汰策略支持基于SPI扩展最早连接淘汰策略、最晚连接淘汰策略、先进先出连接淘汰策略、使用次数最少连接淘汰策略、最近未被使用连接淘汰策略、随机连接淘汰策略和拒绝连接淘汰策略。

(23)框架支持数据缓冲功能,并且服务提供者和服务消费者整合了数据缓冲功能。

(24)服务提供者与服务消费者都具备服务容错的能力,服务提供者与服务消费者之间的容错机制主要是通过自定义的网络传输协议中,消息有中的状态来决定的,如果状态为正常,也就是成功状态,则服务消费者会认为服务调用成功,则正常返回结果。如果状态为失败,则服务消费者会认为服务调用失败,发生了异常,则服务消费者会进行容错处理。此时,如果配置了容错处理类,则服务消费者会自动调用容错处理类的方法,并返回结果。

(25)RPC框架会以SPI的形式支持限流接口和各种限流策略,并且服务提供者和服务消费者整合了服务限流策略。

(26)RPC框架支持基于计数器的限流策略、基于Seamphore的限流策略和基于Guava的限流策略,并且支持SPI扩展限流策略,在实际场景下可根据实际需要动态扩展限流策略。

(27)服务提供者和服务消费者超出限流上限时,会根据配置执行抛出异常、降级处理、继续执行等规则。

(28)RPC框架支持基于错误数和错误率的熔断策略,并且服务提供者和服务消费者整合并支持了服务熔断。

(29)RPC框架提供异常监控基础模型,服务提供者和服务消费者整合了异常监控。

四、实现

说了这么多,具体要怎么实现呢?

核心类实现关系

服务消费者整合异常监控的核心类关系如图122-2所示。

图122-2

查看完整文章

加入冰河技术知识星球,解锁完整技术文章与完整代码

在 GitHub 上编辑此页
上次更新: 2026/4/29 16:18
Contributors: binghe001
Prev
第121章:服务提供者整合异常监控
Next
第122章-X:异常监控阶段作业
阅读全文
×

扫码或搜索:冰河技术
发送:290992
即可立即永久解锁本站全部文章

星球会员
跳转链接