region

package
v7.25.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 13, 2024 License: MIT Imports: 27 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	ErrUnrecognizedServiceName = errors.New("unrecognized service name")
)

Functions

This section is empty.

Types

type AllRegionsProviderOptions

type AllRegionsProviderOptions struct {
	// 使用 HTTP 协议
	UseInsecureProtocol bool

	// 压缩周期(默认:60s)
	CompactInterval time.Duration

	// 持久化路径(默认:$TMPDIR/qiniu-golang-sdk/regions_v4_01.cache.json)
	PersistentFilePath string

	// 持久化周期(默认:60s)
	PersistentDuration time.Duration

	// 单域名重试次数(默认:2)
	RetryMax int

	// 主备域名冻结时间(默认:600s),当一个域名请求失败(单个域名会被重试 RetryMax 次),会被冻结一段时间,使用备用域名进行重试,在冻结时间内,域名不能被使用,当一个操作中所有域名竣备冻结操作不在进行重试,返回最后一次操作的错误。
	HostFreezeDuration time.Duration

	// HTTP 客户端,如果不配置则使用默认的 HTTP 客户端
	Client clientv2.Client

	// 域名解析器,如果不配置则使用默认的域名解析器
	Resolver resolver.Resolver

	// 域名选择器,如果不配置则使用默认的域名选择器
	Chooser chooser.Chooser

	// 退避器,如果不配置则使用默认的退避器
	Backoff backoff.Backoff

	// 签名前回调函数
	BeforeSign func(*http.Request)

	// 签名后回调函数
	AfterSign func(*http.Request)

	// 签名错误回调函数
	SignError func(*http.Request, error)

	// 域名解析前回调函数
	BeforeResolve func(*http.Request)

	// 域名解析后回调函数
	AfterResolve func(*http.Request, []net.IP)

	// 域名解析错误回调函数
	ResolveError func(*http.Request, error)

	// 退避前回调函数
	BeforeBackoff func(*http.Request, *retrier.RetrierOptions, time.Duration)

	// 退避后回调函数
	AfterBackoff func(*http.Request, *retrier.RetrierOptions, time.Duration)

	// 请求前回调函数
	BeforeRequest func(*http.Request, *retrier.RetrierOptions)

	// 请求后回调函数
	AfterResponse func(*http.Response, *retrier.RetrierOptions, error)
}

AllRegionsProviderOptions 所有区域提供者选项

type BucketRegionsQuery

type BucketRegionsQuery interface {
	Query(accessKey, bucketName string) RegionsProvider
}

BucketRegionsQuery 空间区域查询器

func NewBucketRegionsQuery

func NewBucketRegionsQuery(bucketHosts Endpoints, opts *BucketRegionsQueryOptions) (BucketRegionsQuery, error)

NewBucketRegionsQuery 创建空间区域查询器

type BucketRegionsQueryOptions

type BucketRegionsQueryOptions struct {
	// 使用 HTTP 协议
	UseInsecureProtocol bool

	// 是否加速上传
	AccelerateUploading bool

	// 压缩周期(默认:60s)
	CompactInterval time.Duration

	// 持久化路径(默认:$TMPDIR/qiniu-golang-sdk/query_v4_01.cache.json)
	PersistentFilePath string

	// 持久化周期(默认:60s)
	PersistentDuration time.Duration

	// 单域名重试次数(默认:2)
	RetryMax int

	// 主备域名冻结时间(默认:600s),当一个域名请求失败(单个域名会被重试 RetryMax 次),会被冻结一段时间,使用备用域名进行重试,在冻结时间内,域名不能被使用,当一个操作中所有域名竣备冻结操作不在进行重试,返回最后一次操作的错误。
	HostFreezeDuration time.Duration

	// HTTP 客户端,如果不配置则使用默认的 HTTP 客户端
	Client clientv2.Client

	// 域名解析器,如果不配置则使用默认的域名解析器
	Resolver resolver.Resolver

	// 域名选择器,如果不配置则使用默认的域名选择器
	Chooser chooser.Chooser

	// 退避器,如果不配置则使用默认的退避器
	Backoff backoff.Backoff

	// 域名解析前回调函数
	BeforeResolve func(*http.Request)

	// 域名解析后回调函数
	AfterResolve func(*http.Request, []net.IP)

	// 域名解析错误回调函数
	ResolveError func(*http.Request, error)

	// 退避前回调函数
	BeforeBackoff func(*http.Request, *retrier.RetrierOptions, time.Duration)

	// 退避后回调函数
	AfterBackoff func(*http.Request, *retrier.RetrierOptions, time.Duration)

	// 请求前回调函数
	BeforeRequest func(*http.Request, *retrier.RetrierOptions)

	// 请求后回调函数
	AfterResponse func(*http.Response, *retrier.RetrierOptions, error)
}

BucketRegionsQueryOptions 空间区域查询器选项

type Endpoints

type Endpoints struct {
	Preferred   []string `json:"preferred,omitempty"`   // 首选服务地址
	Alternative []string `json:"alternative,omitempty"` // 备选服务地址
	Accelerated []string `json:"accelerated,omitempty"` // 加速服务地址
}

服务地址

可以存储域名或 IP,端口和协议可选

func (Endpoints) Clone

func (endpoints Endpoints) Clone() Endpoints

func (Endpoints) GetEndpoints

func (endpoints Endpoints) GetEndpoints(context.Context) (Endpoints, error)

func (Endpoints) HostsLength

func (endpoints Endpoints) HostsLength() int

func (Endpoints) IsEmpty

func (endpoints Endpoints) IsEmpty() bool

func (Endpoints) IsEqual

func (left Endpoints) IsEqual(right Endpoints) bool

func (Endpoints) Iter

func (hosts Endpoints) Iter() *EndpointsIter

func (Endpoints) Join

func (left Endpoints) Join(rights ...Endpoints) Endpoints

func (Endpoints) ToHostProvider

func (endpoints Endpoints) ToHostProvider() hostprovider.HostProvider

type EndpointsIter

type EndpointsIter struct {
	// contains filtered or unexported fields
}

服务地址迭代器

func (*EndpointsIter) More

func (iter *EndpointsIter) More() bool

func (*EndpointsIter) Next

func (iter *EndpointsIter) Next(nextHost *string) bool

func (*EndpointsIter) SwitchToAlternative

func (iter *EndpointsIter) SwitchToAlternative()

func (*EndpointsIter) SwitchToPreferred

func (iter *EndpointsIter) SwitchToPreferred()

type EndpointsProvider

type EndpointsProvider interface {
	GetEndpoints(context.Context) (Endpoints, error)
}

服务地址提供者

type Region

type Region struct {
	RegionID string    `json:"region_id,omitempty"` // 区域 ID
	Up       Endpoints `json:"up,omitempty"`        // Up 服务域名
	Io       Endpoints `json:"io,omitempty"`        // Io 服务域名
	IoSrc    Endpoints `json:"io_src,omitempty"`    // Io 源站服务域名
	Rs       Endpoints `json:"rs,omitempty"`        // Rs 服务域名
	Rsf      Endpoints `json:"rsf,omitempty"`       // Rsf 服务域名
	Api      Endpoints `json:"api,omitempty"`       // Api 服务域名
	Bucket   Endpoints `json:"bucket,omitempty"`    // Bucket 服务域名
}

区域信息

可能有多个机房信息,每个机房可能有多个服务地址

如果使用公有云,建议使用 GetRegionByID 方法直接获取获取区域实例,不建议手动设置服务地址

func GetRegionByID

func GetRegionByID(regionID string, useHttps bool) *Region

根据 RegionID 获取公有云区域信息

func (*Region) Endpoints

func (region *Region) Endpoints(serviceNames []ServiceName) (Endpoints, error)

func (*Region) EndpointsIter

func (region *Region) EndpointsIter(serviceNames []ServiceName) (*EndpointsIter, error)

func (*Region) GetRegions

func (region *Region) GetRegions(context.Context) ([]*Region, error)

func (*Region) IsEqual

func (left *Region) IsEqual(right *Region) bool

type RegionsProvider

type RegionsProvider interface {
	GetRegions(context.Context) ([]*Region, error)
}

区域提供者

func NewAllRegionsProvider

func NewAllRegionsProvider(credentials credentials.CredentialsProvider, bucketHosts Endpoints, opts *AllRegionsProviderOptions) (RegionsProvider, error)

NewAllRegionsProvider 创建所有空间提供者

type ServiceName

type ServiceName string

服务名称

const (
	// Up 服务
	ServiceUp ServiceName = "up"
	// Io 服务
	ServiceIo ServiceName = "io"
	// Io 源站服务
	ServiceIoSrc ServiceName = "io_src"
	// Rs 服务
	ServiceRs ServiceName = "rs"
	// Rsf 服务
	ServiceRsf ServiceName = "rsf"
	// Api 服务
	ServiceApi ServiceName = "api"
	// Bucket 服务
	ServiceBucket ServiceName = "bucket"
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL