分类
善良比聪明更重要
RPC 系列(三十一):bvar 与性能指标 RPC 系列(三十一):bvar 与性能指标
bvar 是多线程环境下的计数器类库,方便记录和查看用户程序中的各类数值。它利用了 thread local 存储减少了 cache bouncing,相比 UbMonitor(百度内的老计数器库)几乎不会给程序增加性能开销,也快于竞争频繁
2024-04-02
RPC 系列(三十):用 rpcz 观测 RPC RPC 系列(三十):用 rpcz 观测 RPC
用户能通过 /rpcz 看到最近请求的详细信息,并可以插入注释(annotation)。不同于 tracing system(如 Dapper)以全局视角看到整体系统的延时分布,rpcz 更多是一个调试工具。虽然角色有所不同,但在 brpc
2024-03-26
RPC 系列(二十九):brpc 的 gflags 配置 RPC 系列(二十九):brpc 的 gflags 配置
brpc 使用 gflags 管理配置。如果你的程序也使用 gflags,那么你应该已经可以修改和 brpc 相关的 flags,你可以浏览 flags 服务了解每个 flag 的具体功能。如果你的程序还没有使用 gflags,我们建议你使
2024-03-19
RPC 系列(二十八):brpc 错误码 RPC 系列(二十八):brpc 错误码
错误码与 Controllerbrpc 使用 brpc::Controller 设置和获取一次 RPC 的参数,Controller::ErrorCode() 和 Controller::ErrorText() 则分别是该次 RPC 的错误
2024-03-12
RPC 系列(二十七):brpc 自定义协议 RPC 系列(二十七):brpc 自定义协议
server 端多协议brpc server 一个端口支持多种协议,大部分时候这对部署和运维更加方便。由于不同协议的格式大相径庭,严格地来说,一个端口很难无二义地支持所有协议。出于解耦和可扩展性的考虑,也不太可能集中式地构建一个针对所有协议
2024-03-05
RPC 系列(二十六):brpc 的流式 RPC RPC 系列(二十六):brpc 的流式 RPC
概述在一些应用场景中,client 或 server 需要向对面发送大量数据,这些数据非常大或者持续地在产生以至于无法放在一个 RPC 的附件中。比如一个分布式系统的不同节点间传递 replica 或 snapshot。client/ser
2024-02-27
RPC 系列(二十五):brpc 的服务器推送 RPC 系列(二十五):brpc 的服务器推送
server push 指的是 server 端发生某事件后立刻向 client 端发送消息,而不是像通常的 RPC 访问中那样被动地回复 client。brpc 中推荐以如下两种方式实现推送。 远程事件和本地事件类似,分为两步:注册和通知
2024-02-20
RPC 系列(二十四):brpc 内置服务 RPC 系列(二十四):brpc 内置服务
什么是内置服务内置服务以多种形式展现服务器内部状态,提高你开发和调试服务的效率。brpc 通过 HTTP 协议提供内置服务,可通过浏览器或 curl 访问,服务器会根据 User-Agent 返回纯文本或 html,你也可以添加 ?cons
2024-02-13
RPC 系列(二十三):brpc Server 全解 RPC 系列(二十三):brpc Server 全解
下面以 Echo 为例说明 brpc Server 的定义与使用方法。 填写 proto 文件请求、回复、服务的接口均定义在 proto 文件中。 # 告诉protoc要生成C++ Service基类,如果是java或python,则应分别
2024-02-06
RPC 系列(二十二):brpc 的定时器 RPC 系列(二十二):brpc 的定时器
在几点几分做某件事是 RPC 框架的基本需求,这件事比看上去难。 让我们先来看看系统提供了些什么:posix 系统能以 signal 方式告知 timer 触发,不过 signal 逼迫我们使用全局变量,写 async-signal-saf
2024-01-30
RPC 系列(二十一):brpc 的 IO 与缓冲 RPC 系列(二十一):brpc 的 IO 与缓冲
一般有三种操作 IO 的方式: blocking IO:发起 IO 操作后阻塞当前线程直到 IO 结束,标准的同步 IO,如默认行为的 posix read 和 write。 non-blocking IO:发起 IO 操作后不阻塞,用户
2024-01-23
RPC 系列(二十):brpc 的内存管理 RPC 系列(二十):brpc 的内存管理
内存管理总是程序中的重要一环,在多线程时代,一个好的内存分配大都在如下两点间权衡: 线程间竞争少。内存分配的粒度大都比较小,对性能敏感,如果不同的线程在大多数分配时会竞争同一份资源或同一把锁,性能将会非常糟糕,原因无外乎和 cache 一
2024-01-16
2 / 3