go 常用第三方包

hystrix-go

hystrix 是一个容错库,旨在隔离指向远程系统,服务和第三方的请求,杜绝练级故障,并在复杂的分布式系统中实现弹性。

github地址:[https://github.com/afex/hystrix-go]

特点

  1. hystrix作用在客户端,客户端程序依赖hystrix相关的第三方包,使得客户端与所依赖的服务,形成隔离(goroutine的隔离)。依赖服务的延迟与失败变的可控。保护调用者goroutine的执行。
  2. 避免了分布式系统中,单个组件的失败导致的级联影响。
  3. 快速失败,迅速恢复。 hystrix有快速失败机制,单个组件服务失败率到一定程度后,再请求,会直接响应失败。再这之后,会有重试机制。减少系统在错误服务调用上的开销。
  4. 降级应用

hystrix的设计原则

  1. 防止任何单个依赖服务耗尽所有用户线程

  2. 直接响应失败,而不是一直等待

  3. 提供错误返回接口,而不是让用户线程直接处理依赖服务抛出的异常

  4. 使用隔离或熔断技术来降低并限制单个依赖对整个系统造成的影响

demo

package main

import (
	"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 main

import (
	"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 in
	log.Fatal(http.ListenAndServe(":8000", r))
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Go语言中,安装第三方需要下载、引入和版本管理。你可以使用以下步骤来安装第三方: 1. 首先,在命令行中使用`go get`命令下载第三方。例如,如果要安装github.com/gin-gonic/gin,可以运行以下命令:`go get github.com/gin-gonic/gin***出一个pkg文件夹,其中含你安装的。 3. 如果你无法直接在网络上安装,你可以选择离线安装的方法。首先,你需要到对应的第三方的GitHub页面(例如https://github.com/gpmgo/gopm)下载源码压缩文件。 4. 将下载的源码压缩文件解压到对应的文件夹,并按照相应的目录结构进行构建。 5. 对于手动安装,你可以使用`go install`命令来安装。例如,如果要安装github.com/gpmgo/gopm,可以运行以下命令:`go install github.com/gpmgo/gopm`。 需要注意的是,Go语言对于导入的有一定的规范。所有import的必须在%GOPATH路径下,如果直接导入源码路径下的,编译会报错。因此,如果新加入的第三方与工程目录脱离,你需要在使用或编译之前将第三方所在的目录加入到$GOPATH中。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [go语言 第三方安装方法_【分享吧】Go语言第三方的使用介绍与场景应用](https://blog.csdn.net/weixin_39760650/article/details/110134234)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Golang中第三方安装方法-git](https://blog.csdn.net/yycoolsam/article/details/106194192)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值