Copyright © 2022-2024 aizws.net · 网站版本: v1.2.6·内部版本: v1.23.3·
页面加载耗时 0.00 毫秒·物理内存 61.4MB ·虚拟内存 1300.0MB
欢迎来到 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 ...