插件中心

概述

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)