精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Go 語言微服務框架 Kratos 服務注冊與發現

開發 前端
Go 語言微服務框架 Kratos 服務注冊與發現,支持多種注冊中心,本文我們以 Consul 為例,介紹 Kratos 項目怎么實現服務注冊與發現。

1.介紹

Go 語言微服務框架 Kratos 服務注冊與發現,支持多種注冊中心,本文我們以 Consul 為例,介紹 Kratos 項目怎么實現服務注冊與發現。

以 blog 項目作為 RPC 服務端,我們再創建一個 blog-client 項目作為 RPC 客戶端。

2.服務注冊

我們通過改造 blog 項目的代碼,將 blog 服務作為 RPC 服務端,注冊到 Consul 中。

創建 Consul 注冊中心

在 blog/internal 目錄中,創建 registry 目錄,并創建 consul.go 和 registry.go 文件。

編寫 blog/internal/registry/consul.go 文件。

func NewConsulRegistry(c *conf.Registry) *consul.Registry {
 client, err := api.NewClient(&api.Config{
  Address: c.Consul.Addr,
  Scheme:  c.Consul.Schema,
 })
 if err != nil {
  panic(err)
 }
 return consul.New(client)
}

編寫 blog/internal/registry/registry.go 文件。

var ProviderSet = wire.NewSet(NewConsulRegistry)

編寫 blog/cmd/blog/wire.go 文件。

func wireApp(*conf.Server, *conf.Data, *conf.Registry, log.Logger) (*kratos.App, func(), error) {
 panic(wire.Build(server.ProviderSet, data.ProviderSet, biz.ProviderSet, service.ProviderSet, registry.ProviderSet, newApp))
}

wire 生成文件

cd /root/go/src/blog/cmd/blog
wire

編寫 blog/cmd/blog/main.go 文件。

func newApp(conf *conf.Server, logger log.Logger, gs *grpc.Server, hs *http.Server, registry *consul.Registry) *kratos.App {
 return kratos.New(
  kratos.ID(id),
  kratos.Name(conf.Name),
  kratos.Version(conf.Version),
  kratos.Metadata(map[string]string{}),
  kratos.Logger(logger),
  kratos.Server(
   gs,
   hs,
  ),
  kratos.Registrar(registry),
 )
}

運行項目

cd /root/go/src/blog/cmd/blog
kratos run

訪問 consul UI

在瀏覽器中訪問 http://IP:8500/ui/dc1/services,檢查 blog 服務的注冊狀態。

3.服務發現

使用 kratos 創建一個客戶端項目 blog-client。

創建 Consul 注冊中心

在 blog-client/internal 目錄中,創建 registry 目錄,并創建 consul.go 和 registry.go 文件。

編寫 blog-client/internal/registry/consul.go 文件。

func NewConsulRegistry(c *conf.Registry) *consul.Registry {
 client, err := api.NewClient(&api.Config{
  Address: c.Consul.Addr,
  Scheme:  c.Consul.Schema,
 })
 if err != nil {
  panic(err)
 }
 return consul.New(client)
}

編寫 blog-client/internal/registry/registry.go 文件。

var ProviderSet = wire.NewSet(NewConsulRegistry)

創建 RPC 客戶端

在 blog-client/internal 目錄中,創建 client 目錄,并創建 blog_client.go 和 client.go 文件。

編寫 blog-client/internal/client/blog_client.go 文件。

func NewBlogClient(registry *consul.Registry, logger log.Logger) (v1.UserClient, error) {
 conn, err := grpc.DialInsecure(
  context.Background(),
  grpc.WithEndpoint("discovery:///blog"),
  grpc.WithDiscovery(registry),
  grpc.WithMiddleware(
   recovery.Recovery(),
  ),
  grpc.WithNodeFilter(
   filter.Version("1.0.0")),
 )
 if err != nil {
  log.NewHelper(logger).WithContext(context.Background()).Errorw("err", err)
  return nil, err
 }
 return v1.NewUserClient(conn), nil
}

編寫 blog-client/internal/client/client.go 文件。

var ProviderSet = wire.NewSet(NewBlogClient)

拷貝 pb 文件

拷貝 /root/go/src/blog/api/user 目錄,粘帖到 /root/go/src/blog-client/api 目錄。

創建 domain 和 usecase 層

創建 blog-client/internal/biz/user.go 文件。

type User struct {
 Id       int64 `xorm:"autoincr"`
 Name     string
 Email    string
 Password string
 Created  int64 `xorm:"created"`
 Updated  int64 `xorm:"updated"`
}

type UserUsecase struct {
 rpcClient v1.UserClient
}

func NewUserUsecase(client v1.UserClient) *UserUsecase {
 return &UserUsecase{
  rpcClient: client,
 }
}

func (u *UserUsecase) GetUser(ctx context.Context, user *User) (reply *v1.GetUserReply, err error) {
 req := &v1.GetUserRequest{
  Id: user.Id,
 }
 reply, err = u.rpcClient.GetUser(ctx, req)
 if err != nil {
  return nil, err
 }
 return
}

編寫 blog-client/internal/biz/biz.go 文件。

var ProviderSet = wire.NewSet(NewUserUsecase)

生成 server 源碼

cd /root/go/src/blog-client
kratos proto server api/user/v1/user.proto

編寫生成文件 internal/service/user.go。

func (s *UserService) GetUser(ctx context.Context, req *v1.GetUserRequest) (*v1.GetUserReply, error) {
 user := &biz.User{
  Id: req.Id,
 }
 reply, err := s.userUcase.GetUser(ctx, user)
 if err != nil {
  return nil, err
 }
 return &v1.GetUserReply{
  Name: reply.Name,
 }, nil
}

編寫 blog-client/internal/service/service.go 文件。

var ProviderSet = wire.NewSet(NewUserService)

添加 wire 提供者

編寫 blog-client/cmd/blog-client/wire.go 文件。

func wireApp(*conf.Server, *conf.Data, *conf.Registry, log.Logger) (*kratos.App, func(), error) {
 panic(wire.Build(server.ProviderSet, biz.ProviderSet, registry.ProviderSet, service.ProviderSet, client.ProviderSet, newApp))
}

wire 生成文件

cd /root/go/src/blog-client/cmd/blog-client
wire

運行項目

cd /root/go/src/blog-client/cmd/blog
kratos run

curl 請求示例

curl -H "Content-Type: application/json" -X GET http://192.168.110.209:8001/user/get/1
{"name":"frank"}

4.總結

本文我們通過示例代碼,介紹 Kratos 項目怎么實現服務注冊與發現。

需要注意的是,RPC 服務端和 RPC 客戶端的端口不能相同。

責任編輯:武曉燕 來源: Golang語言開發棧
相關推薦

2025-08-04 01:22:00

Go 語言微服務Kratos

2024-12-23 00:22:55

2025-01-13 00:00:07

Go語言微服務

2024-12-30 00:38:23

Go語言微服務

2022-01-16 23:10:40

語言服務注冊

2025-10-20 07:17:10

Go語言微服務

2022-06-17 12:05:25

微服務注冊

2025-01-06 00:00:01

KratosGo微服務

2017-06-25 13:33:25

Spring Clou微服務架構

2022-04-26 05:36:42

服務治理模式

2015-12-25 11:00:52

Zookeeper的Python

2021-04-20 17:20:59

SpringColud EurekaNetflix開發

2023-09-07 23:25:34

微服務服務發現

2023-06-02 08:33:43

微服務架構服務注冊

2023-11-29 16:21:30

Kubernetes服務注冊

2022-08-14 07:04:44

微服務架構設計模式

2022-01-26 09:36:53

Consul語言微服務

2018-09-14 09:23:03

微服務服務集成

2023-12-13 07:19:01

微服務架構Golang

2021-01-14 09:55:21

Java微服務Go
點贊
收藏

51CTO技術棧公眾號

日韩情涩欧美日韩视频| 国产成人免费视频网站 | www.色婷婷.com| 精品999日本| 亚洲美女av网站| 国产福利在线免费| 日韩电影免费观看| 久久精品一区二区三区四区| 成人精品视频99在线观看免费| 麻豆明星ai换脸视频| 国产精品2023| 欧美视频在线观看 亚洲欧| 亚洲国产精品久久久久久女王| 国产99久一区二区三区a片| 国产视频亚洲| 久久深夜福利免费观看| 麻豆国产精品一区| 国产激情精品一区二区三区| 欧美性猛xxx| 免费观看中文字幕| 免费黄色片在线观看| 国产一区二区福利视频| 日韩女优在线播放| 久久久久久久久99| 日韩精品免费一区二区三区| 亚洲精品一区二区三区影院| 国产主播中文字幕| 都市激情国产精品| 菠萝菠萝蜜在线观看| 久久视频www| 麻豆一区二区在线| 国产91精品不卡视频| 69xx绿帽三人行| 精品国产一区二区三区四区| 精品99999| 中文字幕1234区| 日韩另类视频| 精品国产91乱高清在线观看 | 成人黄色av| 国产视频精品一区二区三区| 亚洲女则毛耸耸bbw| 外国成人毛片| 欧美视频三区在线播放| 免费无码不卡视频在线观看| 牛牛在线精品视频| 亚洲人午夜精品天堂一二香蕉| 欧美中文娱乐网| 手机看片福利在线| 成人一区二区三区| 亚洲专区国产精品| 一级黄色片网站| 免费一区二区视频| 国产精品久久激情| 在线日韩av永久免费观看| 欧美bbbbb性bbbbb视频| 久久久精品视频免费| 在线观看欧美| 欧美日韩另类国产亚洲欧美一级| 成年人在线看片| 亚洲优女在线| 欧美日韩一区二区在线播放| 日本丰满少妇xxxx| h片在线观看| 性感美女极品91精品| 丁香六月激情婷婷| 2018av在线| 午夜精品免费在线| 国产成人a亚洲精v品无码| 手机在线观看av网站| 黑人巨大精品欧美一区二区| 精品久久久久久久久久中文字幕| 蜜桃视频m3u8在线观看| 欧美性猛交xxxx免费看| 国产午夜福利视频在线观看| 欧美www.| 欧美偷拍一区二区| www.com污| 色悠久久久久综合先锋影音下载 | 超碰人人人人人人| 成人免费毛片app| 蜜桃在线一区二区三区精品| 岛国最新视频免费在线观看| 国产精品国产三级国产普通话蜜臀 | 成人a视频在线观看| 国产精品久久久久久久久久久久久久久久久久| 日韩精品亚洲专区| 成人免费自拍视频| 免费观看毛片网站| 国产亚洲综合色| 亚洲国产精品123| 日本在线观看大片免费视频| 天天影视色香欲综合网老头| 91av在线免费播放| 天堂综合在线播放| 亚洲国产古装精品网站| 欧美成人另类视频| 日韩欧美一区二区三区在线视频 | 亚洲一区二区四区| 污污影院在线观看| 色综合久久综合网欧美综合网 | 粉嫩欧美一区二区三区高清影视| 久久久久久九九| 蜜桃视频在线观看免费视频网站www | 国产精品自拍小视频| 国产视频在线观看视频| 99热在这里有精品免费| 亚洲图片小说在线| 激情黄产视频在线免费观看| 欧美视频三区在线播放| 精品人妻一区二区免费| 国产精品免费大片| 欧美老肥婆性猛交视频| 91丝袜一区二区三区| 国产一区二区导航在线播放| 日本中文不卡| 超碰在线网站| 欧美日韩夫妻久久| 国产精品伦子伦| 久久网中文字幕| 性久久久久久久久久久久久久| www.亚洲天堂网| 黄色免费网站在线观看| 欧美色婷婷久久99精品红桃| 国产亚洲欧美aaaa| 男人天堂中文字幕| 激情都市一区二区| 色一情一乱一伦一区二区三区 | 亚洲乱码在线观看| 国产精品美女久久久久久久| 91好吊色国产欧美日韩在线| 久久9999免费视频| 中文字幕欧美日韩在线| 51国产偷自视频区视频| 高清不卡在线观看| 亚洲自拍偷拍一区二区三区| 97精品国产99久久久久久免费| 亚洲成人网在线观看| 午夜免费激情视频| 久久超碰97中文字幕| 欧美自拍资源在线| 美女91在线看| 欧美精品一区二区三区蜜臀 | 调教+趴+乳夹+国产+精品| 九九久久久久久| 91亚洲一区| 国产精选久久久久久| 高清日韩av电影| 一本到不卡精品视频在线观看| 性欧美18—19sex性高清| 欧美freesex交免费视频| 国产日韩在线精品av| 成人午夜电影在线观看| 在线影视一区二区三区| 日本高清www| 欧美亚洲一区二区三区| 久久精品午夜一区二区福利| 天堂av在线| 国产偷亚洲偷欧美偷精品| 成人免费视频毛片| 91色婷婷久久久久合中文| 美女日批免费视频| 亚洲a级精品| 欧美在线www| 高清中文字幕一区二区三区| 欧美日韩日日夜夜| 国产精品精品软件男同| 国产一区二区伦理| 精品无码国产一区二区三区av| 成人h动漫免费观看网站| 久久久久久久久久久久久久久久久久av| 精品二区在线观看| 亚洲国产日产av| 国产精品无码在线| 奇米精品一区二区三区在线观看一| 天堂√在线观看一区二区| 日韩精品一页| 久久99精品久久久久久噜噜| 色窝窝无码一区二区三区成人网站| 五月天国产精品| xxx在线播放| 狠狠色丁香婷婷综合| 免费看污污视频| 国产亚洲精品美女久久| 91成人性视频| 日本在线免费| 精品少妇一区二区三区视频免付费| 亚洲国产精品午夜在线观看| 91老司机福利 在线| 欧美婷婷精品激情| 欧美高清一区| 美国av一区二区三区| 四虎国产精品免费久久| 欧美精品videossex性护士| 欧洲综合视频| 欧美一区二视频| 全部毛片永久免费看| 国产日韩精品一区二区浪潮av| 免费在线观看污网站| 亚洲久久视频| 一区二区高清视频| 日韩黄色网络| 91久久嫩草影院一区二区| www.综合| 久久精品久久精品亚洲人| 亚洲欧美一区二区三| 欧美猛男男办公室激情| 日韩中文字幕在线观看视频| 亚洲日本韩国一区| 18禁裸乳无遮挡啪啪无码免费| 精品一区二区三区蜜桃| 久色视频在线播放| 亚洲天堂一区二区三区四区| 裸模一区二区三区免费| 日本一区二区三区视频在线看| 91成人福利在线| 四虎影视国产在线视频| 中文字幕亚洲情99在线| 天天干视频在线观看| 欧美久久久久久久久| 精品国产一区二区三区四| 一区二区三区中文免费| 91ts人妖另类精品系列| 久久久不卡网国产精品二区| 国产精品果冻传媒| 国产一二精品视频| 亚洲免费一级视频| 老色鬼久久亚洲一区二区| 美女扒开大腿让男人桶| 婷婷成人基地| 神马影院午夜我不卡| 最新国产精品视频| 激情小说综合网| 国产欧美自拍一区| 97夜夜澡人人双人人人喊| 成人午夜888| 国产欧美 在线欧美| 电影一区电影二区| 国产精品18久久久久久麻辣| 涩涩视频在线播放| 91精品国产精品| 538在线视频| 久久免费精品视频| 牛牛精品视频在线| 欧美乱人伦中文字幕在线| 免费a级毛片在线播放| 日韩一区二区久久久| 中文日本在线观看| 日韩天堂在线视频| 国内精品久久久久久野外| 久青草国产97香蕉在线视频| 日本在线天堂| 超碰精品一区二区三区乱码| www红色一片_亚洲成a人片在线观看_| 日韩中文字幕视频在线| 免费黄色在线| 欧美黑人狂野猛交老妇| 日本在线视频www鲁啊鲁| 久久免费视频网站| 中文日产幕无线码一区二区| 热99精品里视频精品| 中文字幕av一区二区三区佐山爱| 国产成人小视频在线观看| 国产极品嫩模在线观看91精品| 国产精品亚洲网站| 国产人与zoxxxx另类91| 成人91视频| 色天天色综合| 日韩理论片在线观看| 99久久99久久精品国产片果冰| japanese在线视频| 亚洲小说欧美另类婷婷| 欧美v在线观看| 麻豆国产一区二区| 亚洲精品一区二区18漫画| eeuss国产一区二区三区| 国产肥白大熟妇bbbb视频| 国产精品乱子久久久久| 欧美成人三级在线观看| 天涯成人国产亚洲精品一区av| 国内自拍视频在线播放| 欧美在线|欧美| 国产麻豆免费观看| 精品999久久久| 日韩a在线看| 日韩视频免费看| 影音先锋在线视频| 欧美一级电影久久| av成人亚洲| 亚洲综合在线小说| 无码日韩精品一区二区免费| 日韩一区免费观看| 亚洲美女视频| 久章草在线视频| 久久国产精品免费| 中文字幕人妻熟女人妻a片| 不卡的av电影在线观看| a级大片在线观看| 国产精品不卡在线| 久久精品国产亚洲av高清色欲| 岛国视频午夜一区免费在线观看| 四虎成人在线观看| 欧美精品乱码久久久久久 | 99re国产精品| 激情五月俺来也| 成人在线视频首页| 国产美女精品久久| 亚洲一区二区三区四区在线观看 | 9l亚洲国产成人精品一区二三| 欧美少妇一区| 欧美国产先锋| 国内外成人激情视频| 国产成人午夜99999| 国产精品国三级国产av| 亚洲综合视频网站| 在线xxxx| 日韩久久精品一区| 北岛玲日韩精品一区二区三区| 久久这里只有精品99| 98色花堂精品视频在线观看| 国产精品久久久久久久9999| 999在线精品| 五月天在线免费视频| 久久久国产亚洲精品| 男人操女人下面视频| 欧美韩国日本不卡| 亚洲国产成人精品激情在线| 日韩欧美国产电影| 国产在线视频网站| 欧美精品18videos性欧| 日韩欧美高清一区二区三区| 日韩精品国内| 老妇喷水一区二区三区| 国产xxxx视频| 亚洲视频一区在线观看| 中文字幕视频二区| 亚洲老头同性xxxxx| av网站网址在线观看| 国产精品免费看久久久香蕉| 美女扒开腿让男人桶爽久久动漫| 91看片淫黄大片91| 久久aⅴ国产欧美74aaa| 精品国产av无码| 亚洲综合色在线| 国产夫绿帽单男3p精品视频| 色先锋资源久久综合5566| 99精品国自产在线| 欧美日韩一区二区三区在线视频| 亚洲三级国产| 特级特黄刘亦菲aaa级| 亚洲午夜成aⅴ人片| 成人1区2区3区| 欧美成人性生活| 亚洲国产91视频| 色呦呦网站入口| 久久99精品久久久久婷婷| 国产三级精品三级观看| 欧美视频一区二区三区四区| 黄色在线播放| 国产精品视频午夜| 精品国产精品久久一区免费式| 久草福利视频在线| 久久久久国产一区二区三区四区| 日韩精品一区二区不卡| 亚洲美女激情视频| 亚洲私拍视频| 日韩久久在线| 麻豆久久久久久| 久久中文免费视频| 日韩一区二区麻豆国产| 日本高清成人vr专区| 国产一区二区三区四区五区加勒比| 亚洲国产1区| 好吊视频在线观看| 欧美性生活影院| 91伦理视频在线观看| 亚洲伊人一本大道中文字幕| 亚洲精品小说| 丰满大乳奶做爰ⅹxx视频| 欧美日韩另类字幕中文| 午夜激情在线观看| 亚洲free性xxxx护士白浆| 欧美午夜免费影院| 能免费看av的网站| 精品视频在线免费观看| 天堂av在线电影| 久久久久久艹| 日韩国产精品久久久久久亚洲| 三上悠亚作品在线观看| 日韩一区二区在线观看视频播放| 天堂√中文最新版在线| 婷婷四房综合激情五月| 国产成a人无v码亚洲福利| 伊人久久综合视频| 国产视频在线一区二区| 小说区图片区亚洲| 欧美性猛交内射兽交老熟妇| 国产日韩欧美不卡在线| 国产情侣一区二区| 国产大片精品免费永久看nba| 五月开心六月丁香综合色啪 |