# brpc_async **Repository Path**: lang2020/brpc_async ## Basic Information - **Project Name**: brpc_async - **Description**: No description available - **Primary Language**: C++ - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-29 - **Last Updated**: 2026-04-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # brpc_async #### 介绍 基于brpc的异步框架 #### 软件架构 一、核心设计定位 基于 BRPC 框架封装的异步 RPC 客户端通用框架,核心目标是屏蔽底层 BRPC 异步调用细节,为上层业务提供统一、简洁、可复用的异步 / 同步 RPC 调用能力,同时内置完善的可靠性保障机制,实现业务逻辑与 RPC 通信逻辑解耦。 二、核心设计思想 1. 模板化泛型设计:通用化 + 高复用 ● 采用模板元编程抽象 RPC 客户端核心逻辑,通过模板参数绑定请求 / 响应体、RPC 方法,一套模板支撑所有业务 RPC 接口(如 Echo、Kv)。 ● 无需为每个业务接口重复编写 RPC 调用代码,极大提升框架复用性和扩展性,新增 RPC 服务只需实例化模板即可。 2. 异步为主、同步兼容:灵活适配业务场景 ● 核心能力:原生支持异步非阻塞 RPC 调用,通过回调机制实现请求发送后立即返回,不阻塞主线程,适配高并发、高性能场景。 ○ 异步仿照ceph rbd层、rados的aiocompletion实现。 ○ 后续可扩展回调函数为lamba表达式,提高灵活性。 ● 兼容能力:封装同步调用接口,基于异步能力实现等待完成的同步语义,满足简单业务的同步调用需求,兼顾灵活性与易用性。 3. 分层解耦:职责清晰、易于维护 代码严格分为三层架构,层与层之间低耦合、高内聚: 1. 底层通信层:封装 BRPC Channel、Controller、定时器等底层组件,负责网络通信、请求发送 / 接收。 2. 中间框架层:提供异步上下文管理、回调调度、重试机制、超时控制等通用能力,是框架核心。 3. 上层业务层:业务请求封装(如 读写请求的封装),仅关注业务逻辑,无需关心 RPC 底层细节。 4. 上下文与回调自治:生命周期安全管理 ● 设计Context 抽象类统一管理 RPC 请求的生命周期和完成回调,支持同步 / 异步两种完成模式。 ● 业务请求对象自管理生命周期(请求完成后自动析构),避免内存泄漏;回调函数绑定业务逻辑,实现 RPC 完成后的自动处理。 5. 可靠性内置 框架原生集成高可用机制,无需业务层关注: ● 自动重试:支持可配置的重试次数、退避延迟、抖动策略,应对网络抖动、临时故障。 ● 超时控制:区分单次调用超时和总超时,精细化管控请求耗时。 ● 故障容错:支持服务地址计算、通道管理、定时器取消,保障异常场景下的资源释放和系统稳定。 6. 面向对象 + 多态 ● 基于多态和虚函数设计核心接口(如 Context、AsyncClosureBase),支持框架能力的灵活扩展。 ● 可定制重试策略、回调逻辑、生命周期管理,适配不同业务的个性化需求。 三、设计核心价值 1. 简化使用:业务方只需关注业务请求和回调逻辑,无需编写复杂的 BRPC 异步代码。 2. 统一规范:全系统 RPC 调用遵循统一范式,降低协作和维护成本。 3. 高性能高可用:异步架构保证高并发,内置重试、超时保证服务可靠性。 4. 易扩展:模板化 + 多态设计,快速支持新业务 RPC 接口和新特性扩展 #### 安装教程 #### 使用说明 #### 参与贡献 #### 特技