1. 常问问题
常见问题解答应该为最常见的问题提供快速解答。
1.1. 什么是Micro?
Micro是一个专注于简化分布式系统开发的微服务生态系统。
1.1.1. 开源
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找到。
1.1.2. 社区
有一个有千名会员的松散社区。
在slack.micro.mu邀请你自己。
1.1.3. 生态系统
Micro跨越单一组织。开源工具和服务正在由社区自己提供。
在micro.mu/explore/上探索生态系统。
1.2. 我从哪里开始?
从go-micro开始。自述文件提供了一个微服务示例。
使用micro工具包,通过cli,web ui,slack或api网关访问微服务。
1.3. 谁在使用Micro?
在用户页面查看使用Micro的公司列表,(但注意它可能已过时)。
还有很多人也在使用它,但尚未公开列出。如果您使用Micro,请随时添加您的公司。
1.4. 我如何使用Micro?
这很简单。
检查完整的greeter示例。
1.5. 我可以替代Consul吗?
可以! 服务发现注册表与其他所有软件包一样,是完全可插入的。由于其特点和简单性,Consul被用作默认值。
1.5.1. ETCD
举个例子。如果您想使用etcd,请导入插件并在二进制文件中设置命令行标志。
import (
_ "github.com/micro/go-plugins/registry/etcd"
)
service --registry=etcd --registry_address=127.0.0.1:2379
1.5.2. 零依赖
有一个内置的零依赖的Multicast DNS服务注册表配置。在启动时将 --registry=mdns
或 MICRO_REGISTRY=mdns
传递给您的应用程序即可。
1.6. 我可以在哪里运行Micro?
Micro是运行时不感知的。你可以在任何你喜欢的地方运行它。裸机上AWS,谷歌云。在你最喜欢的容器编排系统,如Mesos或Kubernetes。
事实上,在Kubernetes上有Micro的演示配置。查看https://github.com/micro/kubernetes。
1.7. API,Web和SRV服务有什么区别?
作为Micro工具包的一部分,我们尝试通过分离API,Web仪表盘和后端服务(SRV)的关注点,为可扩展体系结构定义一组设计模式。
1.7.1. API服务
API服务由Micro Api提供,默认命名空间为go.micro.api。micro API符合API网关模式。
点击此处了解详情
1.7.2. Web服务
Web服务由Micro Web提供,默认名称空间为go.micro.web。我们相信web应用程序是微服务世界中的一等公民,因此可以将web仪表板作为微服务来构建。Micro网络是一个反向代理,它会根据服务解析的路径将HTTP请求转发到相应的Web应用程序。
点击此处了解详情
1.7.3. SRV服务
SRV服务基本上是标准的RPC服务,通常这是你写的服务。我们通常称它们为RPC或后端服务,因为它们主要应该是后端架构的一部分,并且永远不会面向公众。默认情况下,我们使用命名空间go.micro.srv,但是您应该使用您的域com.example.srv。
1.8. 它性能如何?
性能不是Micro的当前焦点。尽管代码编写为最佳并避免了开销,但基准测试并没有花费太多时间。与net/http或其他web框架进行比较是没有意义的。Micro为包括服务发现,负载平衡,消息编码等的微服务提供了更高级别的要求。为了比较,您需要将所有这些功能添加进来。
如果你仍然关心性能。提取最大值的最简单方法是简单地通过运行以下标志:
--selector=cache # enables in memory caching of discovered nodes
--client_pool_size=10 # enables the client side connection pool
1.9. Micro是否支持gRPC?
是的。在micro/go-plugins中有传输,客户端和服务器的插件。
如果你想快速入门,只需使用micro/go-grpc。
1.10. Micro与Go-Kit
这个问题出现了很多。micro和go-kit有什么区别?
Go-kit将自己描述为微服务的标准库。像Go一样,go-kit为您提供可用于构建应用程序的单独包。如果您想完全控制您定义服务的方式,Go-kit非常棒。
Go-micro是微服务的可插入RPC框架。这是一个自发的框架,试图简化分布式系统的通信方面,以便您可以专注于业务逻辑本身。 Go-micro非常适合您快速启动和运行,同时拥有可插拔的基础架构而无需更改代码。
Micro是一个微服务工具包。这就像微型服务的瑞士军刀一样,微型服务以go-micro为基础,提供诸如http api gateway,web ui,cli,slack bot等传统入口点。Micro使用工具来指导逻辑上分离您的架构中的关注点,从而推动您为公共API创建一个微服务的API层,并为Web UI分别创建一个微服务的WEB层。
在想要完全控制的地方使用go-kit。你想要一个自用的框架使用go-micro。
1.11. 我在哪里可以了解更多?
- 加入松散社区 - slack.micro.mu
- 阅读博客 - micro.mu/blog
- 如果你想谈谈 - contact@micro.mu