插件中心
概述
Vine 构建在 Go 接口之上。因此这些接口的实现是可插拔的。
默认情况下,Vine 只提供核心上每个接口的几个实现,但它完全是可插拔的。而额外的实现保存在 plugins。
添加插件
如果要集成插件,只需将它们链接到单独的文件中并重新生成。 创建 plugins.go 文件并导入所需的插件:
package main
import (
// etcd registry
_ "github.com/vine-io/plugins/registry/etcd"
// nats broker
_ "github.com/vine-io/plugins/broker/nats"
)
通过包含插件文件来构建应用程序:
go build -o service main.go plugins.go
使用插件
service --registry.default=etcd --broker.default=nats
插件选项
或者你可以将插件设置在选项中
package main
import (
"github.com/vine-io/vine"
// etcd registry
"github.com/vine-io/plugins/registry/etcd"
// nats broker
"github.com/vine-io/plugins/broker/nats"
)
func main() {
registry := etcd.NewRegistry()
broker := nats.NewBroker()
service := vine.NewService(
vine.Name("greeter"),
vine.Registry(registry),
vine.Broker(broker),
)
service.Init()
service.Run()
}
编写插件
插件是一个建立在 Go 接口上的概念。每个包都维护一个高级接口抽象。只需实现接口并将其作为服务选项传递给它即可.
服务发现接口称为 Registry. 实现此接口的任何内容都可以用作 Registry。这同样适用于其他包.
type Registry interface {
Init(...Option) error
Options() Options
Register(context.Context, *Service, ...RegisterOption) error
Deregister(context.Context, *Service, ...DeregisterOption) error
GetService(context.Context, string, ...GetOption) ([]*Service, error)
ListServices(context.Context, ...ListOption) ([]*Service, error)
Watch(context.Context, ...WatchOption) (Watcher, error)
String() string
}
查阅 plugins 可以更好地了解实现细节。
插件列表
Registry 插件:
Broker 插件:
Dao 插件:
Cache 插件:
Sync 插件:
Logger 插件:
Config Source 插件:
Wrapper 类
熔断器:
限流器:
链路追踪:
数据校验:
最后修改 February 21, 2023: vine@v1.5 (cd019cf)