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