brpc
brpc copied to clipboard
brpc is an Industrial-grade RPC framework using C++ Language, which is often used in high performance system such as Search, Storage, Machine learning, Advertisement, Recommendation etc. "brpc" means...
**Describe the bug (描述bug)** wrr在上游节点很多同时频繁调权的情况下会出现QPS的抖动 **To Reproduce (复现方法)** 上游设置如50个节点按照wrr访问下游3个节点,期间每10s调权一次。 **Expected behavior (期望行为)** 权重最大的节点QPS会向上波动。 **Versions (各种版本)** OS: Compiler: brpc: protobuf: **Additional context/screenshots (更多上下文/截图)** 我理解是wrr初始化的时候不是按照权重概率计算节点的,如果下游节点只有3-4个,那么命中权重最大的节点的概率比 权重/sum(权重)的概率要大
实现了基于 length + body 的自定义协议,使用 rpc press 压测发现,下游只有一个节点时,时耗稳定并且耗时很小,如果增加下游节点(使用 rr 模式),耗时99线明显上升。 下游节点机器、性能、网络均大致相同,正常情况下处理时耗较短,并且耗时高的 ip 均匀分布。 **以下是 1 个下游节点的测试情况:** =========================================================================== 2022/07/04-15:38:47 sent:3001 success:3002 error:0 total_error:0 total_sent:261105 2022/07/04-15:38:48 sent:3001 success:3001 error:0 total_error:0 total_sent:264106 2022/07/04-15:38:49...
only support KV, Lease, Watch service API now
**Describe the bug (描述bug)** 日志中经常出现 bvar/default_variables.cpp:442] Fail to fscanf: Permission denied,1s一次 **To Reproduce (复现方法)** 我们为qemu提供了一个block driver,在使用的时候会出现上面的日志。 **Expected behavior (期望行为)** 看了一下对应的代码,奇怪的是可以打开/proc/self/io,但是在后续fscanf的时候提示没有权限。 #788 是一个比较类似的,他们的情况是打开的时候就提示无权限。 现在期望能定位一下问题,或者,能不能把这个功能`read_proc_io`暂时屏蔽了。 **Versions (各种版本)** OS: debian7(3.10) Compiler: gcc-4,9 brpc:...
https://github.com/apache/incubator-brpc/issues/1807
现在看起来没有固定的格式化风格(还是我没看到?),这样本地开发的时候不敢 format,有考虑引入一个 clang format 吗,用工具来做统一的格式化,方便点。
closed #1803 support handle `on_received_messages` failure of streaming rpc, user can overload `on_failure` of `StreamInputHandler` to handle `on_received_messages` failure, the default is do nothing
**Describe the bug (描述bug)** Hi 各位, 我是vcpkg维护者。 这段时间我们收到了一个brpc的build失败问题 ( https://github.com/microsoft/vcpkg/issues/22962 ): ``` [328/338] : && /usr/bin/c++ -DBRPC_WITH_GLOG=1 -DGFLAGS_NS=google -DBTHREAD_USE_FAST_PTHREAD_MUTEX -D__const__= -D_GNU_SOURCE -DUSE_SYMBOLIZE -DNO_TCMALLOC -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS -D__STDC_CONSTANT_MACROS -DBRPC_REVISION=\"0.9.7\|master\|7e7dad5fe\|2022-02-04T18:00:26-08:00\" -D__STRICT_ANSI__ -g -DENABLE_THRIFT_FRAMED_PROTOCOL...
**Is your feature request related to a problem? (你需要的功能是否与某个问题有关?)** brpc支持请求mongodb服务,支持副本集。 **Describe the solution you'd like (描述你期望的解决方法)** 实现[MongoDB Wire Protocol](https://www.mongodb.com/docs/manual/reference/mongodb-wire-protocol/),使用Request Opcode `OP_MSG`。添加InsertRequest/Response,QueryRequest/Response,GetMoreRequest/Response(游标操作),CountRequest/Response,DeleteRequest/Response,UpdateRequest/Response,FindAndModifyRequest/Response protobuf定义,`PackRequest`转换为Mongo OP_MSG,`ProcessResponse`将解析Mongo OP_MSG,转换为pb。 副本集功能的支持,添加一个`NamingService`通过`replSetGetStatus`获取副本集中的各个节点的状态,返回`PRIMARY`节点。 **Describe alternatives you've considered (描述你想到的折衷方案)**...
这个PR的目的是解决我之前提出的一个issue #1315 我们有一些场景,比如对response、request的整体(或其中大量字段)做落盘(比如经过某种序列化,然后把结果发送给kafka等MQ), 希望能在response返回给客户端之后,再做这个操作。避免占用请求响应的时间。然而之前的Done->Run()调用之后,request、response所指向对象都会被析构,则无法实现这个需求。故而我这次给brpc的Controller新增一个回调函数,可以由使用方注册一个回调逻辑,在response返回之后,但request、response析构之后来执行。 **该功能目前在常用的 baidu_std/http/http2 协议上支持。其他协议未开发。** @zyearn 希望看看,如果有函数设计或命名有不妥之处欢迎提出。 另外我修改了example里面的三个server代码,来展示我新增的这个函数的用法,不知道是否允许。或者我应该写在某个文档里面,而不是直接改example?