1. 程式人生 > >談談jetty response模型

談談jetty response模型

1)jetty 響應的概念模型

  • SelectChannelEndPoint: 底層的socket的封裝,代表每次請求對應的網路連線(偏網路底層)
  • AsyncHttpConnection:代表每次連線(偏上層一點),管理相關的request,response,HttpParser,HttpGenerator例項
  • HttpParser:請求解析
  • HttpGenerator:負責最終的response生成
  • Response:不解釋
  • Request:不解釋
  • JettyServer: servlet容器,負責處理servlet相關邏輯

2)請求的例項化


  • ​select執行緒感知到網路請求於是開始初始化途中的各個相關類的例項
  • 最後將請求封裝成一個endpoint例項丟入worker執行緒的佇列中的等待處理

3)jetty 整體的響應流程


  •  worker執行緒從請求佇列獲取請求 
  • 請求(底層是個SelectChannelEndPoint)開始處理 
  • SelectChannelEndPoint呼叫相關的AsyncHttpConnection進行處理
  • AsyncHttpConnection呼叫HttpParser解析請求
  • AsyncHttpConnection呼叫servlet容器處理請求(真正的業務處理)
  • servlet處理完畢處理,AsyncHttpConnection開始呼叫Response處理響應

4)在servlet中呼叫write/flush的底層實現

樣例程式碼:

PrintWriter out = response.getWriter();
out.write(request.getParameter("id"));
out.flush();

  • servlet中呼叫write底層會呼叫HttpGenerator的addContent方法
  • addContent會將內容填充到HttpGenerator的_content,_content內容會被拷貝到內部buffer,如果超過內部buffer的長度就會自動flush
  • servlet中呼叫write底層會呼叫HttpGenerator的flushBuffer,此操作會觸發真正的網路流,下一節會具體談

5)Response.complete到底幹了什麼


  • 呼叫AsyncHttpConnection的completeResponse
    • 呼叫HttpGenerator生成header內容
    • 呼叫HttpGenerator生成content內容
  • 一旦reponse header和response content完成,開始flush
  • 會將header buffer和content buffer傳入SelectChannelEndPoint的gatheringFlush做向量IO
  • 最終還是呼叫底層socket完成網路響應

相關推薦

談談jetty response模型

1)jetty 響應的概念模型​SelectChannelEndPoint: 底層的socket的封裝,代表每次請求對應的網路連線(偏網路底層)AsyncHttpConnection:代表每次連線(偏上層一點),管理相關的request,response,HttpParser

Jetty NIO模型

概述 jetty NIO是典型reactor模型,如下圖所示: 即:mainReactor負責監聽server socket,接受新連線,並將建立的socket分派給subReactor。subReactor負責多路分離已連線的socket,讀寫網路資料,扔給worker

談談機器學習模型的可解釋性

隨著AI和機器學習的發展,越來越多的決策會交給自動化的機器學習演算法來做。但是當我們把一些非常重要的決定交給機器的時候,我們真的放

談談你對CSS盒模型的認識?

ive 一個 box overflow spl oat 方式 錯亂 wid 任何一個網頁的搭建都離不開盒模型的堆砌。應該說css模型是web的一個根基,最後呈現出來的效果不同無非就是在高寬、內容與背景刪的區別而已。 那麽CSS模型有什麽認識的呢? 首先,css盒模型有幾種呢

BAT面試題9:談談判別式模型和生成式模型

BAT面試題9:談談判別式模型和生成式模型? https://mp.weixin.qq.com/s/X7zWJCMN7gbCwqskIIpLcw 判別方法:由資料直接學習決策函式 Y = f(X),或者由條件分佈概率 P(Y|X)作為預測模型,即判別模型。 生成

談談Word2Vec的CBOW模型

0x00 背景 最近在做畢設,需要使用Google的word2vec。查閱了相關資料,總結後,寫下這篇。 0X01 簡介 word2vec是Google與2013年開源推出的一個用於獲取word vecter的工具包,利用神經網路為單詞尋找一個連續

理解HTTP協議的Request/Response(請求響應)模型

    我們知道HTTP協議是一種無狀態的協議,及客戶端和伺服器端不需要建立持久的連結。客戶端和伺服器的連結是基於一種請求應答模式。及客戶端和伺服器建立一個連結,客戶端提交一個請求,伺服器端收到請求後返回一個響應,然後二者就斷開連結。     這裡我們比較熟悉的一個案例是一個多圖網頁的瀏覽。     1。建

【NLP】驀然回首:談談學習模型的評估系列文章(三)

作者:白寧超 2016年7月19日19:04:51 摘要:寫本文的初衷源於基於HMM模型序列標註的一個實驗,實驗完成之後,迫切想知道採用的序列標註模型的好壞,有哪些指標可以度量。於是,就產生了對這一專題進度學習總結,這樣也便於其他人蔘考,節約大家的時間。本文依舊旨在簡明扼要梳理出模型評估核心指標,

【NLP】驀然回首:談談學習模型的評估系列文章(二)

作者:白寧超 2016年7月19日10:24:24 摘要:寫本文的初衷源於基於HMM模型序列標註的一個實驗,實驗完成之後,迫切想知道採用的序列標註模型的好壞,有哪些指標可以度量。於是,就產生了對這一專題進度學習總結,這樣也便於其他人蔘考,節約大家的時間。本文依舊旨在簡明扼要梳理出模型評估核心指標,

【NLP】驀然回首:談談學習模型的評估系列文章(一)

作者:白寧超 2016年7月18日17:18:43 摘要:寫本文的初衷源於基於HMM模型序列標註的一個實驗,實驗完成之後,迫切想知道採用的序列標註模型的好壞,有哪些指標可以度量。於是,就產生了對這一專題進度學習總結,這樣也便於其他人蔘考,節約大家的時間。本文依舊旨在簡明扼要梳理出模型評估核心指標,

【Pig原始碼分析】談談Pig的資料模型

1. 資料模型 Schema Pig Latin表示式操作的是relation,FILTER、FOREACH、GROUP、SPLIT等關係操作符所操作的relation就是bag,bag為tuple的集合,tuple為有序的field列表集合,而field表示資料塊(A field is a piece of

談談request和response的頁面跳轉

jsp或Servlet都會用到頁面跳轉,可以用request.getRequestDispatcher("p3.jsp").forward(request,response);這種方法稱為轉發,位址列上的URL不會改變;response.sendRedirect("p3.js

談談領域模型的那些事兒 之 從領域獲取知識

前言:你寫過用例模型嗎?也許有;你寫過領域模型嗎?也許還沒有。在這裡,我們可以嘗試寫寫領域模型,看看它的作用、帶給我們的好處。 隨著RUP在中國的傳播,人們開始嘗試用RUP統一過程來指導軟體的設計和開發,但這些嘗試並不成功。比較普遍的,大家都開始使用用例模型來進行需求階段的

和大家談談數學模型之美

“我接觸數學模型是從一本書開始的。那時候,還是改革開放的初期,翻譯者們帶回國《數學模型》這本書,

數學之美 系列十四 談談數學模型的重要性

糾正地心說錯誤不是靠在托勒密四十個圓的模型上再多套上幾個圓,而是進一步探索真理。哥白尼發現,如果以太陽為中心來描述星體的執行,只需要 8-10 個圓,就能計算出一個行星的運動軌跡,他提出了日心說。很遺憾的事,哥白尼正確的假設並沒有得到比托勒密更好的結果,哥白尼的模型的誤差比托勒密地要大不少。這是教會和當時人們

談談jetty8 的io模型

幾個重要的概念Connector: jetty網路介面的封裝,用於監聽網路連線SelectorManager:底層selector封裝,管理網路事件,主要是向底層selector註冊感興趣的網路事件,並從selector中輪詢出準備好的事件EndPoint:socket的封裝

談談如何建立資料模型:

何謂資料模型呢?王珊老師告訴我們:資料模型就是現實世界的模擬.我的理解資料模型設計就是資料庫的設計那麼優秀的資料模型應該是怎樣的呢?她應該滿足3個要求:一是能夠比較真實的模擬現實世界二是容易為人所理解三是便於在計算機上實現。資料模型的建立一般分為四步:1 需求分析 2 概念模

Java面試題之談談reactor模型

圖片 tps java面試題 and 驅動 net china inf java面試 reactor是什麽? 事件驅動 可以處理一個或多個輸入源 通過Service Handle同步的將輸入事件采用多路復用分發給相應的Request Handler(一個或多個)處

談談lucene的儲存模型

現在除了lucene的倒排索引儲存方式沒有分析之外,對於document、詞向量、docValues的儲存方式都已經分析過了,本篇

談談模型融合之一 —— 整合學習與 AdaBoost

前言 前面的文章中介紹了決策樹以及其它一些演算法,但是,會發現,有時候使用使用這些演算法並不能達到特別好的效果。於是乎就有了整合學習(Ensemble Learning),通過構建多個學習器一起結合來完成具體的學習任務。這篇文章將介紹整合學習,以及其中的一種演算法 AdaBoost。 整合學習 首先先來介紹下