[TOC]

响应式web及原有阻塞请求

响应的是客户端。客户端的请求,可以不用阻塞直接得到服务器端的响应。
后台的业务异步处理,再通知客户端。使用的协议是websocket,可以主动向客户端返回请求

原有阻塞式web

原有的实现了servlet标准的tomcat的阻塞式一请求一线程,虽然tomcat的IO模型可以是javaNiO,但是其处理业务的线程依然是一request一线程阻塞处理完所有的业务再返回response

http请求如果想做响应式web

因为不能主动由服务器端通知客户端,所有需要客户端主动发起轮询或者长轮询。
例如发送MQ后,客户端想要得到结果,需要再去向服务器端发送请求,两种轮询如下,

  1. 轮询
    1. 用ajax发送轮询,每秒一次,询问是否有返回
    2. serverSentEvent。 ```javascript ```

      1. 长轮询,服务器端hold连接,90秒内都可以返回,没有返回,客户端再请求。

      http 的keep-alived

      1. 1.0之前每次http请求都会建立一个TCP连接,返回response后TCP连接断开
      2. 1.1之后有keep-alived属性,可以用一个TCP连接发送和接收多次Request和response.不过依旧只能一次一次发送返回,不能一次发多个request.因为http是无状态的协议。

      响应式WEB

      image.png
      技术栈如上图左边