架构
Micro 为微服务提供了基本的构建模块. 目标是简化分布式系统开发. 因为微服务是一种架构模式, 所以 Micro 通过工具在逻辑上进行组织
查看体系结构上的 博客文章, 获取更详细的概述.
这里有一些介绍, 解释了 Micro 是如何构建的, 以及各种包/仓库之间是如何相互关联的.
工具包
API
启用 API 作为一个网关或代理, 来作为微服务访问的单一入口. 它应该在您的基础架构的边缘运行. 它将 HTTP 请求转换为 RPC 并转发给相应的服务.
Web
UI 是 go-micro 的 web 版本, 允许通过 Web UI 交互访问. 在未来, 它也将是一种聚合微型 Web 服务的方式. 它包含一种 Web 应用程序的代理方式. 将 /[name]
通过注册表路由到相应的服务. Web UI 将前缀 “go.micro.web“(可以配置)添加到名称中, 在注册表中查找它, 然后将进行反向代理.
Sidecar
Sidecar 是 go-micro 的 HTTP 接口版本. 这是将非 Go 应用程序集成到微环境中的一种方式.
Bot
Bot Hubot 风格的机器人工具, 位于您的微服务平台中, 可以通过 Slack, HipChat, XMPP 等进行交互. 它通过消息传递提供 CLI 的功能. 可以添加其他命令来自动执行常用操作任务.
CLI
Micro CLI 是 go-micro 的命令行版本, 它提供了一种观察和与运行环境交互的方式.
Go Micro
Go-micro 是微服务的独立 RPC 框架. 它是该工具包的核心, 并受到上述所有组件的影响. 在这里, 我们将看看 go-micro 的每个特征.
Registry
注册表提供可插入的服务发现库, 来查找正在运行的服务. 当前的实现是 consul, etcd, 内存和 kubernetes. 如果您的喜欢不一样, 该接口很容易实现.
Selector
选择器通过选择提供负载均衡机制. 当客户端向服务器发出请求时, 它将首先查询服务的注册表. 这通常会返回一个表示服务的正在运行的节点列表. 选择器将选择这些节点中的一个用于查询. 多次调用选择器将允许使用平衡算法. 目前的方法是循环法, 随机哈希和黑名单.
Broker
Broker 是发布和订阅的可插拔接口, 微服务是一个事件驱动的架构, 发布和订阅事件应该是一等公民. 目前的实现包括 nats, rabbitmq 和 http(用于开发).
Transport
传输是通过点对点传输消息的可插拔接口. 目前的实现是 http, rabbitmq 和 nats. 通过提供这种抽象, 运输可以无缝地换出.
Client
客户端提供了一种制作 RPC 查询的方法. 它结合了注册表, 选择器, 代理和传输. 它还提供重试, 超时, 使用上下文等.
Server
服务器是构建正在运行的微服务的接口. 它提供了一种供 RPC 请求的方法.
Plugins
提供 go-micro 的 micro/go-plugins 相关插件.