托管Kitex应用
本文介绍如何将Kitex应用接入ServiceComb引擎。
概述
Kitex,作为Golang微服务RPC框架,具有高性能、强可扩展的特点。更多Kitex框架的详细信息,请参见Kitex官方文档。
代码接入
- 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能够正常调用。