更新时间:2024-08-30 GMT+08:00
分享

托管Kitex应用

本文介绍如何将Kitex应用接入ServiceComb引擎。

概述

Kitex,作为Golang微服务RPC框架,具有高性能、强可扩展的特点。更多Kitex框架的详细信息,请参见Kitex官方文档

前提条件

创建ServiceComb引擎,请参考创建ServiceComb引擎

代码接入

  • Provider端:
    import (
    	"context"
    	"log"
    	"net"
    	"github.com/cloudwego/kitex-examples/hello/kitex_gen/api"
    	"github.com/cloudwego/kitex-examples/hello/kitex_gen/api/hello"
    	"github.com/cloudwego/kitex/pkg/rpcinfo"
    	"github.com/cloudwego/kitex/server"
    	"github.com/kitex-contrib/registry-servicecomb/registry"
    )
    type HelloImpl struct{}
    func (h *HelloImpl) Echo(_ context.Context, req *api.Request) (resp *api.Response, err error) {
    	resp = &api.Response{
    		Message: req.Message,
    	}
    	return
    }
    func main() {
    	// **初始化ServiceComb注册中心,默认从环境变量读取配置**
    	r, err := registry.NewDefaultSCRegistry()
    	if err != nil {
    		panic(err)
    	}
    	svr := hello.NewServer(
    		new(HelloImpl),
    		server.WithRegistry(r),
    		server.WithServerBasicInfo(&rpcinfo.EndpointBasicInfo{ServiceName: "Hello"}),
    		server.WithServiceAddr(&net.TCPAddr{IP: net.IPv4(0, 0, 0, 0), Port: 8080}),
    	)
    	if err := svr.Run(); err != nil {
    		log.Println("server stopped with error:", err)
    	} else {
    		log.Println("server stopped")
    	}
    }
  • Consumer端:
    import (
    	"context"
    	"log"
    	"time"
    	"github.com/cloudwego/kitex-examples/hello/kitex_gen/api"
    	"github.com/cloudwego/kitex-examples/hello/kitex_gen/api/hello"
    	"github.com/cloudwego/kitex/client"
    	"github.com/kitex-contrib/registry-servicecomb/resolver"
    )
    
    func main() {
    	// **初始化ServiceComb注册中心,默认从环境变量读取配置**
    	r, err := resolver.NewDefaultSCResolver()
    	if err != nil {
    		panic(err)
    	}
    	newClient := hello.MustNewClient(
    		"Hello",
    		client.WithResolver(r),
    		client.WithRPCTimeout(time.Second*3),
    	)
    	for {
    		resp, err := newClient.Echo(context.Background(), &api.Request{Message: "Hello"})
    		if err != nil {
    			log.Fatal(err)
    		}
    		log.Println(resp)
    		time.Sleep(time.Second)
    	}
    }

应用部署

参考快速体验ServiceStage选择合适的部署方式。

验证

部署成功后,登录微服务引擎控制台,在左侧导航栏选择“ServiceComb引擎专享版”,单击前提条件创建的ServiceComb引擎,选择“微服务目录”,单击微服务名称,在“实例列表”页签查看服务实例是否已经成功注册。

您也可以验证Consumer调用Provider能够正常调用。

  1. 设置环境变量serverAddr和serverPort为ServiceComb引擎服务注册发现地址的ip和port。

  2. 运行consumer。说明成功从ServiceComb引擎的服务中心获取了provider的ip和port,并调用了provider。

相关文档