常问问题

未匹配的标注
本文档最新版为 3.x,旧版本可能放弃维护,推荐阅读最新版!

常见问题解答应该为最常见的问题提供快速解答.

什么是 Micro?

Micro 是一个专注于简化分布式系统开发的微服务生态系统.

开源

Micro 由开放源码库和工具组成, 以帮助微服务开发.

  • go-micro - 用于编写微服务的可插入 Go RPC 框架; 服务发现, 客户端/服务器rpc, pub/sub 等.
  • go-plugins - go-micro 的插件, 包括 etcd, kubernetes, nats, rabbitmq, grpc 等.
  • micro - 一个包含传统入口点的微服务工具包; API 网关, CLI, Slack Bot, Sidecar 和 Web UI.

其他各种库和服务可以在 github.com/micro 找到.

社区

有一个几千名成员的社区.

加入到 slack.micro.mu.

生态系统

Micro 跨越单一组织. 开源工具和服务正在由社区自己提供.

micro.mu/explore/ 上探索生态.

从哪里开始?

go-micro 开始. 自述文件提供了一个微服务示例.

阅读 入门指南 或查看 示例, 了解更多信息.

使用 micro 工具包, 通过 cli, web ui, slack 或 api 网关访问微服务.

谁在使用 Micro?

用户 页面查看使用 Micro 的公司列表,(更新没那么及时).

还有很多人也在使用它, 但尚未公开列出. 如果您使用 Micro, 请随时添加您的公司.

如何使用 Micro?

这很简单.

  1. 使用 go-micro 编写服务.
  2. 通过 micro 工具包访问它们.
  3. 完成.

检出完整的 greeter 示例.

可以换掉 Consul 吗?

当然可以! 服务发现注册表与其他所有软件包一样, 是完全可插拔的. 由于其特点和简单性, Consul 被用作默认值.

ETCD

举个例子. 如果您想使用 etcd, 请导入插件并在二进制文件中设置命令行标志.

import (
        _ "github.com/micro/go-plugins/registry/etcd"
)
service --registry=etcd --registry_address=127.0.0.1:2379

零依赖

有一个内置的零依赖的 Multicast DNS 服务注册表配置. 在启动时将 --registry=mdnsMICRO_REGISTRY=mdns 传递给您的应用程序即可.

可以在哪里运行 Micro?

Micro 对运行时没什么要求. 你可以在任何你喜欢的地方运行它. 裸机, AWS, 谷歌云. 在你最喜欢的容器编排系统, 如 Mesos 或 Kubernetes.

实际上, 在 Kubernetes 上有 Micro 的演示配置. 可参阅 github.com/micro/kubernetes.

API, Web 和 SRV 服务有啥子区别?

作为 Micro 工具包的一部分, 我们尝试通过分离 API, Web 仪表盘和后端服务 (SRV) 的关注点, 为可扩展体系结构定义一组设计模式.

API 服务

API 服务由 Micro Api 提供, 默认命名空间为 go.micro.api. micro API 符合 API 网关模式.

点击 此处 了解更多详情

Web 服务

Web 服务由 Micro Web 提供, 默认名称空间为 go.micro.web. 我们相信 web 应用程序是微服务世界中的一等公民, 因此可以将 web 仪表板作为微服务来构建. Micro Net 是一个反向代理, 它会根据服务解析的路径将 HTTP 请求转发到相应的 Web 应用程序.

点击 此处 了解更多详情

SRV 服务

SRV 服务基本上是标准的 RPC 服务, 通常这是你写的服务. 我们通常称它们为 RPC 或后端服务, 因为它们主要应该是后端架构的一部分, 并且永远不会面向公众. 默认情况下, 我们使用命名空间 go.micro.srv, 但是您应该使用您的域 com.example.srv.

性能如何?

性能不是 Micro 的当前焦点. 尽管代码编写为最佳并避免了开销, 但基准测试并没有花费太多时间. 与 net/http 或其他 web 框架进行比较是没有意义的. Micro 为包括服务发现, 负载平衡, 消息编码等的微服务提供了更高级别的要求. 为了比较, 您需要将所有这些功能添加进来.

如果你仍然关心性能. 提取最大值的最简单方法是简单地通过运行以下标志:

--selector=cache # enables in memory caching of discovered nodes
--client_pool_size=10 # enables the client side connection pool

Micro 是否支持 gRPC?

自然支持. 在 micro/go-plugins 中有传输, 客户端和服务器的插件.

如果你想快速入门, 只需使用 micro/go-grpc.

Micro 与 Go-Kit

这个问题出现了很多次. micro 和 go-kit 有啥子区别?

Go-kit 将自己描述为微服务的标准库. 像 Go 一样, go-kit 为您提供可用于构建应用程序的单独包. 如果您想完全控制您定义服务的方式, Go-kit 非常适合.

Go-micro 是微服务的可插拔框架. 这是一个自发的框架, 试图简化分布式系统的通信方面, 以便您可以专注于业务逻辑本身. Go-micro 非常适合您快速启动和运行, 同时拥有可插拔的基础架构而无需更改代码.

Micro 是一个微服务工具包. 这就像微型服务的瑞士军刀一样, 微型服务以 go-micro 为基础, 提供诸如 http api gateway, web ui, cli, slack bot 等传统入口点. Micro 使用工具来指导逻辑上分离您的架构中的关注点, 从而推动您为公共 API 创建一个微服务的 API 层, 并为Web UI 分别创建一个微服务的 WEB 层.

在想要完全控制的地方使用 go-kit. 你想要一个自用的框架使用 go-micro.

我哪里可以了解更多?

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
taadis
讨论数量: 0
发起讨论 只看当前版本


暂无话题~