聊聊storagetapper的server

本文主要研究一下storagetapper的server

server

storagetapper/server/server.go

var server *http.Server
var 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 server
func 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 endpoint
func 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值