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后台,可以用来查询我们正在运行的微服务状态信息。