InfluxDB原始碼閱讀之httpd服務

2021-09-08 13:53:41 字數 3697 閱讀 3314

作業系統 : centos7.3.1611_x64

go語言版本:1.8.3 linux/amd64

influxdb版本:1.1.0

原始碼路徑: github.com/influxdata/influxdb/services/httpd

config_test.go : 配置測試

service.go :httpd服務主程式

listen.go :對***進行包裝,限制活動連線的數量

listen_test.go :對***包裝的測試

handler_test.go : 處理邏輯測試**

response_writer.go : http響應內容(支援csv、json格式)

該模組提供https服務、http服務、unixsocket服務

服務主要提供如下功能:

該結構所在檔案 : service.go

主服務結構如下:

type service struct

解釋如下:

tcp連線,用於提供http服務或https服務。

tcp伺服器繫結的服務位址及埠資訊。 對應配置檔案中的 bind-address 選項。

是否提供https服務,如果該標識為false,則提供http服務。 對應配置檔案中的 https-enabled 選項。

https證書路徑,使用https時有效。 對應配置檔案中的 https-certificate 選項。

https私鑰,使用https時有效。 對應配置檔案中的 https-private-key 選項。

用於限**務器最大連線數,該值為0時不限制。 對應配置檔案中的 max-connection-limit 選項。

error通道,暫時不知道怎麼用。

是否使用unix-socket,如果該標識為false,則不提供unix-socket服務(windows環境不適用)。 對應配置檔案中的 unix-socket-enabled 選項。

unix-socket檔案路徑,unix-socket開啟時適用。 對應配置檔案中的 bind-socket 選項。

unix_socket連線,用於提供unix_socket服務。

httpd->handler 物件

該結構所在檔案 : handler.go

snapshotter客戶端請求的資料結構如下:

解釋如下:

go語言的 net/http 庫的模式復用器。

influxdb版本資訊。

meta服務客戶端介面,指向 meta.client 結構(原始碼路徑: influxdb/services/meta/client.go), 用於操作meta資料。

database 函式 : 通過名字查詢資料庫,可用於判斷資料庫是否存在。

authenticate 函式 : 認證使用者資訊。

users 函式 :獲取系統中所有使用者的資訊。

user 函式 : 獲取系統中單個使用者的資訊。

資料查詢認證介面,指向 meta.queryauthorizer 結構(原始碼路徑: influxdb/services/meta/query_authorizer.go)。

authorizequery 函式 : 認證使用者資訊並執行資料查詢操作。

資料寫入認證介面,指向 meta.writeauthorizer 結構(原始碼路徑: influxdb/services/meta/write_authorizer.go)。

authorizewrite 函式 : 認證使用者資訊並執行資料寫入操作。

查詢執行器。

httpd服務狀態監控介面,指向 monitor.monitor 結構(原始碼路徑: influxdb/monitor/service.go)。

statistics 函式 : 統計伺服器監控資訊。

資料寫入介面,執向 coordinator.pointswriter 結構(原始碼路徑: influxdb/coordinator/points_writer.go)。

writepoints 函式 : 資料寫入功能。

httpd服務配置。

日誌相關。

日誌相關。

用於儲存httpd服務統計資訊。

該結構所在檔案 : listen.go

limitlistener是乙個***,它在任何給定時間都會限制活動連線的數量,當配置檔案中的max-connection-limit大於0的時有效。

資料結構如下:

type limitlistener struct

}

該服務在influxdb主伺服器程式(influxd)中使用,具體如下:

在config中載入配置,在server中啟動httpd服務。

好,就這些了,希望對你有幫助。

原始碼閱讀之httpd服務.rst

歡迎補充

原始碼閱讀 Glide原始碼閱讀之with方法(一)

前言 本篇基於4.8.0版本 原始碼閱讀 glide原始碼閱讀之with方法 一 原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 大多數情況下,我們使用glide 就一句 但是這一句 裡面蘊含著成噸的 with方法有以下幾個過載方法 publi...

原始碼閱讀 Glide原始碼閱讀之load方法(二)

原始碼閱讀 glide原始碼閱讀之load方法 二 原始碼閱讀 glide原始碼閱讀之into方法 三 首先,load方法有以下幾個過載方法 public requestbuilder load nullable bitmap bitmap public requestbuilder load nu...

《原始碼閱讀》原始碼閱讀技巧,原始碼閱讀工具

檢視某個類的完整繼承關係 選中類的名稱,然後按f4 quick type hierarchy quick type hierarchy可以顯示出類的繼承結構,包括它的父類和子類 supertype hierarchy supertype hierarchy可以顯示出類的繼承和實現結構,包括它的父類和...