Micro 是一个开源的微服务生态系统。目标是简化分布式系统开发,它提供了用于服务发现,客户端负载平衡,编码,同步和异步通信库。
架构
Micro 主要由 Go-Micro 和 微服务工具包 两个部分构成。
Go-Micro
Go-Micro 是 Micro 的核心,是一个独立的基于 gRPC 的微服务框架。
Client
Client 提供了一种发出 RPC 请求的方法。它还提供重试,超时,使用上下文等。
Server
Server 是构建正在运行的微服务的接口。它提供了一种接收 RPC 请求的方法。
Registry
Registry 是一个插件式的服务发现库,来查找正在运行的服务。可以选择基于 consul,etcd,内存和 kubernetes。
Selector
Selector 通过选择提供负载均衡机制。当 Client 向 Server 发出请求时,它将首先查询 Registry。这通常会返回一个表示服务的正在运行的节点列表。选择器将选择这些节点中的一个用于接收请求。多次调用 Selector 将触发平衡算法(循环法,随机哈希,黑名单)
Broker
Broker 是提供发布/订阅时间功能的插件。目前的实现包括nats,rabbitmq 和 http(用于开发)。
Transport
传输是通过点对点传输消息的插件。
微服务工具包
工具包的工具都是插件式的,作为辅助微服务开发的补充。
API
API网关是微服务的单一入口,可以用作反向代理和将 HTTP 请求转换为 RPC。
Web UI
用于Micro Web应用程序的仪表板和反向代理。
Sidecar
一种对语言透明的RPC代理,提供了一种将其他语言应用程序集成到 Micro 世界的方法。
Bot
Hubot 风格的 bot,位于您的微服务平台中,可以通过 Slack,HipChat,XMPP等进行交互。它通过消息传递提供 CLI 的功能。可以添加其他命令来自动执行常见的操作任务。
CLI
一个直接的命令行界面来与你的微服务进行交互。它还使您可以利用 Sidecar 作为代理,从而不直接连接到服务注册表。