Micro(Go版微服务开发框架及标准)-2019年的大整合

【编者的话】Micro是构建微服务的最简单方式,并逐渐成为云计算中基于Go的微服务开发的实际标准。通过将我们的努力整合到一个开发框架和运行时中,我们使这个过程更加简单。
Micro作为[go-micro](https://github.com/micro/go-micro) -一个微服务框架开始了它的旅程,专注于提供微服务开发的核心需求。它通过抽象出分布式系统的复杂性,为构建微服务创造了更简单的体验。
随着时间的推移,我们已经从go-micro扩展到其他工具、库和插件。这导致了我们解决问题的方式和开发人员使用微服务工具的方式的分散化。我们现在正在整合所有这些工具,以简化开发人员的体验。
从本质上来说,Micro已经成为一个独立的开发框架和微服务开发的运行时。
在讨论整合之前,让我们回顾一下迄今为止的历程。
## 主要关注点
Go-micro最初主要专注于微服务的通信方面,我们一直努力做到这一点。到目前为止,这种固执己见的方法和关注点是驱动框架成功的真正驱动力。多年来,我们已经收到了无数的请求,要求解决第二天在go-micro中构建生产就绪软件的问题。其中大部分都与可伸缩性、安全性、同步和配置有关。
![](https://micro.mu/docs/images/go-micro.svg)
虽然增加所要求的额外特性是有好处的,但我们确实希望一开始就非常专注于很好地解决一个问题。所以我们采取了一种不同的方式来促进社区这样做。
## 生态系统和插件
投入生产所涉及的不仅仅是普通的服务发现、消息编码和请求-响应。我们真正明白这一点,希望使用户能够通过可插拔和可扩展的接口选择更广泛的平台需求。通过[资源管理器](https://micro.mu/explore/)促进生态系统,资源管理器聚合了GitHub上的基于微服务的开源项目,并通过[go-plugins](https://github.com/micro/go-plugins)扩展插件。
![](https://micro.mu/explorer.png)
一般来说,Go插件已经取得了巨大的成功,因为它允许开发人员将大量的复杂性转移到为这些需求构建的系统上。例如用于度量的普罗米修斯、用于分布式跟踪的zipkin和用于持久消息传递的Kafka。
## 交互点
Go Micro确实是微服务开发的核心,但是随着服务的编写,接下来的问题就转移到了:我如何查询它们,如何与它们交互,如何通过传统方式为它们服务。
鉴于go-micro使用了一个基于rpc/protobuf的协议,该协议既可插拔又不依赖于运行时,我们需要某种方法来解决这个问题。这导致了微服务工具包[micro](https://github.com/micro/micro)的产生。Micro提供了api网关、网络仪表板、cli命令行工具、slack bot机器人程序、服务代理等等。
![](https://micro.mu/runtime3.svg)
Micro工具包通过http api、浏览器、slack命令和命令行接口充当交互点。这些是我们查询和构建应用程序的常见方式,对于我们来说,提供一个真正支持这一点的运行时非常重要。然而,但它仍然把重点放在通信上。
虽然插件和工具包极大地帮助了使用了Micro的用户,但在关键领域仍然缺乏。很明显,我们的社区希望我们能够围绕产品开发的平台工具来解决更多的问题,而不是必须在他们各自的公司中单独完成。我们需要为动态配置、分布式同步和为Kubernetes这样的系统提供更广泛的解决方案等方面提供相同类型的抽象。
于是我们创建了以下项目:
– [micro/go-config](https://github.com/micro/go-config) – 一个动态配置库
– [micro/go-sync](https://github.com/asim/go-sync) – 一个分布式同步库
– [micro/kubernetes](https://github.com/micro/kubernetes) – 在kubernetes平台上的初始化
– [examples](https://github.com/micro/examples) – 使用举例
– [microhq](https://github.com/microhq) – 微服务预构建
这些是一部分repos、库和工具,用于尝试解决我们社区更广泛的需求。在过去的四年里,repos的数量不断增长,新用户的入门体验也变得更加困难。进入壁垒急剧增加,我们意识到需要做出一些改变。
在过去的几周里,我们意识到[go-micro](https://github.com/micro/go-micro)确实是大多数用户开发微服务的焦点。很明显,他们想要额外的功能,作为这个库的一部分以及一个自我描述的框架,我们真的需要通过解决那些第二天的问题来实现这一点,而不要求开发人员寻求其他方法。
本质上,go-micro将成为微服务开发的全面和独立框架。
我们通过将所有库迁移到go-micro开始了整合过程,在接下来的几周里,我们将继续进行重构,以提供更简单的默认入门体验,同时还为日志记录、跟踪、度量、身份验证等添加更多功能。
![](https://micro.mu/blog/assets/images/go-micro-repo.png)
不过,我们也没有忘记Micro。在我们看来,当构建了微服务之后,仍然需要一种查询、运行和管理它们的方法。所有人都认为Micro将是微服务开发的运行时。我们正在致力于提供一种更简单的方法来管理微服务开发的端到端流程,并且应该很快会有更多消息发布。
## 总结
Micro是构建微服务的最简单方式,并逐渐成为云计算中基于Go的微服务开发的实际标准。通过将我们的努力整合到一个开发框架和运行时中,我们使这个过程更加简单。
了解更多信息,请访问我们的[网站](https://micro.mu/),在[twitter](https://twitter.com/microhq)上关注我们,或者加入[Slack](https://micro-services.slack.com/)社区。
**作者**:Asim Aslam,Micro的创始人。前Hailo SWE和前谷歌SRE。
**译者**:Mr.lzc,软件工程师、DevOpsDays深圳核心组织者,目前供职于华为,从事云存储工作,以Cloud Native方式构建云文件系统服务,专注于K8s、微服务领域。