-
Notifications
You must be signed in to change notification settings - Fork 82
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
【腾讯犀牛鸟计划】实现过载保护插件 - 固定时间窗口 #142
Comments
已成功领取本issue |
1 similar comment
已成功领取本issue |
没有太理解这里的 |
不符合要求哈,rpc框架通过拦截点扩展功能,具体是可以在rpc前后执行一些自定义的逻辑,实现server filter就是接入到这个拦截点的方法,你可以参考trpc-cpp提供的拦截器文档来实现,但需要继承server_overload_controller实现过载保护逻辑,并用server filter调用他。 https://github.com/trpc-group/trpc-cpp/blob/main/docs/README.zh_CN.md |
yaml文件里是不是没有填filter? https://github.com/trpc-group/trpc-cpp/blob/main/docs/zh/filter.md |
|
是不是 .brazelrc中的编译选项 没加 |
加了的,要不然test文件也没法成功运行0.0 |
感觉文档写得有问题,看了下代码,在service里配置的话,要这样填 server:
service:
- name: xxx
service_filters:
- fixedwindow_limiter |
已成功领取本issue |
已经实现并合入 |
issue介绍
作为实现服务高可用的一部分,过载保护算法是一种常用手段,能在请求激增的时候防止服务过载导致的性能急剧恶化甚至崩溃。
不同的负载均衡算法适用于不同的业务场景,固定时间窗算法的实现原理是,统计固定时间周期内的请求量,超过限额就会启动限流,因其实现简单有效而被应用较多。
你需要开发一个固定时间窗口的过载保护插件,并提PR到tRPC-Cpp中。
具体地,你可以参考下面的步骤进行开发
1、继承抽象类ServerOverloadController,实现过载保护插件。
2、实现server filter,调用过载保护插件。
3、用于测试验证,你可以复用examples/helloworld的代码来做测试,用在yaml里为服务配置server filter,额外的,你还需要改写fiber_client客户端代码,让其并发发送请求,提高并发量触发过载保护的效果。
参考资料
1、需要基于框架当前提供的过载保护的抽象类开发:trpc/overload_control/server_overload_controller.h
其他说明
本issue为2024犀牛鸟开源人才培养活动专属issue,仅供在校大学生参与领取
【认领issue】在研学基地"issue营地"对应issue行的M~R列抢滩报名,即视为认领成功。
【完成issue】已认领issue的同学,请同步在本issue评论区回复“已成功领取本issue”; 如7天内无提交任何进展包括不限于comment \ commit \ Pull Request,则将视为同学主动放弃issue,组委会将释放issue给下一位等候者。
The text was updated successfully, but these errors were encountered: