go高性能服务器开发书籍,高性能服务器设计

最近看网课的时候学习到了几篇专门讲解高性能服务器设计的切入点,结合demo代码在此进行总结。

1.代码逻辑异步设计

异步是一种开发设计的思想,异步设计代码可以解决同步逻辑中可能出现的某一个流程需要进行io等待等操作,但后续流程并不完全需要等阻塞掉的流程返回结果也可以执行时,让后续逻辑代码异步执行,无需等待阻塞流程返回即可执行后续逻辑。这样可以充分利用cpu,防止服务器明明cpu大部分之间都在空闲状态但因为io等待的时间较长导致吞吐率下降。

2.使用高性能IO

即使用io多路复用这种同步非阻塞的io模型,提高服务器的io处理效率,虽然多路复用的io模型也是同步的io需要进行等待,但这个模型可以一个线程处理多个io请求,而不用一个请求生成一个线程去处理。

3.高性能序列化

在网络中数据都是以字节流的形式进行传输,所以设计与使用一种性能更高的序列化方式对于性能也有很大的提高

4.网络传输协议

在网络传输中使用双工通信协议可以获得比单工通信更高的吞吐量

5.Demo程序

因此结合上面的技术点,我写了一个demo程序,逻辑是两位大爷在街上碰到进行对话。这里对反应了上面得设计思想得地方进行总结

首先是序列化协议的设计,这里设计了一种专用的序列化方案,即直接将对象按照固定的字段顺序进行序列化,大大减少了序列化后的字节数,虽然适用性不高,但是却可以有更好的性能

952fadaf8c76e04d265eb0f1dd44429a.png

429e302e08b51fd9332c2bd88197f344.png

然后是异步逻辑的设计,这里在接收到消息进行回复时直接使用golang中的routine完成io写入的操作,无需等待写入完成就可以进行下一条消息的接收。

1dbed8a8a7db9a154acdc15eafbd8cc5.png

最后是双工通信方式,无论是客户端还是服务端都可以同时进行消息的接收和回复,而不是单工通信中一次通信只有一方在发送一方在接收,大大提高了通信的效率

04d7b4c664daeed3ea45527b516c93e3.png

有疑问加站长微信联系(非本文作者)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值