brpc/docs/cn/case_ubrpc.md
2022-12-14 20:13:26 +08:00

2.3 KiB
Raw Permalink Blame History

背景

云平台部把使用ubrpc的模块改造为使用brpc。由于使用了mcpack2pb的转换功能这个模块既能被老的ubrpc client访问也可以通过protobuf类的协议访问baidu_stdsofa_pbrpc等

原有使用43台机器对ubrpc也有富余brpc使用3台机器即可此时访问redis的io达到瓶颈。当前流量4w qps支持流量增长考虑跨机房冗余避免redis和vip瓶颈brpc实际使用8台机器提供服务。

brpc改造后的connecter收益明显可以用较少的机器提供更优质的服务。收益分3个方面

相同配置的机器qps和latency的比较

通过逐渐缩容不断增加connecter的压力获得单机qps和latency的对应数据如下 img

机器配置cpu: 24 Intel(R) Xeon(R) CPU E5645 @ 2.40GHz || mem: 64G

混布情况同机部署了逻辑层2.0/3.0和C逻辑层均有流量

图中可以看到随着压力的增大:

  • brpc的延时增加微乎其微提供了较为一致的延时体验
  • ubrpc的延时快速增大到了6000~8000qps的时候出现queue full,服务不可用。

不同配置机器qps和延时的比较

qps固定为6500观察延时。

机器名称
cpu 24 Intel(R) Xeon(R) CPU E5645 @ 2.40GHz 24 Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz
ubrpc 8363.46us 12649.5us
brpc 3364.66us 3382.15us

有此可见:

  • ubrpc在不同配置下性能表现差异大在配置较低的机器下表现较差。
  • brpc表现的比ubrpc好在较低配置的机器上也能有好的表现因机器不同带来的差异不大。

相同配置机器idle分布的比较

机器配置cpu 24 Intel(R) Xeon(R) CPU E5645 @ 2.40GHz || mem64G

img

在线上缩容 不断增大压力过程中:

  • ubrpc cpu idle分布在35%~60%在55%最集中最低30%
  • brpc cpu idle分布在60%~85%在75%最集中最低50% brpc比ubrpc对cpu的消耗低。