1. 常见问题
常见问题应该提供大多数问题的的快速解答.
1.1. 什么是 Micro?
Micro 使开发人员能够构建, 共享和协作分布式系统, 即微服务.
1.1.1. 开源
Micro 构建为开源库和工具, 以帮助微服务开发.
- 框架 - 编写微服务的 Go 框架; 服务发现, 远程过程调用, 发布/订阅等.
- 运行时 - 微服务运行时环境; API 网关, cli, slackbot, service proxy, 等.
- 插件 - 框架和运行时的插件, 包括 etcd, kubernets, nats, grpc, 等.
可以在 github.com/micro 找到所有工具.
1.1.2. 网络
Micro 为共享和运行服务提供了开放的全球始终在线的云环境. 任何人都可以加入和使用 网络. 这是在任何组织或团队之外开启公共协作的好方法.
探索 网络.
1.1.3. 社区
有一个 slack 的社区, 有成千上万的成员。
邀请你自己加入 micro.mu/slack/
1.2. 我该从哪里开始?
从 go-micro 开始. readme 提供了一个简单的示例微服务.
使用 micro 工具包通过 cli, web ui, slack 或 api 网关访问微服务.
1.3. 谁在使用 Micro?
查看 用户 页面, 其中列出了使用 Micro 的公司(但请注意, 更新存在滞后所以可能不是最新的).
还有更多人也在使用它, 但尚未公开. 如果您使用的是 Micro, 请随时添加您的公司.
1.4. 如何使用 Micro?
很简单
查看完整的 问候者 示例.
1.5. 零依赖的服务发现
多播 DNS 是内置注册的用于零配置的服务发现机制.
你不需要做任何事情! 它刚刚内置, 默认情况下已启用.
1.6. 我可以使用某些内容而不是 MDNS 吗?
是的! 服务发现注册表是完全可插拔的. Etcd 也包含在默认插件中.
MICRO_REGISTRY=etcd MICRO_REGISTRY_ADDRESS=127.0.0.1:2379 myservice
1.7. 我在哪里可以运行 Micro?
Micro 是运行时无感知的. 你可以在你喜欢的任何地方运行它. 在裸机上, 在 AWS 上, 使用 Google 云. 在你最喜欢的容器编排系统上, 如 Mesos 或 Kubernetes.
事实上, 在 Kubernetes 有 Micro 的演示配置. 可参阅此仓库 github.com/micro/kubernetes
1.8. API, Web 和 SRV 服务之间的区别是什么?
作为 micro 工具包的一部分, 我们尝试通过分离 API, Web 仪表板和后端服务 (SRV) 的关注点, 为可扩展体系结构定义一组设计模式.
1.8.1. API 服务
API 服务是一个单独的服务层, 用于为 http/json API 提供服务. 这可能是您的客户面向公众的 api 或网络. API 服务由 micro api 提供, 并符合 api 网关模式. 它们编写为标准 Go Micro 服务, 但使用命名空间 go.micro.api
在逻辑上分离自身.
1.8.2. Web 服务
Web 服务由默认命名空间 go.micro.web 的 micro web 提供服务. 我们相信 Web 应用程序是微服务领域的一等公民, 因此将 Web 仪表板构建为微服务. Micro Web 是反向代理, 将根据服务解析路径将 HTTP 请求转发到相应的 Web 应用.
想要了解更多, 可参阅 这里
1.8.3. SRV 服务
SRV 服务基本上是标准的 RPC 服务, 即您通常编写的服务类型. 我们通常称他们为 RPC 或后端服务, 因为它们主要应该是后端体系结构的一部分, 并且永远不会面向公共. 默认情况下, 我们使用命名空间 go.micro.srv 进行这些操作, 但您应该使用域 com.example.srv.
1.9. 性能如何?
性能不是 Micro 的当前焦点, 但始终是我们努力的目标. 我们让更广泛的 Go 生态系统处理繁重的工作, 并首先关注开发人员的工作效率. 这意味着我们在底层使用 gRPC 在和 NATS 进行消息传递.
如果默认插件的性能不够, 您可以使用 go-plugins 切换到您选择的工具.
1.10. Micro 支持 gRPC 吗?
是的. 在 v2 中, 默认情况下使用 gRPC.
1.11. Micro vs Go-Kit
有很多人问过这个问题. micro 和 go-kit 之间的区别是什么?
Go-kit 将自己描述为微服务的标准库. 与 Go 一样, go-kit 还为您提供可用于构建应用程序的单个包. Go-kit 非常适合完全控制如何定义服务.
Go Micro 是微服务的可插拔 RPC 框架. 这是一个有意见的框架, 它试图简化分布式系统的通信方面, 以便您可以专注于业务逻辑本身. Go-micro 非常适合快速启动和运行, 同时拥有可插入的内容, 无需代码更改即可切换出基础结构.
Micro 是一个微服务工具包. 它就像一把用于微服务的瑞士军刀, 它建立在 go-micro 的基础上, 提供传统的入口点, 如 http api 网关, web ui, cli, slack bot, 等. Micro 使用工具来指导体系结构中关注点的逻辑分离, 推动您为公共 API 创建微服务的 API 层, 并单独为 Web UI 创建 WEB 微服务层.
在需要完全控制的地方使用 go-kit. 在需要有意见的框架的地方使用 go-micro.
1.12. 我在哪里可以了解更多信息?
- 加入 slack 社区 - micro.mu/slack
- 阅读博客 - micro.mu/blog