Copyright © 2022-2025 aizws.net · 网站版本: v1.2.6·内部版本: v1.25.2·
页面加载耗时 0.00 毫秒·物理内存 135.7MB ·虚拟内存 1372.6MB
欢迎来到 AI 中文社区(简称 AI 中文社),这里是学习交流 AI 人工智能技术的中文社区。 为了更好的体验,本站推荐使用 Chrome 浏览器。
Go Micro 是一个插件化的 RPC 开发框架,用于使用 Go 语言快速构建微服务。
使用 Go Micro 的 micro 工具创建 RPC 服务,例如创建 hello 服务。
micro new hello
micro 生成了 hello 项目,目录结构如下:
. ├── main.go ├── generate.go ├── plugin.go ├── handler │ └── hello.go ├── subscriber │ └── hello.go ├── proto/hello │ └── hello.proto ├── Dockerfile ├── Makefile └── README.md
生成文件说明:
设置新创建的 hello 项目使用 Go Mod 管理依赖包。
# 进入项目目录 $ cd hello #运行 go mod 初始化命令 $ go mod init hello
进入项目的 proto 目录,里面有一个自动生成的 hello.proto 文件,编辑文件在 package 下增加 go package 路径:
syntax = "proto3";
package go.micro.srv.hello;
option go_package="proto/hello";
service Hello {
......
通过 make 编译 proto 文件:
make proto
编译后会在 proto/hello 目录中生成两个文件:hello.pb.go 和 hello.pb.micro.go。
以下为 Go Micro 自动创建的 main.go 文件。
package main
import (
"github.com/micro/go-micro/util/log"
"github.com/micro/go-micro"
"hello/handler"
"hello/subscriber"
hello "hello/proto/hello"
)
func main() {
// New Service
// 创建一个新的服务,服务名为 go.micro.srv.hello
service := micro.NewService(
micro.Name("go.micro.srv.hello"),
micro.Version("latest"),
)
// Initialise service
// 通过命令行参数或者插件初始化服务
service.Init()
// Register Handler
// 注册业务处理组件 handler.Hello
hello.RegisterHelloHandler(service.Server(), new(handler.Hello))
// Register Struct as Subscriber
// 暂且忽略,可直接去掉
//micro.RegisterSubscriber("go.micro.srv.hello", service.Server(), new(subscriber.Hello))
// Register Function as Subscriber
// 暂且忽略,可直接去掉
micro.RegisterSubscriber("go.micro.srv.hello", service.Server(), subscriber.Handler)
// Run service
// 运行服务
if err := service.Run(); err != nil {
log.Fatal(err)
}
}
通过 make 编译项目:
make build
编译后会在 hello 目录中生成可执行文件:hello-srv。
运行 hello-srv。
./hello-srv
hello 服务开始运行,并监听端口,提供服务:
2022-01-13 03:12:28.936707 I | Transport [http] Listening on [::]:38279 2022-01-13 03:12:28.938917 I | Broker [http] Connected to [::]:35811 2022-01-13 03:12:28.945683 I | Registry [mdns] Registering node: go.micro.srv.hello-92b16f46-66bd-4b51-91c5-5da327b756f6 2022-01-13 03:12:28.977517 I | Subscribing go.micro.srv.hello-92b16f46-66bd-4b51-91c5-5da327b756f6 to topic: go.micro.srv.hello
Go Micro 是一个插件化的 RPC 开发框架,用于使用 Go 语言快速构建微服务。测试 Go Micro 服务可以使用 micro 工具,比如调用 hello RPC 服务:$ micro call g ...