这是我参与「第三届青训营 -后端场」笔记创作活动的的第4篇笔记。
业务开发搭建完成之后需要通过网络开放给用户。那么,如果网络通信质量不佳,如速度慢、延迟高、丢包问题严重的话,用户的体验就会很差。通过各种技术保证网络的通信质量是相当重要的。
HTTP
目前大部分网络通信是基于HTTP1.1协议的,但HTTP1.1协议作为一个1999年诞生的协议,许多设计上存在缺陷。如实现并发需要多个TCP连接,编码效率低,存在队头阻塞等等。
那么HTTP2协议就是一个更好的选择,其加入了头部压缩,二进制编码,比HTTP1.1有更高的数据传输率,还可以复用TCP连接,减少并发下的消耗,也解决了HTTP的队头阻塞问题,以及server push功能,减少客户端不必要的请求。
现在更新的QUIC协议,使用UDP实现,进一步改进了应用层协议,不再存在tcp队头阻塞问题,同时改进了TCP,TLS握手的效率问题,还能在应用层拔插不同的拥塞控制算法。
网络路径
在现实中,很难做到将核心机房遍布整个国家或地区,那么如果只有几个核心机房的话,一些地理位置较远的地方访问服务器时速度就有限。
那么可行的解决方法就是设置多级的机房,形成类似树状的结构,一些静态资源就可以通过边缘机房获取,也就是CDN(content delivery network)技术。
针对需要访问数据中心的业务行为,则可以通过DCDN(Dynamic Content Delivery Network),让客户端访问边缘机房,通过预热好的连接路由穿透到核心机房,提升访问速度。
容灾
服务要做好容灾也是相当重要的,否则经常挂掉,难以保证业务的稳定性。
容灾即是要在故障发生时及时感知,能够自动切换主机或降级,并能够及时恢复服务。
在发生故障的时候,要做到先止损再排查,这样既可以保证用户体验也最小化损失。要做好故障处理预案,即使代码写得天衣无缝,仍然会存在物理上的事故导致服务出现问题。