-
Notifications
You must be signed in to change notification settings - Fork 105
Open
Labels
Description
- 背景: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,提供设计良好的接口,在实现接口时,应该复用框架的服务发现以及拦截器模块。
- 增加LUR Cache特性支持,涵盖服务端与客户端,包括协议、编解码、代理等实现与测试。需要支持如下特性:
- 参考资料:
- 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日入围后即可参与,请勿认领