百度架构师高并发web架构分析

本文主题是高性能的Web架构,着重于从如何打造快速响应、应对高并发、高吞吐、让用户感受到非常快的体验的角度来进行阐述的,实际上,对于一个好的 Web 架构来说,除了高性能这个指标外,还必须兼顾高可用、可伸缩、可拓展、安全等多个方面,期望本文的介绍能给对设计高性能架构感兴趣的同行学者提供一定的参考。

高性能web架构主要保证程序的高可用性和高并发性.

高可用就是 保证程序在99.99%的情况下可以使用,不会因为单机节点故障整体崩溃.

高并发说到底也是为了高可用服务.保证在大量并发的时候服务不会宕机.

高性能web架构主要体现在以下方面

  1. 数据库读写分离,因为大部分应用都是读多于写,可以配置多台读服务器, (目前mysql不支持多台写服务器,不过可以用其他技术解决)

  2. 缓存常用数据,把访问量非常多的数据,缓存到分布式缓存中. 如memcached,redis 等常用缓存方案

  3. 单独文件服务器集群,减少对应用服务器压力

  4. 单独图片服务器集群, 减少对应用服务器压力

  5. web服务器和应用服务器集群分离. web 服务器并发要比应用服务器并发高很多. 缓解应用服务器压力.

  6. 应用服务器集群,做负载均衡,对话共享.应用服务器目前都支持集群,

  7. 服务器反向代理

Web的本意是蜘蛛网和网的意思,在网页设计中我们称为网页的意思。现广泛译作网络、互联网等技术领域。它的表现形式可以是通过浏览器访问的网站、内嵌H5、或者后端提供的RESTful API等,本文指的Web泛指通过Web技术提供的互联网服务,不仅限于网站。关于架构,百科上的定义是“是有关软件整体结构与组件的抽象描述,用于指导大型软件系统各个方面的设计”。本文将从新的的角度、以及如何利用新技术等分析和阐述如何打造高性能的 Web 架构。

网络

Web运行原理

Web 前端浏览器运行机制:

Web 后端服务架构运行机制:

高负载高并发网站架构分析

通过以上两张图可以清晰看出不管是在 Web 前端架构运行机制还是 Web 后端架构中,网络已经成了必不可少且非常重要的地位。用户通过网络访问 Web 服务器,Web 后端架构中各种服务之间通过网络来进行通信和协作,网络是现代 Web 应用的基石,因此在谈到高性能架构时候不得不从网络谈起。

协议对性能的影响

TCP

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内,另一个重要的传输协议。在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。

下面简要介绍几个机制:

  • 三次握手:TCP是因特网中的传输层协议,使用三次握手协议建立连接。当主动方发出SYN连接请求后,等待对方回答SYN+ACK,并最终对对方的 SYN 执行 ACK 确认。这种建立连接的方法可以防止产生错误的连接。

简单的说就是建立TCP的网络连接本身至少需要3个来回(在正式发送数据之前),如果单程需要30ms,建立连接操作就需要 90ms(毫秒)。

  • 慢启动:在连接建立后,这时我们开始传输数据,但这里存在一个问题,我们传送多少数据合适的问题,如果传的太多了,对方可能无法处理(入网带宽过小、或者计算机正在干别的操作被占用等),如果多对方无法处理的数据给整个互联网其实是占用不必要的堵塞和占用,TCP为了解决问题有一个机制叫慢热启动。慢启动的意思是,刚刚开始传输数据的时候,一点一点地提速,不要一上来就像那些特权车一样霸道地把路占满。这么说还是不太直观,下面举个例子: 服务器的出口带宽是100MB,用户的入网带宽是20MB,按照以上数据来说,用户可以接受的最大下载数据量是 2.5MB/S,但是为了整个网络社会的和谐,初始的时候的时候服务器和用户都不会以 2.5MB/S 以起始像对方传输数据,而是以1460字节开始(MSS),并且随着对方的ACK回应包这个可以传输的数量乘以指数增长,直到达到最高数(ssthresh);如果发生丢包,这个传输量将会以指数级下降;如果网络被闲置,哪怕刚才已经达到了最高的 2.5MB/S速度,将又会从最小值开始试探性传输数据(实际机制比这个更复杂涉及各种情况判断变换算法)。

  • 拥塞窗口:TCP拥塞控制中的一个概念:拥塞窗口是卫星通信在因特网中防止通信拥塞的一种措施,它是在发端采用了一种“拥塞避免”算法和“慢速启动”算法相结合的机制。“拥塞窗口”就是“拥塞避免”的窗口,它是一个装在发送端的可滑动窗口,窗口的大小是不超过收端确认通知的窗口。“慢速启动”是在连接建立后,每收到一个来自收端的确认,就控制窗口增加一个段值大小,当窗口值达到“慢速启动”的限值后,慢速启动便停止工作,避免了网络发生拥塞

  • 丢包重传:TCP为了保证不发生丢包,就给每个包一个序号,同时序号也保证了传送到接收端实体的包的按序接收。然后接收端实体对已成功收到的包发回一个相应的确认(ACK);如果发送端实体在合理的往返时延(RTT)内未收到确认,那么对应的数据包就被假设为已丢失将会被进行重传。这里说的是对于任何一个发送的数据包,对方都需要回应一个确认包,表示数据收到了,也就是哪怕正常网络情况下,每一次数据包发送都意味至少的两次网络数据交换。这是一个很好从机制,但是只要发现丢包就会导致重传,那么如果用户离你比较远或者访问你的网络服务中间任意节点不稳定的话,那将会导致频繁的重新重复发送同一份数据,因此网络质量越差越不稳定,你响应用户的时间就越长,因为大部分时间可能耗费在重复给用户发送数据上。

HTTP

不管是服务器之间近距离传输通信,还是用户请求网页如果使用 TCP 协议都要受以上流程和机制影响。TCP就在OSI模型的第四层传输层,HTTP运行在第七层应用层,由于分层是单向依赖的,所以HTTP必然依赖于TCP协议来运行,所有 TCP 有的问题同样 HTTP 全部都会继承。同时HTTP在此基础上也有自己的协议规则,比如说浏览器最大和服务器建立的连接数: HTTP协议也有非常多的规则,其中不同的浏览器实现也并非完全一样,在不同的HTTP版本下,也有实现上的差别,下图就是每个浏览器对应的可以同时发起请求的个数,意味着如果能同时请求的文件数,一般网页平均有90个文件,如果每次只能请求2~6个文件,那效率肯定不会很高。

在某些浏览器以及不同的HTTP版本下,HTTP连接机制也不一样&

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值