brpc专题

brpc profiler

cpu profiler cpu profiler | bRPC MacOS的额外配置 在MacOS下,gperftools中的perl pprof脚本无法将函数地址转变成函数名,解决办法是: 安装standalone pprof,并把下载的pprof二进制文件路径写入环境变量GOOGLE_PPROF_BINARY_PATH中安装llvm-symbolizer(将函数符号转化为函数

brpc:WorkStealingQueue

代码 #ifndef BTHREAD_WORK_STEALING_QUEUE_H#define BTHREAD_WORK_STEALING_QUEUE_H#include "butil/macros.h"#include "butil/atomicops.h"#include "butil/logging.h"namespace bthread {template <typename T>

学习brpc:echo服务

Echo同步客户端 server 端 #include <gflags/gflags.h>#include <json2pb/pb_to_json.h>#include <brpc/server.h>#include "butil/endpoint.h"#include "echo.pb.h"// flags,用于配置serverDEFINE_bool(echo_attachment

brpc之ResourcePool

简介 ResourcePool用于管理资源,负责资源的分配以及回收 结构 BlockGroup:资源池中包含多个BlockGroup,最多65536个 Block:一个BlockGroup中包含多个Block,最多(1<<16)个;1个Block中包含BLOCK_NITEM个类型为T的资源,BLOCK_NITEM由类模板ResourcePoolBlockItemNum中的静态成员value

brpc负载均衡load balance和服务发现name servicing

1.SharedLoadBalancer(load_balancer.h):包含LoadBalancer指针_lb,AddServersInBatch 2.LoadBalancerWithNaming:继承SharedLoadBalancer和NamingServiceWatcher 2.1Init函数:SharedLoadBalancer::Init,new一个load balance对象

brpc之InputMessenger

简介 InputMessenger类是客户端处理socket中响应的处理类 类结构 #mermaid-svg-pmitHXejHDdzZmky {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-pmitHXejHDdzZmky .error-icon{fi

brpc: a little source code

之前在https://www.yuque.com/treblez/qksu6c/nqe8ip59cwegl6rk?singleDoc# 《olap/clickhouse-编译器优化与向量化》中我谈过brpc的汇编控制bthread。本文就来看一下brpc作为一个高性能的rpc实现,除了自定义线程栈之外,代码还有什么优秀之处。 因为时间原因,本文不做深入分析,只是解读下几个有意思的模块。 用户态f

【brpc学习实践十三】基于brpc的redis client的实现

brpc支持了redis协议,提供了相关redis访问接口,充分利用了bthread,可以坐到比hiredis更高效。 brpc redis与hiredis的对比 相比使用hiredis(官方client)的优势有: 线程安全。用户不需要为每个线程建立独立的client。支持同步、异步、批量同步、批量异步等访问方式,能使用ParallelChannel等组合访问方式。支持多种连接方式。支持超

【brpc学习实践十三】基于brpc的redis client的实现

brpc支持了redis协议,提供了相关redis访问接口,充分利用了bthread,可以坐到比hiredis更高效。 brpc redis与hiredis的对比 相比使用hiredis(官方client)的优势有: 线程安全。用户不需要为每个线程建立独立的client。支持同步、异步、批量同步、批量异步等访问方式,能使用ParallelChannel等组合访问方式。支持多种连接方式。支持超

【brpc学习实践】ParallelChannel的使用与并行请求

概览 ParallelChannel (有时被称为“pchan”)同时访问其包含的sub channel,并合并它们的结果。用户可通过CallMapper修改请求,通过ResponseMerger合并结果。ParallelChannel看起来就像是一个Channel: 支持同步和异步访问。 发起异步操作后可以立刻删除。 可以取消。 支持超时。 任何brpc::ChannelBas

【brpc学习实践七】dummy server、DynamicPartitionChannel

dummy server 如果你的程序只使用了baidu-rpc的client或根本没有使用baidu-rpc,但你也想使用baidu-rpc的内置服务,只要在程序中启动一个空的server就行了,这种server我们称为dummy server。 Dummy server 可以用于原型设计和开发目的,作为简单的 http 服务器使用,多数场景用不上。 brpc怎么开启dummy server

【brpc学习实践六】backup request场景案例

应用场景 有时为了保证可用性,需要同时访问两路服务,哪个先返回就取哪个。在brpc中,这有多种做法,根据server是否挂在同一个命名服务内有所区别。 当后端server可以挂在一个命名服务内时 Channel开启backup request。这个Channel会先向其中一个server发送请求,如果在ChannelOptions.backup_request_ms后还没回来,再向另一个se

【brpc学习实践五】brpc自适应限流案例

自适应限流 服务的处理能力是有客观上限的。当请求速度超过服务的处理速度时,服务就会过载。 如果服务持续过载,会导致越来越多的请求积压,最终所有的请求都必须等待较长时间才能被处理,从而使整个服务处于瘫痪状态。 与之相对的,如果直接拒绝掉一部分请求,反而能够让服务能够"及时"处理更多的请求。对应的方法就是设置最大并发。 自适应限流能动态调整服务的最大并发,在保证服务不过载的前提下,让服务尽可能

brpc环境部署

一、安装gflags git clone https://github.com/gflags/gflags.gitcd gflagsgit checkout v2.0sh autogen.sh./configuremakemake install 二、安装gtest 下载gtest,release-1.8.0        git clone https://github.co