分布式缓存学习笔记(四)—— 用pipelining加速性能

我们会在本章介绍 pipelining 技术的原理研究客户端如何通过pipelining 技术来加速自己的吞吐量。

pipelining 原理

pipelining 技术可以在不改变服务端实现的情况下加速客户端的性能,其原理见图4-1。
如图4-1所示,pipelining是一种网络技术,支持pipelining的客户端可以将多个请求通过同一个 TCP 连接连续不断地发送给服务端而不需要等待服务端的响应。
在这里插入图片描述
不使用 pipelining技术的客户端和服务端之间的互动是乒乓式的,客户端会等待服务端返回第一个请求的响应之后才发送第二个请求,有一部分时间被浪费在一来一回等待的网络开销上。令Ts等于客户端发送请求到服务端的时间,Tr 等于服务端发送响应到客户端的时间,Tp 等于服务器处理请求的时间,那么客户端收到第N个请求响应需要NX(Ts+Tr+Tp),服务器真正用于处理请求的时间是 N * Tp 总共花费在网络传输上的时间是 NX(Ts+Tr),也就是N个请求和响应在网络上来一回的时间。

使用pipelining技术的客户端将会一次性发送多个请求给服务端,服务端集中处理和发回响应。客户端收到第N个请求响应需要 Ts+Tr+N*Tp,服务器处理请求的时间还是 N*Tp,总共花费在网络传输上的时间只有 Ts+Tr。所以 N 越大pipelining 技术能带来的性能提升就越大。N 表示一个批次发送的请求数量,我们将N称为pipeline的长度。

小结

pipelining技术能给我们的客户端性能带来一定的提升,而且pipeline长度越高,性能提升的幅度越大。使用同步的 pipelining 技术,在测试中特意积攒请求,直到满足 pipeline 长度要求后才发出去,然后一一等待服务端的响应。

真实客户端在正常使用缓存的时候是不需要积攒请求的。只要上层应用有请求过来,客户端就可以发出,响应的接收通常会有其他 goroutine (或线程)负责。

无须发送方等待响应。这种行为是 pipelining 技术的异步实现,性能更好,更适用于生产环境。

在不改变服务端实现的前提下,pipelining 技术是客户端赖以提升性能的法宝。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值