• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

聊聊storagetapper的server

互联网 diligentman 2个月前 (02-28) 12次浏览

本文主要研究一下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: %sn", err)
	}
}

healthCheck返回200,文本内容为OK

小结

storagetapper的server提供了StartHTTPServer、Shutdown方法;其init方法注册了/health/schema/cluster/table/config/这几个url。

doc

  • storagetapper

展开阅读全文

gogithubsprintf

© 著作权归作者所有

举报

打赏

0


0 收藏

微信
QQ
微博

分享

作者的其它热门文章

频繁GC (Allocation Failure)及young gc时间过长分析
关于netstat的ListenOverflows等参数
2017年终总结
springboot2的hikari数据库连接池默认配置


程序员灯塔
转载请注明原文链接:聊聊storagetapper的server
喜欢 (0)