六.Micro简介

什么是Micro

Micro是一个专注于简化分布式系统的开发的微服务生态系统,是一个工具集合,通过将微服务架构抽象成一组工具,隐藏了分布式系统的复杂性,为开发人员提供了更简洁的概念。

Micro解决了构建云本地系统的关键需求,它采用了微服务体系结构模式,并将其转换为一组工具,作为可伸缩平台的构建块。Micro隐藏了分布式系统的复杂性,并为开发人员提供了很好的理解概念

Micro组成

打开Micro的托管项目 https://github.com/micro ,可以看到Micro下共有11个托管仓库。
Micro

其中:

  • go-micro是具体的微服务的开发框架,对于我们开发者来说,通过此框架来自定义我们的微服务。

  • micro是一套分布式运行时工具集,通过工具集来对我们自定义的微服务进行管理,包括设置api网关、设置代理、新增服务模板等。

  • go-plugins是Micro社区维护的开发微服务时所需要用到的插件库,当然你也可以使用自定义的插件来对其进行替代,甚至将自己开发的插件推送给社区,上传到社区的仓库中。

  • clients是调用微服务的多语言客户端代码实现示范。

  • development是Micro开发路线图,团队和贡献指南。

  • example提供了许多示例来帮助我们学习Micro,了解其特性。

jiagou

micro运行时特性

  • api:一个api网关。使用服务发现进行动态请求路由的单个入口点。API网关使我们可以在后端构建可扩展的微服务架构,并在前端整合服务公共api。Micro api通过发现和可插拔程序提供强大的路由,以服务http、grpc、websocket,发布事件等。

  • broker:允许异步消息传递的消息代理。微服务是事件驱动的体系结构,应以一流的公民身份提供消息传递。通知其他服务事件,而且不必担心响应。

  • network:使用微网络服务构建多云网络。只需插入并连接任何环境中的网络服务,并创建一个单一的扁平网络即可进行全球路由。微型网络会根据您在每个数据中心中的本地注册表动态地构建路由,以确保查询是根据位置进行路由的。

  • new: 服务模板生成器。创建新的服务模板以快速入门。Micro提供了用于编写微服务的预定义模板。始终以相同的方式开始,构建相同的服务以提高生产力。

  • proxy:基于Go Micro构建的透明服务代理。将服务发现,负载平衡,容错,消息编码,中间件,监视等卸载到一个位置。独立运行它或与您的服务一起运行。

  • registry:注册器供服务发现以定位其他服务,存储功能丰富的元数据和端点信息。它是一个服务探测器,可让您在运行时集中并动态地存储此类信息。

  • store:状态存储是任何系统的基本要求。我们提供了一个键值存储,以提供状态的简单存储,可以在服务之间共享状态或长期卸载,以保持微服务无状态和水平可伸缩性。

  • web: Web界面使您可以浏览服务,描述其端点,请求和响应格式,甚至直接查询它们。界面还包括内置的CLI(类似CLI),适用于希望即时进入终端的开发人员。

安装

从来源:

1
go get github.com/micro/micro/v2

从Docker镜像:

1
docker pull micro/micro

最新版本的二进制文件:

1
2
3
4
5
6
7
8
# MacOS
curl -fsSL https://raw.githubusercontent.com/micro/micro/master/scripts/install.sh | /bin/bash

# Linux
wget -q https://raw.githubusercontent.com/micro/micro/master/scripts/install.sh -O - | /bin/bash

# Windows
powershell -Command "iwr -useb https://raw.githubusercontent.com/micro/micro/master/scripts/install.ps1 | iex”

入门

在本地引导整个运行时环境

1
micro server

创建服务

1
2
3
4
5
6
7
8
9
10
11
# generate a service (follow instructions in output)
micro new example

# run the service
micro run --server example

# list services
micro list services

# call a service
micro call go.micro.service.example Example.Call '{"name": "John"}'

用法

1
micro --help

有关平台的体系结构,安装和使用的详细信息,请参阅文档。