本文次要钻研一下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