- 背景:LRU Cache (Least Recently Used,最近最少使用)是业务日常开发中常用的一个 Local Cache 工具,提供 Set/Get 等接口操作 Cache 数据。当缓存容量满了之后,LRU 算法根据数据的历史访问记录顺序来进行数据淘汰,核心思想是”如果数据最近被访问过,那么将来被访问的概率也更高“。业务期望框架能集成一个LRU Cache工具,方便日常开发。 - 需求:希望你能参考当前已有类库的接口,为tRPC-Cpp设计一套灵活、易用的接口,更好地扩展tRPC的生态。具体来来说,在实现时,你需要注意下面的要点: - 增加LUR Cache特性支持,涵盖服务端与客户端,包括协议、编解码、代理等实现与测试。需要支持如下特性: - 提供多线程安全的接口。 - 支持高性能的 Put/Get 操作。 - 支持LRU淘汰策略。 - 支持自定义的Key和Value。 - 支持指定线程Mutex和FiberMutex (框架提供自适应的同步原语)。 - 你应该尽可能复用tRPC-Cpp的各个模块,具体来说,你应该继承 ServiceProxy,实现一个比如HttpSseProxy,提供设计良好的接口,在实现接口时,应该复用框架的服务发现以及拦截器模块。 - 参考资料: - LevelDB,git:https://github.com/google/leveldb - RocksDB,git:https://github.com/facebook/rocksdb - CacheLib,git:https://github.com/facebook/CacheLib 小提示: 本issue为2025犀牛鸟开源人才培养活动专属issue,仅供参与犀牛鸟的在校大学生及开发者参与领取,认领前请先报名2025犀牛鸟开源人才培养计划( https://opensource.tencent.com/summer-of-code )。 【认领issue】在issue所在repo页面留言“已成功领取本issue”→微信私信犀牛鸟小助手(活动群-黄贵龙):issue链接+认领截图→犀牛鸟小助手回复“已成功领取本issue”,即可开始做issue任务。 【完成issue】已完成issue的同学,请同步犀牛鸟小助手(私信活动群-黄贵龙回复“已完成本issue任务+代码合入截图等证明”)。 注意:如7天内无提交任何进展包括不限于comment \ commit \ Pull Request,则将视为同学主动放弃issue,组委会将释放issue给下一位等候者。 【第三阶段·实战课题】,需要8月1日入围后即可参与,请勿认领
Activity
ftljk commentedon Jul 2, 2025
已成功领取本issue
ftljk commentedon Jul 10, 2025
核心设计架构
1. CacheServiceProxy设计
继承
ServiceProxy基类,参考HttpServiceProxy的实现模式,设计CacheServiceProxy类:2. LRU Cache核心实现
设计线程安全的LRU Cache实现,支持框架的自适应同步原语:
3. 协议定义
设计Cache协议,支持Put/Get/Delete/BatchOp等操作:
4. 编解码器实现
实现Cache协议的编解码器,集成到框架的codec系统:
5. 服务端实现
实现Cache服务端,提供实际的缓存存储功能:
6. 拦截器集成
复用框架的Filter系统,实现Cache特定的拦截器:
7. 服务发现集成
复用框架的naming系统,支持Cache服务的服务发现:
8. 自适应同步原语
支持用户指定同步原语类型,框架自动选择最优实现:
9. 使用示例
AntiBargu commentedon Jul 10, 2025
已成功领取本issue
xing-cg commentedon Jul 10, 2025
已成功领取本issue
daheishandemao commentedon Jul 10, 2025
已成功领取本issue
zhuyanhuazhuyanhua commentedon Jul 10, 2025
已成功领取此issue
Rnen-arch commentedon Jul 10, 2025
已成功领取此issue
NeverGYu commentedon Jul 10, 2025
已成功领取此issue
CrocodilePipo commentedon Jul 10, 2025
已成功领取此issue
ResilientSZUer commentedon Jul 10, 2025
已成功领取本issue
HappyCR7 commentedon Jul 10, 2025
已成功领取本issue
spiderling2 commentedon Jul 11, 2025
已成功领取本issue