学习笔记:Go-Micro微服务框架|青训营

147 阅读3分钟

Go-Micro 简介

Go-Micro 是一个用于构建微服务架构的Go语言框架。它旨在简化微服务的开发过程,提供了一组工具和组件,帮助开发人员构建可扩展、可靠和分布式的应用程序。

以下是 go-micro 的一些主要特点和组件:

  1. 服务发现: go-micro 提供了服务发现功能,使微服务能够注册和发现其他微服务的位置和信息。这有助于在动态环境中自动管理服务的位置和连接。
  2. 负载均衡: 通过内置的负载均衡支持,go-micro 可以自动分发流量到多个实例,以实现更好的性能和可靠性。
  3. 消息传递: 框架支持异步消息传递,使不同的微服务能够通过消息进行通信,从而实现解耦和可伸缩性。
  4. 分布式配置: go-micro 具备分布式配置管理功能,允许微服务在运行时动态获取配置信息,而无需重新部署。
  5. 插件体系结构: 该框架支持插件化的体系结构,允许开发人员根据需要轻松添加新的功能和组件。
  6. 跟踪和监控: go-micro 集成了跟踪和监控工具,可以帮助开发人员监测和分析微服务的性能和行为。
  7. RPC 和 HTTP 支持: 框架支持基于RPC(远程过程调用)和HTTP的通信,让开发人员能够根据需求选择最适合的通信协议。
  8. 插件和拓展性: go-micro 具有可插拔的架构,可以方便地集成第三方组件和库,以满足不同的需求。

总之,go-micro 旨在简化构建和管理微服务架构的复杂性,提供了一个统一的框架来处理微服务之间的通信、发现、负载均衡等问题,从而让开发人员能够更专注于业务逻辑的实现。

Go-Micro的安装

下载安装go-micro到项目:go get go-micro.dev/v4

现在的go-micro可以支持脚手架创建模板代码,直接生成微服务所需的必要框架。

安装go-micro命令行客户端: go install github.com/go-micro/cli/cmd/go-micro

别忘了还要安装protobuf。

生成微服务模板代码

执行go-micro new service user, go-micro就会自动创建一个包括模板代码的目录名为user,我们就创建好了第一个名为user的微服务。微服务项目结构类似如图所示:

截屏2023-08-25 23.39.05.png

handler目录里是微服务逻辑层面代码,一般在这里处理请求数据并将其封装到返回消息体。

proto定义了RPC和消息的数据结构。Protobuf支持先定义数据结构,再将数据结构编译成目标语言的数据访问类,从而可以方便地在不同的编程语言之间传递和存储数据。一个proto文件类似如下:

syntax = "proto3";

package user;

option go_package = "./proto;user";

service UserService {
    rpc Register(register_request) returns (register_response) {}
    rpc Login(login_request) returns (login_response) {}
}

message User {
    int64 id = 1;
    string name = 2;
    int age = 3;
}

在微服务目录中,执行make init proto update tidy,会执行项目中的makefile,protobuf就会自动编译消息结构体和RPC定义为Go代码,之后便可在handler中实现逻辑,并配合Go的其他模块,实现复杂的后端功能。