序
本文次要钻研一下storagetapper的server
server
storagetapper/server/server.go
var server *http.Servervar mutex = sync.Mutex{}func init() { http.HandleFunc("/health", healthCheck) http.HandleFunc("/schema", schemaCmd) http.HandleFunc("/cluster", clusterInfoCmd) http.HandleFunc("/table", tableCmd) http.HandleFunc("/config", configCmd) http.HandleFunc("/", indexCmd)}//StartHTTPServer starts listening and serving traffic on configured port and sets up http routes.func StartHTTPServer(port int) { state.EmitRegisteredTablesCount() mutex.Lock() server = &http.Server{Addr: fmt.Sprintf(":%d", port), Handler: nil} log.Debugf("HTTP server is listening on %v port", port) mutex.Unlock() err := server.ListenAndServe() if err != nil && err != http.ErrServerClosed { log.E(err) }}//Shutdown gracefully stops the serverfunc Shutdown() { mutex.Lock() defer mutex.Unlock() if server == nil { return } ctx, cancel := context.WithCancel(context.Background()) defer cancel() log.E(server.Shutdown(ctx)) server = nil}
storagetapper的server提供了StartHTTPServer、Shutdown办法;其init办法注册了/health
,/schema
,/cluster
,/table
,/config
,/
这几个url
healthCheck
storagetapper/server/server.go
//healthCheck handles call to the health check endpointfunc healthCheck(w http.ResponseWriter, r *http.Request) { w.Header().Add("Content-Type", "text/plain") w.WriteHeader(http.StatusOK) if _, err := w.Write([]byte("OK")); err != nil { log.Errorf("Health check failed: %s\n", err) }}
healthCheck返回200,文本内容为OK
小结
storagetapper的server提供了StartHTTPServer、Shutdown办法;其init办法注册了/health
,/schema
,/cluster
,/table
,/config
,/
这几个url。
doc
- storagetapper