# Sparrow **Repository Path**: LinuxTaoist/Sparrow ## Basic Information - **Project Name**: Sparrow - **Description**: C++中间件服务,技术文章发布于微信公众号《开源519》 - **Primary Language**: C++ - **License**: MIT - **Default Branch**: Sparrow-dev - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 36 - **Forks**: 13 - **Created**: 2022-05-19 - **Last Updated**: 2026-09-04 ## Categories & Tags **Categories**: microservice **Tags**: 微服务, 中间件, Cpp, 设计模式, rpc ## README # Sparrow:Linux C++ 嵌入式中间件 👉 [English](README.en.md) ## 📌 项目定位 `Sparrow` 是一套面向 `Linux / 嵌入式设备` 场景的 C++ 中间件框架,基于 `Epoll` 事件驱动与服务化设计,适合构建高并发、低耦合、可观测、可扩展的设备系统基础设施。 它以工程实践为导向,关注的是: - 高性能事件调度 - 模块化服务通信 - 稳定运行与诊断 - 平台/硬件适配能力 - 开发者快速接手与持续演进 ## ✨ 为什么值得关注 - **事件驱动引擎**
统一处理 IO、定时器、线程任务与信号事件,适合高并发设备中间件场景 - **服务化架构**
采用 Binder / MQ / 事件分发机制,模块之间松耦合,扩展更灵活 - **可观测性强**
日志、属性、调试节点、状态监控可直接用于现场问题排查 - **稳定运行支持**
进程守护、状态采集、异常观测、重启恢复,适合设备端持续稳定运行 - **工程化设计**
目录结构清晰,示例、测试、文档、平台适配能力较完整,适合快速落地 ## 🚀 3 分钟快速上手 ### 1. 环境要求 - Linux / Ubuntu - C++11 及以上 - CMake / gcc / make ### 2. 编译项目 ```bash cd /path/to/Sparrow cd Build ./rebuild_default.sh ``` 编译产物通常位于: ```bash cd Release ls ``` 常见目录: - `Bin`:可执行文件 - `Lib`:静态/动态库 - `Include`:导出头文件 - `Cache`:编译与运行缓存 ### 3. 启动服务 ```bash cd Release/Bin ./servicemanagersrv ``` ### 4. 查看日志 ```bash tail -f /tmp/sprlog/sparrow.log ``` ## 📢 核心能力 | 功能 | 关键特性 | 价值说明 | |---|---|---| | 进程管理 | 守护、重启、状态监控、异常恢复 | 保障核心服务稳定运行 | | 日志管理 | 分级日志、格式化输出、持久化 | 快速定位问题、减少排障成本 | | Binder / RPC | 服务注册、消息转发、同步/异步调用 | 支撑模块协作与跨进程通信 | | 消息中转 | 广播、订阅、MQ 事件分发 | 降低耦合、提高扩展性 | | Property 管理 | 动态读写、变更通知、配置导出 | 让系统配置更灵活、更可调测 | | 调试节点 | 动态调试入口、状态观测、在线排查 | 减少重启和二次开发成本 | | 定时器与线程池 | 周期任务、任务异步提交、回调触发 | 提高并发与任务处理效率 | | 多平台适配 | 分层适配、平台隔离、跨设备支持 | 方便移植到不同硬件和平台 | ## 🏗️ 主仓结构速览 ```text Sparrow/ ├── 3rdAdapter/ // 第三方库适配层 ├── 3rdParty/ // 第三方依赖 ├── Build/ // 编译脚本入口 ├── CMakeLists.txt // 顶层构建入口 ├── Components/ // 服务组件 ├── Configs/ // 配置文件 ├── Core/ // 核心框架模块 ├── Debug/ // 调试与监控工具 ├── Docs/ // 工程文档 ├── Examples/ // 示例程序 ├── Hardware/ // 硬件适配层 ├── Platform/ // 平台配置层 ├── PrivateAPIs/ // 内部接口 ├── PublicAPIs/ // 对外接口 ├── Release/ // 编译输出目录 ├── TestCase/ // 测试用例 ├── Tools/ // 质量工具 ├── Util/ // 通用工具库 ├── UtilModules/ // 通用功能模块 ├── LICENSE // 开源许可证 ├── README.md // 主仓说明 ├── README.en.md // 英文说明 ├── modules_config.cmake // 模块配置 ├── version.cmake // 版本配置 └── ... ``` ## 🔌 如果需要扩展,放哪更合适 项目的扩展入口是明确分层的,建议按“能力边界”放到对应目录: - **业务功能扩展**
`Components/Business/`、`PublicAPIs/` 适合放客户特定业务、对外能力封装、业务服务模块 - **平台差异化配置**
`Platform/` 适合放不同平台的编译参数、环境差异、配置文件 - **硬件适配**
`Hardware/` 适合放驱动、板卡抽象和 HAL 层实现 - **通用工具能力**
`Util/`、`UtilModules/` 适合放可复用的通用库、协议处理、算法与基础组件 - **主仓核心保持稳定**
`Core/` 只放最通用的框架能力,不建议把客户化或平台特定逻辑直接塞进核心层 > 也就是说:主仓负责 “通用基础设施”,扩展层负责 “业务、平台、硬件差异”。这样最容易维护,也最符合当前工程结构。 ## 📚 文档资源 - [C++ 编程规范](Docs/C++编程规范.md):统一代码风格,保持工程一致性 - [Issue 提交规范](Docs/Issue提交规范.md):统一协作与质量要求 - [版本管理](Docs/版本管理.md):版本发布和维护说明 - [疑难杂症](Docs/疑难杂症.md):常见问题、故障处理与经验沉淀 ## 🎯 适用场景 - 智能硬件:摄像头、传感器、终端设备、控制器 - 车载系统:T-Box、车载网关、智能座舱 - 工业与边缘:现场控制、边缘网关、数据采集节点 - 通用设备端中间件:需要稳定、可扩展、易观测的 Linux 系统 ## 🤝 适合谁来用 - 需要做 Linux 嵌入式中间件的工程团队 - 想要统一日志、状态、调试能力的设备软件开发者 - 需要强扩展性和平台适配能力的研发人员 ## 📄 许可 本项目采用 MIT 许可证,详情见 [LICENSE](LICENSE)。 ## 💎 一句话总结 如果你要一个“可直接上手、可继续扩展、便于稳定运行和排障”的 Linux C++ 设备中间件底座,`Sparrow` 就是值得重点关注的主仓入口。