mysql的MHA高可用
阿新 • • 發佈:2020-12-06
目錄
HTTP簡介
HTTP是Hyper Text Transfer Protocol(超文字傳輸協議)的縮寫,用於瀏覽器與全球資訊網(World Wide Web)伺服器之間進行超文字傳送的協議。
HTTP是一個使用TCP作為傳輸層協議。
HTTP工作原理
HTTP用於C-S(客戶端-伺服器)架構。瀏覽器作為客戶端向Web伺服器傳送請求,Web伺服器收到請求後返回響應給瀏覽器。
常用的Web伺服器有:Apache、ISS等。
HTTP的預設埠號為80。
HTTP協議的三個特點:
- 無連線:“無連線並不是真的無連線”,而是每次連線只處理一個請求。請求時建立連線,請求完釋放連線 ,伺服器處理完客戶端的請求,並收到應答後,即斷開連線。這種方式可以節省傳輸時間。當然,HTTP也提供了
Keep-Alive
功能來避免重複建立連線。 - 允許傳輸任意型別的資料物件:資料傳輸的格式由MIME指定。
- 無狀態:無狀態是指HTTP對事物處理沒有記憶能力,伺服器不儲存客戶端的狀態。缺少狀態即意味著如果後續處理需要前面的資訊,則它必須重傳,這樣可能導致每次連線傳送的資料量增大。
Cookie
技術與Session
技術用於保持HTTP連線狀態。
HTTP協議的通訊流程:
參考資料:Cookie與Session、HTTP協議
HTTP訊息結構
請求訊息
請求訊息自客戶端發往伺服器,請求訊息由以下四個部分構成:
- 請求行(request line)
- 請求頭部(header)
- 空行
- 請求資料
響應訊息
HTTP響應由四個部分構成:
- 狀態行
- 訊息報頭(header)
- 空行
- 響應正文
例項
請求報文:
GET /hello.txt HTTP/1.1User-Agent: curl/7.16.3 libcurl/7.16.3 OpenSSL/0.9.7l zlib/1.2.3Host: www.example.com
Accept-Language: en, mi
響應報文:
HTTP/1.1 200 OK
Date: Mon, 27 Jul 2009 12:28:53 GMT
Server: ApacheLast-Modified: Wed, 22 Jul 2009 19:15:56 GMT
ETag: "34aa387-d-1568eb00"Accept-Ranges: bytes
Content-Length: 51Vary: Accept-EncodingContent-Type: text/plain
HTTP請求方法
根據HTTP標準,HTTP提供了多種請求方法,
HTTP1.0定義了三種請求方法:GET, POST和HEAD方法。
HTTP1.1新增了六種請求方法:OPTION, PUT, PATCH, DELETE, TRACE和CONNECT方法。
方法 | 描述 |
---|---|
GET | 請求指定頁面資訊,並返回主體 |
POST | 向指定資源提交資料處理請求。資料被包含在請求體中。POST請求可能導致新資源的建立或已有資源的修改 |
HEAD | 類似於GET請求,不返回響應主體,只用於獲取報頭(header) |
PUT | 用從客戶端向伺服器傳送的資料取代指定的文件內容 |
CONNECT | HTTP/1.1協議中預留給能夠將連線改為管道方式的代理伺服器 |
DELETE | 請求伺服器刪除指定的頁面 |
OPTIONS | 允許客戶端檢視伺服器的效能 |
TRACE | 回顯伺服器收到的請求,主要用於測試或診斷 |
PATCH | 對PUT方法的補充,用來對已知資源進行區域性更新 |
後來又新增了6種請求方法:
方法 | 描述 |
---|---|
MOVE | 請求伺服器將指定的頁面移至另一個網路地址 |
COPY | 請求伺服器將指定的頁面拷貝至另一個網路地址 |
LINK | 請求伺服器建立連結關係 |
UNLINK | 斷開連結關係 |
WRAPPED | 允許客戶端傳送經過封裝的請求 |
Extension-method | 在不改動協議的前提下,可增加另外的方法 |
參考資料:GET方法與POST方法的區別
HTTP 響應頭資訊
下面這個表格是介紹了HTTP的一些響應頭資訊:
應答頭 | 說明 |
---|---|
Allow | 伺服器支援的請求方法(GET, POST...) |
Content-Encode | 文件的編碼方式。只有在解碼後才可以得到Content-Type指定的型別內容 |
Content-Length | 表示內容長度。只有在瀏覽器使用持久HTTP連線時才需要該資料 |
Content-Type | 表示後面的文件屬於什麼MIMEl型別 |
Date | 當前的GMT時間 |
Expires | 應該在什麼時候認為文件已過期,從而不再快取它 |
Last-Modify | 上次修改的時間 |
Location | 表明了客戶應該到哪裡取提取文件 |
Refresh | 表示瀏覽器應該在多久時間後重新整理文件,以秒計 |
Server | 伺服器的名字 |
WWW-Authenticate | 客戶應該在Authenticate頭中提取什麼型別的授權資訊 |
HTTP狀態碼
1xx(臨時響應)
返回碼 | 功能 | 說明 |
---|---|---|
100 | 繼續 | 表示伺服器已收到請求的第一部分,正在等待其餘部分 |
101 | 切換協議 | 請求者已要求伺服器切換協議,伺服器已確認並準備切換 |
2xx(成功)
返回碼 | 功能 | 說明 |
---|---|---|
200 | 成功 | 伺服器已成功處理了請求。通常,這表示伺服器提供了請求網頁 |
201 | 已建立 | 請求成功並且伺服器建立了新的資源 |
202 | 已接受 | 伺服器已接受請求,但尚未處理 |
203 | 非授權資訊 | 伺服器已成功處理了請求,但返回的資訊可能來自另一件事 |
204 | 無內容 | 伺服器成功處理了請求,但沒有返回任何內容 |
205 | 重置內容 | 伺服器成功處理了請求,且沒有返回任何內容(與204有所區別) |
206 | 部分內容 | 伺服器已成功處理了部分GET請求 |
3xx(重定向)
返回碼 | 功能 | 說明 |
---|---|---|
300 | 多種選擇 | 針對請求,伺服器可執行多種操作。伺服器可根據請求者(user agent)選擇一項操作,或提供操作列表供請求者選擇 |
301 | 永久移動 | 請求的網頁已永久移動到新位置。 伺服器返回此響應(對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置。 |
302 | 臨時移動 | 伺服器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。 |
303 | 檢視其他位置 | 請求者應當對不同的位置使用單獨的 GET 請求來檢索響應時,伺服器返回此程式碼。 |
304 | 未修改 | 自從上次請求後,請求的網頁未修改過。 伺服器返回此響應時,不會返回網頁內容。 |
305 | 使用代理 | 請求者只能使用代理訪問請求的網頁。如果伺服器返回此響應,還表示請求者應使用代理。 |
307 | 臨時重定向 | 伺服器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。 |
4xx(請求錯誤)
返回碼 | 功能 | 說明 |
---|---|---|
400 | 錯誤請求 | 伺服器不理解請求的語法 |
401 | 未授權 | 請求要求身份驗證。對於需要登陸的網頁,伺服器可能返回此響應 |
403 | 禁止 | 伺服器拒絕請求 |
404 | 未找到 | 伺服器找不到請求的網頁 |
405 | 方法禁用 | 禁用請求中指定的方法 |
406 | 無法使用請求的內容特性響應請求的網頁 | |
407 | 需要代理授權 | 此狀態程式碼與401(未授權)類似,但指定請求者應當授權使用代理 |
408 | 請求超時 | 伺服器等候請求時發生超時 |
409 | 衝突 | 伺服器在完成請求時發生衝突。伺服器必須在響應中包含有關衝突的值 |
410 | 已刪除 | 如果請求的資源已永久刪除,伺服器就會返回此響應 |
411 | 需要有效長度 | 伺服器不接受不含有效內容長度標頭欄位的請求 |
412 | 未滿足前提條件 | 伺服器未滿足請求者在請求中設定的某個前提條件 |
413 | 請求實體過大 | 伺服器無法處理請求,因為請求實體過大,超出伺服器的處理能力 |
414 | 請求URI過程 | 請求的URI過長(通常位網址),伺服器無法處理 |
415 | 不支援的媒體型別 | 請求的格式不受請求頁面的支援 |
416 | 請求範圍不符合要求 | 如果頁面無法提供請求的範圍,伺服器會返回此狀態程式碼 |
417 | 未滿足期望值 | 伺服器未滿足“期望”請求標頭欄位的要求 |
5xx(伺服器錯誤)
返回碼 | 功能 | 說明 |
---|---|---|
500 | 伺服器內部錯誤 | 伺服器遇到錯誤 |
501 | 尚未實施 | 伺服器不具備完成請求的功能。 |
502 | 錯誤閘道器 | 伺服器作為閘道器代理,從上游伺服器收到無效響應 |
503 | 服務不可用 | 伺服器目前無法使用 |
504 | 閘道器超時 | 伺服器作為閘道器或代理,但是沒有及時從上游伺服器收到請求 |
505 | HTTP版本不受支援 | 伺服器不支援請求中所用的HTTP協議版本 |