概述

未匹配的标注
本文档最新版为 3.x,旧版本可能放弃维护,推荐阅读最新版!

插件

Micro 为所有工具提供可插拔的体系结构. 这意味着可以基础底层实现.

Go Micro 和 Micro 工具包包括不同类型的插件. 从侧边栏导航以了解有关每个功能的更多.

概述

在高级别插件中, 插件提供了置换基础基础结构和依赖关系的机会. 这意味着微服务可以单向编写, 并以零依赖项在本地运行, 但在使用分布式系统支持其使用时, 在云中同样作为高弹性系统运行.

使用

默认情况下, go-micro 只提供核心上每个接口的几个实现, 但它是完全可插拔的. 已经有几十个插件, 可在 github.com/micro/go-plugins 欢迎贡献! 插件可确保 Go Micro 服务在技术发展后长期保持生存.

如果要集成插件,只需将它们链接到单独的文件中并重新生成.

创建一个 plugins.go 文件并导入所需的插件:

package main

import (
        // consul registry
        _ "github.com/micro/go-plugins/registry/consul"
        // rabbitmq transport
        _ "github.com/micro/go-plugins/transport/rabbitmq"
        // kafka broker
        _ "github.com/micro/go-plugins/broker/kafka"
)

编写

插件是一个建立在 Go 接口之上的概念. 每个包都维护一个高级接口抽象. 只需实现接口并将其作为服务选项传递给它即可.

服务发现接口称为 Registry. 实现此接口的任何内容都可以用作注册表. 这同样适用于其他包.

type Registry interface {
    Register(*Service, ...RegisterOption) error
    Deregister(*Service) error
    GetService(string) ([]*Service, error)
    ListServices() ([]*Service, error)
    Watch() (Watcher, error)
    String() string
}

可参阅 go-plugins 了解更多的实现细节.

例子

框架

运行时

仓库

开源插件可以在此仓库 github.com/micro/go-plugins 找到.


本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
taadis
讨论数量: 0
发起讨论 只看当前版本


暂无话题~