1. 概述
Micro 为所有工具提供可插拔的体系结构. 这意味着可以基础底层实现.
Go Micro 和 Micro 工具包包括不同类型的插件. 从侧边栏导航以了解有关每个功能的更多.
1.1. 概述
在高级别插件中, 插件提供了置换基础基础结构和依赖关系的机会. 这意味着微服务可以单向编写, 并以零依赖项在本地运行, 但在使用分布式系统支持其使用时, 在云中同样作为高弹性系统运行.
1.2. 使用
默认情况下, 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"
)
1.3. 编写
插件是一个建立在 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 了解更多的实现细节.
1.4. 例子
1.4.1. 框架
- Consul Registry- 使用 Consul 的发现服务
- K8s Registry- 使用 Kubernetes 的服务发现
- Kafka Broker- Kafka 消息代理
1.4.2. 运行时
- Router - 可配置的 http 路由和代理
- AWS X-Ray - AWS X-Ray 的跟踪集成
- IP Whitelist - 白名单 IP 地址访问
1.5. 仓库
开源插件可以在此仓库 github.com/micro/go-plugins 找到.