一架梯子,一头程序猿,仰望星空!

Go Micro微服务框架


Go Micro是一种go语言微服务开发框架。

Go Micro整体设计是一种插件化的架构,只为分布式系统开发提供了一个基础框架,还有核心功能,当然这些核心功能也是以插件的形式开发,可以轻易替换掉,剩下的都是靠各种组件增强功能。

1.Go Micro整体架构设计

上图,描述的架构设计主要有三层:

  • Micro Runtime - 应用层
  • Mico Service - 服务层
  • Cloud Platform - 技术平台

Micro Runtime - 可以理解为应用层,就是一些基于微服务的应用组件,我们可以根据业务需要选择应用组件,例如:api网关负责将微服务接口暴露到公网中,web应用,处理一些网页应用。

Mico Service - 服务层,这里就是我们开发的各种微服务了。

Cloud Platform - 云平台,或者叫技术平台,负责支撑微服务运行的环境,例如:我们的容器平台、消息队列、数据库等等,当然如果你的微服务系统不复杂,弄两台服务器外加redis、mysql组成技术平台也可以,并不一定要搞的很复杂。

在这个分层设计中,应用层和服务层属于Go Micro微服务框架要支持的地方。

2.Go Micro核心模块设计

下图是Go Micro框架的核心模块:

service是对微服务的抽象,通常就是一组接口的集合,下面分别介绍各个组件的作用。

Client

客户端,指的就是我们的的rpc客户端,调用微服务接口的客户端。

Server

服务端封装,负责注册服务、处理rpc请求等等

Broker

消息队列的抽象,支持基于消息的事件处理,方便我们处理异步任务,可以根据需要选择各种消息队列,例如:RabbitMQ

Codec

消息编码和解码的组件,客户端和服务端在处理消息的时候都需要codec组件,对消息进行编码或者解码,例如对protobuf格式的消息进行编码和解码。

Register

register提供服务发现功能,支持consul, etcd, zookeeper, dns, gossip等作为注册中心。

Selector

selector是一个负载均衡组件,支持随机、轮训等负载均衡算法,客户端在通过Register组件拿到多个服务端地址的时候,通过Selector组件的负载均衡算法,选择一个服务端进行通信。

Transport

负责客户端和服务端的通信,例如:使用http、websocket协议通信。

提示:Go Micro框架核心模块不包括Go Runtime的应用组件,这些应用组件需要单独安装。

3.Go Micro应用组件介绍

Micro Runtime 实现了一些微服务系统常用的应用组件,我们可以跟需要安装组件,下面介绍一些常用的组件。

3.1.API Gateway

api网关,统一的Http api入口,可以将我们的微服务接口暴露到公网中。

3.2.Interactive CLI

Go Micro微服务的命令行工具,可以用来查询服务,调用服务接口等等。

3.3.Web Dashboard

Go Micro微服务web后台,可以用来查询我们正在运行的微服务状态信息。