Go Kratos 入门指南

484 阅读2分钟

Go Kratos 是一个基于 Go 语言的微服务框架,旨在帮助开发者快速构建高性能、可扩展的微服务应用。本文将介绍如何安装和配置 Go Kratos,并创建一个简单的微服务示例。 

1. 环境准备 首先,确保你的开发环境中已经安装了以下工具: Go 语言环境:建议使用 1.16 及以上版本。 Git:用于克隆代码仓库。 Make:用于执行构建脚本。 

2. 安装 Go Kratos 你可以通过以下命令安装 Go Kratos 的 CLI 工具:

go install github.com/go-kratos/kratos/cmd/kratos/v2@latest

3. 创建一个新的 Kratos 项

使用 Kratos CLI 创建一个新的项目

kratos new hello-world
cd hello-world


hello-world/
├── api
│   └── helloworld.proto
├── build
│   ├── Dockerfile
│   └── Makefile
├── conf
│   ├── config.yaml
│   └── tracing.yaml
├── internal
│   ├── biz
│   │   └── greeter.go
│   ├── conf
│   │   └── config.go
│   ├── data
│   │   └── greeter.go
│   ├── server
│   │   ├── grpc.go
│   │   └── http.go
│   └── service
│       └── greeter.go
├── pkg
│   └── log
│       └── logger.go
└── main.go

4. 项目结构说明 

api/:存放 API 定义文件,通常使用 Protocol Buffers (protobuf)。 

build/:存放构建相关的文件,如 Dockerfile 和 Makefile。 

conf/:存放配置文件,如 config.yaml 和 tracing.yaml。

 internal/:存放业务逻辑代码,分为 biz、conf、data、server 和 service 子目录。 

pkg/:存放公共库代码。 

main.go:程序入口文件

5. 编写 API 定义

在 api/helloworld.proto 文件中定义一个简单的 API:

syntax = "proto3";

package helloworld;

option go_package = "github.com/yourusername/hello-world/api;api";

service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply);
}

message HelloRequest {
  string name = 1;
}

message HelloReply {
  string message = 1;
}

6. 生成代码

使用 Kratos CLI 生成必要的代码:

kratos api go ./api/helloworld.proto

这将生成 internal/service/greeter.go 和 internal/server/grpc.go 等文件

7. 实现业务逻辑

在 internal/service/greeter.go 中实现业务逻辑:

package service

import (
    "context"
    "fmt"

    "github.com/yourusername/hello-world/api"
)

type GreeterService struct{}

func (s *GreeterService) SayHello(ctx context.Context, req *api.HelloRequest) (*api.HelloReply, error) {
    return &api.HelloReply{Message: fmt.Sprintf("Hello %s", req.Name)}, nil
}

8. 配置服务

编辑 conf/config.yaml 文件,配置服务端口和其他参数:

server:
  http:
    network: tcp
    addr: :8000
  grpc:
    network: tcp
    addr: :9000

9. 启动服务

使用 Makefile 启动服务:

make run

10. 测试服务

你可以使用 curl 或者 grpcurl 来测试 HTTP 和 gRPC 服务。 HTTP 测试:

curl -X POST -H "Content-Type: application/json" -d '{"name": "World"}' http://localhost:8000/sayHello

gRPC 测试:

grpcurl -plaintext -d '{"name": "World"}' localhost:9000 helloworld.Greeter/SayHello

总结 

通过以上步骤,已经成功创建了一个基于 Go Kratos 的简单微服务。