go 常用第三方包
hystrix-go
hystrix 是一個容錯庫,旨在隔離指向遠程系統,服務和第三方的請求,杜絕練級故障,并在復雜的分布式系統中實現彈性。
github地址:[https://github.com/afex/hystrix-go]
特點
hystrix的設計原則
防止任何單個依賴服務耗盡所有用戶線程
直接響應失敗,而不是一直等待
提供錯誤返回接口,而不是讓用戶線程直接處理依賴服務拋出的異常
使用隔離或熔斷技術來降低并限制單個依賴對整個系統造成的影響
demo
package mainimport ("fmt""net/http""time""github.com/afex/hystrix-go/hystrix" )func main() {hystrix.Go("get_baidu", func() error {// talk to other services_, err := http.Get("https://www.baidu.com/")if err != nil {fmt.Println("get error")return err}return nil}, func(err error) error {fmt.Println("get an error, handle it")return nil})time.Sleep(2 * time.Second) // 調用Go方法就是起了一個goroutine,這里要sleep一下,不然看不到效果 }gorilla/mux
gorilla/mux實現了一個請求路由器和調度程序,用于將傳入的請求與其各自的處理程序進行匹配。
特點
1、支持restful風格
2、支持正則
3、支持域名限定
4、支持middleware
缺點:
1、暫無支持group的概念
demo
package mainimport ("fmt""log""net/http""github.com/gorilla/mux" )func YourHandler(w http.ResponseWriter, r *http.Request) {w.Write([]byte("Gorilla!\n")) }func ArticlesCategoryHandler(w http.ResponseWriter, r *http.Request) {vars := mux.Vars(r)w.WriteHeader(http.StatusOK)fmt.Fprintf(w, "Category: %v\n", vars["id"]) }func main() {r := mux.NewRouter()r.HandleFunc("/", YourHandler)// Routes consist of a path and a handler function.r.HandleFunc("/products/{id:[0-9]+}", ArticlesCategoryHandler).Host("127.0.0.1").Methods("GET")// Bind to a port and pass our router inlog.Fatal(http.ListenAndServe(":8000", r)) }總結
- 上一篇: Maven发布轻量二方包
- 下一篇: 用实战项目经验告诉你什么是二方包!