分类
善良比聪明更重要
RPC 系列(四十三):ExecutionQueue 详解 RPC 系列(四十三):ExecutionQueue 详解
类似于 kylin 的 ExecMan,bthread::ExecutionQueue 提供了异步串行执行的功能。ExecutionQueue 的相关技术最早使用在 RPC 中实现多线程向同一个 fd 写数据,在 r31345 之后加入到了
2024-06-25
RPC 系列(四十二):从雪崩看限流 RPC 系列(四十二):从雪崩看限流
“雪崩”指的是访问服务集群时绝大部分请求都超时,且在流量减少时仍无法恢复的现象。下面解释这个现象的来源。 单一服务:过载但可恢复当流量超出服务的最大 qps 时,服务将无法正常服务;当流量恢复正常时(小于服务的处理能力),积压的请求会被处理
2024-06-18
RPC 系列(四十一):自适应并发限流 RPC 系列(四十一):自适应并发限流
服务的处理能力是有客观上限的。当请求速度超过服务的处理速度时,服务就会过载。如果服务持续过载,会导致越来越多的请求积压,最终所有的请求都必须等待较长时间才能被处理,从而使整个服务处于瘫痪状态。 与之相对的,如果直接拒绝掉一部分请求,反而能够
2024-06-11
RPC 系列(四十):Backup Request 策略 RPC 系列(四十):Backup Request 策略
有时为了保证可用性,需要同时访问两路服务,哪个先返回就取哪个。在 brpc 中,这有多种做法。 在 Channel 中开启 backup requestChannel 开启 backup request 后,会先向其中一个 server 发
2024-06-04
RPC 系列(三十九):brpc 的一致性哈希 RPC 系列(三十九):brpc 的一致性哈希
一些场景希望同样的请求尽量落到一台机器上,比如访问缓存集群时,我们往往希望同一种请求能落到同一个后端上,以充分利用其上已有的缓存,不同的机器承载不同的稳定 working set;而不是随机地散落到所有机器上,那样的话会迫使所有机器缓存所有
2024-05-28
RPC 系列(三十八):lalb 自适应负载均衡 RPC 系列(三十八):lalb 自适应负载均衡
LALB 全称 Locality-aware load balancing,是一个能把请求及时、自动地送到延时最低的下游的负载均衡算法,特别适合混合部署环境。该算法产生自 DP 系统,现已加入 brpc。 为什么需要 LALB最常见的分流算
2024-05-21
RPC 系列(三十七):brpc 的负载均衡 RPC 系列(三十七):brpc 的负载均衡
上游一般通过命名服务发现所有的下游节点,并通过多种负载均衡方法把流量分配给下游节点。当下游节点出现问题时,它可能会被隔离以提高负载均衡的效率。被隔离的节点会定期被健康检查,成功后重新加入正常节点。理解「命名服务 + 负载均衡 + 健康检查」
2024-05-14
RPC 系列(三十六):brpc 的组合通道 RPC 系列(三十六):brpc 的组合通道
随着服务规模的增大,对下游的访问流程会越来越复杂,其中往往包含多个同时发起的 RPC 或有复杂的层次结构。但这类代码的多线程陷阱很多,用户可能写出了 bug 也不自知,复现和调试也比较困难。而且实现要么只能支持同步的情况,要么得为异步重写一
2024-05-07
RPC 系列(三十五):brpc Client 全解 RPC 系列(三十五):brpc Client 全解
本文对应的示例是 example/echo_c++ 中的 client 端代码。 Client 指发起请求的一端,在 brpc 中没有对应的实体,取而代之的是 brpc::Channel,它代表和一台或一组服务器的交互通道。Client 和
2024-04-30
RPC 系列(三十四):brpc Server 的调试方法 RPC 系列(三十四):brpc Server 的调试方法
工作线程是否够用查看 /vars/bthread_worker_count 和 /vars/bthread_worker_usage,分别是工作线程的个数和正在被使用的工作线程个数。如果 usage 和 count 接近,说明线程不够用了。
2024-04-23
RPC 系列(三十三):brpc 的连接管理 RPC 系列(三十三):brpc 的连接管理
/connections 服务可以查看所有的连接。一个典型的页面如下。 server 端的连接(server_socket_count: 5): CreatedTime RemoteSide SSL Protocol fd Bytes
2024-04-16
RPC 系列(三十二):brpc 的 vars 变量 RPC 系列(三十二):brpc 的 vars 变量
bvar 是多线程环境下的计数器类库,方便记录和查看用户程序中的各类数值,它利用了 thread local 存储减少了 cache bouncing,相比 UbMonitor(百度内的老计数器库)几乎不会给程序增加性能开销,也快于竞争频繁
2024-04-09
1 / 3